openapi: 3.1.0
info:
  title: Proton API
  version: "1.0"
  description: |
    Auto-generated from Proton's own TypeScript source files.
    Sources: https://github.com/ProtonMail/WebClients/tree/main/packages/shared/lib/api
             https://github.com/ProtonMail/WebClients/blob/main/packages/pass/types/api/pass.ts
             https://github.com/ProtonDriveApps/sdk/blob/main/client/js/src/internal/apiService/driveTypes.ts

servers:
  - url: https://mail.proton.me/api
    description: Proton production API

security:
  - protonAuth: []

components:
  securitySchemes:
    protonAuth:
      type: http
      scheme: bearer
      description: |
        Requires headers: Authorization (Bearer token), x-pm-uid (session UID), x-pm-appversion.
  schemas:
    ApiResponse:
      type: object
      description: Standard Proton API JSON response envelope.
      properties:
        Code:
          type: integer
          description: Proton response code (1000/1001 indicate success).

  # Enum reference:
  # ACCESS_LEVEL: 0=LIMITED, 1=FULL
  # AccessType: 0=Self, 1=AdminAccess, 2=EmergencyAccess, 3=Msp
  # ACCOUNT_DELETION_REASONS: DIFFERENT_ACCOUNT=DIFFERENT_ACCOUNT, TOO_EXPENSIVE=TOO_EXPENSIVE, MISSING_FEATURE=MISSING_FEATURE, USE_OTHER_SERVICE=USE_OTHER_SERVICE, MERGE_ACCOUNT=MERGE_ACCOUNT, OTHER=OTHER
  # ACTION_VIEWS: VIEW=VIEW
  # ActionEventV6: 0=Delete, 1=Create, 2=Update
  # ADD_EVENT_ERROR_TYPE: 0=TOO_MANY_PARTICIPANTS
  # ADDON_NAMES: 1member-drivepro2022=MEMBER_DRIVE_PRO, 1lumo-drivepro2022=LUMO_DRIVE_PRO, 1meet-drivepro2022=MEET_DRIVE_PRO, 1member-drivebiz2024=MEMBER_DRIVE_BUSINESS, 1lumo-drivebiz2024=LUMO_DRIVE_BUSINESS, 1meet-drivebiz2024=MEET_DRIVE_BUSINESS, 1member-mailpro2022=MEMBER_MAIL_PRO, 1scribe-mailpro2022=MEMBER_SCRIBE_MAIL_PRO, 1lumo-mailpro2022=LUMO_MAIL_PRO, 1meet-mailpro2022=MEET_MAIL_PRO, 1member-mailbiz2024=MEMBER_MAIL_BUSINESS, 1scribe-mailbiz2024=MEMBER_SCRIBE_MAIL_BUSINESS, 1lumo-mailbiz2024=LUMO_MAIL_BUSINESS, 1meet-mailbiz2024=MEET_MAIL_BUSINESS, 1member-bundlepro2022=MEMBER_BUNDLE_PRO, 1domain-bundlepro2022=DOMAIN_BUNDLE_PRO, 1ip-bundlepro2022=IP_BUNDLE_PRO, 1scribe-bundlepro2022=MEMBER_SCRIBE_BUNDLE_PRO, 1lumo-bundlepro2022=LUMO_BUNDLE_PRO, 1meet-bundlepro2022=MEET_BUNDLE_PRO, 1member-bundlepro2024=MEMBER_BUNDLE_PRO_2024, 1domain-bundlepro2024=DOMAIN_BUNDLE_PRO_2024, 1ip-bundlepro2024=IP_BUNDLE_PRO_2024, 1scribe-bundlepro2024=MEMBER_SCRIBE_BUNDLE_PRO_2024, 1lumo-bundlepro2024=LUMO_BUNDLE_PRO_2024, 1member-bundlebiz2025=MEMBER_BUNDLE_BIZ_2025, 1domain-bundlebiz2025=DOMAIN_BUNDLE_BIZ_2025, 1ip-bundlebiz2025=IP_BUNDLE_BIZ_2025, 1member-vpnpro2023=MEMBER_VPN_PRO, 1lumo-vpnpro2023=LUMO_VPN_PRO, 1meet-vpnpro2023=MEET_VPN_PRO, 1member-vpnbiz2023=MEMBER_VPN_BUSINESS, 1ip-vpnbiz2023=IP_VPN_BUSINESS, 1lumo-vpnbiz2023=LUMO_VPN_BUSINESS, 1meet-vpnbiz2023=MEET_VPN_BUSINESS, 1domain-vpnbiz2023=DOMAIN_VPN_BUSINESS, 1member-passpro2024=MEMBER_PASS_PRO, 1lumo-passpro2024=LUMO_PASS_PRO, 1meet-passpro2024=MEET_PASS_PRO, 1member-passbiz2024=MEMBER_PASS_BUSINESS, 1lumo-passbiz2024=LUMO_PASS_BUSINESS, 1meet-passbiz2024=MEET_PASS_BUSINESS, 1member-lumobiz2025=MEMBER_LUMO_BUSINESS, 1meet-lumobiz2025=MEET_LUMO_BUSINESS, 1member-meetbiz2025=MEMBER_MEET_BUSINESS, 1lumo-meetbiz2025=LUMO_MEET_BUSINESS, 1member-meet2026=MEMBER_MEET, 1lumo-meet2026=LUMO_MEET, 1member-vpnpassbiz2025=MEMBER_VPN_PASS_BUNDLE_BUSINESS, 1lumo-vpnpassbiz2025=LUMO_VPN_PASS_BUNDLE_BUSINESS, 1ip-vpnpassbiz2025=IP_VPN_PASS_BUNDLE_BUSINESS, 1meet-vpnpassbiz2025=MEET_VPN_PASS_BUNDLE_BUSINESS, 1lumo-mail2022=LUMO_MAIL, 1lumo-drive2022=LUMO_DRIVE, 1lumo-drive1tb2025=LUMO_DRIVE_1TB, 1lumo-pass2023=LUMO_PASS, 1lumo-passfamily2024=LUMO_PASS_FAMILY, 1lumo-vpn2024=LUMO_VPN2024, 1lumo-bundle2022=LUMO_BUNDLE, 1lumo-family2022=LUMO_FAMILY, 1lumo-duo2024=LUMO_DUO, 1meet-lumo2024=MEET_LUMO, 1meet-mail2022=MEET_MAIL, 1meet-drive2022=MEET_DRIVE, 1meet-drive1tb2025=MEET_DRIVE_1TB, 1meet-pass2023=MEET_PASS, 1meet-passfamily2024=MEET_PASS_FAMILY, 1meet-vpn2024=MEET_VPN2024, 1meet-bundle2022=MEET_BUNDLE, 1meet-family2022=MEET_FAMILY, 1meet-duo2024=MEET_DUO, 1meet-vpnpass2023=MEET_VPN_PASS_BUNDLE
  # ADDON_PREFIXES: 1member=MEMBER, 1domain=DOMAIN, 1ip=IP, 1scribe=SCRIBE, 1lumo=LUMO, 1meet=MEET
  # ADDRESS_FLAGS: 16=FLAG_DISABLE_E2EE, 32=FLAG_DISABLE_EXPECTED_SIGNED, 64=BYOE
  # ADDRESS_PERMISSION_TYPE: receive=RECEIVE, send=SEND
  # ADDRESS_PERMISSIONS: 0=NO_PERMISSION, 1=PERMISSIONS_RECEIVE_ALL, 2=PERMISSIONS_SEND_ALL, 4=PERMISSIONS_AUTORESPONDER, 8=PERMISSIONS_RECEIVE_ORG, 16=PERMISSIONS_SEND_ORG
  # ADDRESS_RECEIVE: 1=RECEIVE_YES, 0=RECEIVE_NO
  # ADDRESS_SEND: 1=SEND_YES, 0=SEND_NO
  # ADDRESS_STATUS: 0=STATUS_DISABLED, 1=STATUS_ENABLED, 2=STATUS_DELETING
  # ADDRESS_TYPE: 1=TYPE_ORIGINAL, 2=TYPE_ALIAS, 3=TYPE_CUSTOM_DOMAIN, 4=TYPE_PREMIUM, 5=TYPE_EXTERNAL, 6=TYPE_GROUP
  # AddressActiveStatus: 0=INACTIVE, 1=ACTIVE
  # AddressConfirmationState: 0=CONFIRMATION_NOT_CONFIRMED, 1=CONFIRMATION_CONFIRMED, 2=CONFIRMATION_INVALID
  # AI_ASSISTANT_ACCESS: 0=UNSET, 1=OFF, 2=SERVER_ONLY, 3=CLIENT_ONLY
  # ALMOST_ALL_MAIL: 0=DISABLED, 1=ENABLED
  # API_CODES: 1001=GLOBAL_SUCCESS, 1000=SINGLE_SUCCESS, 2011=NOT_ALLOWED_ERROR, 2000=INVALID_REQUIREMENT_ERROR, 2500=ALREADY_EXISTS_ERROR, 2501=NOT_FOUND_ERROR, 2061=INVALID_ID_ERROR
  # API_KEY_SOURCE: 0=PROTON, 1=WKD, 2=KOO
  # ApiImporterError: 1=ERROR_CODE_IMAP_CONNECTION, 2=ERROR_CODE_QUOTA_LIMIT
  # ApiImporterOrganizationState: 0=INITIALIZED, 1=ACTIVE, 2=COMPLETED, 3=FINALIZED
  # ApiImporterState: 0=QUEUED, 1=RUNNING, 2=DONE, 3=FAILED, 4=PAUSED, 5=CANCELED, 6=DELAYED
  # ApiImportProvider: 0=IMAP, 1=GOOGLE, 2=OUTLOOK
  # ApiOrganizationInviteTokenState: 0=Disabled, 1=Enabled
  # ApiReportRollbackState: 0=CANNOT_ROLLBACK, 1=CAN_ROLLBACK, 2=ROLLING_BACK, 3=ROLLED_BACK
  # ApiReportState: 0=UNSENT, 1=SENT
  # ApiSyncState: 0=OFFLINE, 1=ACTIVE, 2=EXPIRED
  # APP_UPSELL_REF_PATH: upsell_mail-=MAIL_UPSELL_REF_PATH, upsell_calendar-=CALENDAR_UPSELL_REF_PATH, upsell_drive-=DRIVE_UPSELL_REF_PATH, upsell_pass-=PASS_UPSELL_REF_PATH, upsell_vpn-=VPN_UPSELL_REF_PATH, upsell_inbox_desktop-=INBOX_DESKTOP_REF_PATH, upsell_docs-=DOCS_UPSELL_REF_PATH, upsell_account-=ACCOUNT_UPSELL_REF_PATH, upsell_wallet-=WALLET_UPSELL_REF_PATH, upsell_lumo-=LUMO_UPSELL_REF_PATH
  # ASSISTANT_INSERT_TYPE: INSERT=INSERT, REPLACE=REPLACE
  # ASSISTANT_TYPE: SERVER=SERVER, LOCAL=LOCAL
  # ATTACH_PUBLIC_KEY: 0=DISABLED, 1=ENABLED
  # ATTACHMENT_DISPOSITION: attachment=ATTACHMENT, inline=INLINE
  # ATTENDEE_COMMENT_ENCRYPTION_TYPE: 0=CLEARTEXT, 1=ENCRYPTED_AND_SIGNED
  # ATTENDEE_MORE_ATTENDEES: 0=NO, 1=YES
  # ATTENDEE_PERMISSIONS: 1=SEE, 2=INVITE, 3=SEE_AND_INVITE, 4=EDIT, 8=DELETE
  # ATTENDEE_STATUS_API: 0=NEEDS_ACTION, 1=TENTATIVE, 2=DECLINED, 3=ACCEPTED
  # AttestationFormat: none=None, android-key=AndroidKey, android-safetynet=AndroidSafetyNet, apple=Apple, fido-u2f=FidoU2F, packed=Packed, tpm=TPM
  # Audience: b2c=B2C, b2b=B2B, family=FAMILY
  # AUTH_LOG_EVENTS: 0=LOGIN_FAILURE_PASSWORD, 1=LOGIN_SUCCESS, 2=LOGOUT, 3=LOGIN_FAILURE_2FA, 4=LOGIN_SUCCESS_AWAIT_2FA, 5=LOGIN_SUCCESS_FORBIDDEN, 6=LOGIN_SUCCESS_MNEMONIC, 7=LOGIN_FAILURE_MNEMONIC, 8=LOGIN_SUCCESS_ADMIN, 9=LOGIN_BLOCKED, 80=LOGIN_SUCCESS_AWAIT_VERIFY, 81=LOGIN_ATTEMPT, 10=REAUTH_FAILURE_PASSWORD, 11=REAUTH_FAILURE_2FA, 12=REAUTH_SUCCESS, 20=CHANGE_ACCOUNT_PASSWORD, 21=CHANGE_MAILBOX_PASSWORD, 22=RESET_ACCOUNT, 23=CHANGE_MNEMONIC, 24=RESET_ACCOUNT_MNEMONIC, 25=CHANGE_EMAIL, 26=CHANGE_PHONE, 27=ENABLE_HIGH_SECURITY, 28=DISABLE_HIGH_SECURITY, 30=ENABLE_MAILBOX_PASSWORD, 31=DISABLE_MAILBOX_PASSWORD, 32=ENABLE_TOTP, 33=DISABLE_TOTP, 34=ADD_U2F, 35=REMOVE_U2F, 36=DISABLE_MNEMONIC, 37=RESET_BACKUP_SECRET, 40=USER_KEY_CREATION, 41=USER_KEY_DELETION, 42=USER_KEY_REACTIVATION, 50=ADDRESS_KEY_CREATION, 51=ADDRESS_KEY_DELETION, 52=ADDRESS_KEY_REACTIVATION, 60=ENABLE_EMAIL_RECOVERY, 61=ENABLE_PHONE_RECOVERY, 62=DISABLE_EMAIL_RECOVERY, 63=DISABLE_PHONE_RECOVERY, 70=REVOKE_ALL_SESSIONS, 71=REVOKE_SINGLE_SESSION
  # AuthDeviceErrorCodes: 10300=AUTH_DEVICE_NOT_FOUND, 10301=AUTH_DEVICE_NOT_ACTIVE, 10302=AUTH_DEVICE_TOKEN_INVALID, 10303=AUTH_DEVICE_REJECTED
  # AuthDeviceState: 0=Inactive, 1=Active, 2=PendingActivation, 3=PendingAdminActivation, 4=Rejected, 5=NoSession
  # AuthenticationMethod: PLAIN=PLAIN, XOAUTH2=OAUTH
  # AuthLogStatus: attempt=Attempt, failure=Failure
  # AUTO_DELETE_SPAM_AND_TRASH_DAYS: 30=ACTIVE, 0=DISABLED
  # AUTO_SAVE_CONTACTS: 0=DISABLED, 1=ENABLED
  # AutoAddVideoConferenceLinkProvider: 0=None, 1=Zoom, 2=Meet
  # Autopay: 0=DISABLE, 1=ENABLE
  # AutoReplyDuration: 0=FIXED, 1=DAILY, 2=WEEKLY, 3=MONTHLY, 4=PERMANENT
  # BLOCK_SENDER_CONFIRMATION: 1=DO_NOT_ASK
  # BUSY_TIME_SLOT_TYPE: 0=PARTIAL_DAY_IN, 1=PARTIAL_DAY_BEFORE, 2=FULL_DAY_IN, 3=FULL_DAY_BEFORE
  # BYOE_ADDRESS_ERROR: 2011=ADDRESS_ALREADY_EXISTS
  # BYOE_CLAIM_PROTON_ADDRESS_SOURCE: MAIL_ONBOARDING=MAIL_ONBOARDING, MAIL_COMPOSER=MAIL_COMPOSER, MAIL_TOOLBAR=MAIL_TOOLBAR, CALENDAR_WIDGET=CALENDAR_WIDGET, CALENDAR_DRAWER=CALENDAR_DRAWER, OPEN_CALENDAR_APP=OPEN_CALENDAR_APP, IMPORT=IMPORT, EASY_SWITCH=EASY_SWITCH, ADD_ADDRESS=ADD_ADDRESS, ADD_ADDRESS_FREE=ADD_ADDRESS_FREE, SHARED_PLAN_PENDING_INVITATION=SHARED_PLAN_PENDING_INVITATION
  # CALENDAR_CARD_TYPE: 0=CLEAR_TEXT, 1=ENCRYPTED, 2=SIGNED, 3=ENCRYPTED_AND_SIGNED
  # CALENDAR_DISPLAY: 0=HIDDEN, 1=VISIBLE
  # CALENDAR_FLAGS: 0=INACTIVE, 1=ACTIVE, 2=UPDATE_PASSPHRASE, 4=RESET_NEEDED, 8=INCOMPLETE_SETUP, 16=LOST_ACCESS, 32=SELF_DISABLED, 64=SUPER_OWNER_DISABLED
  # CALENDAR_ORDER_BY: 0=ASCENDING
  # CALENDAR_PERMISSIONS: 1=SUPER_OWNER, 2=OWNER, 4=ADMIN, 8=READ_MEMBER_LIST, 16=WRITE, 32=READ, 64=AVAILABILITY
  # CALENDAR_RETURN_FLAGS: 0=NO, 1=YES
  # CALENDAR_SHARE_BUSY_TIME_SLOTS: 0=NO, 1=YES
  # CALENDAR_STATUS: 1=ACTIVE, 2=DELETED
  # CALENDAR_STATUS_TYPE: 0=DEFAULT, 1=ACTIVE, 2=DISABLED, 4=NOT_SYNCED
  # CALENDAR_SUBSCRIPTION_STATUS: 0=OK, 2=INVALID_ICS, 6=ICS_SIZE_EXCEED_LIMIT, 7=SYNCHRONIZING, 8=CALENDAR_MISSING_PRIMARY_KEY, 20=HTTP_REQUEST_FAILED_GENERIC, 21=HTTP_REQUEST_FAILED_BAD_REQUEST, 22=HTTP_REQUEST_FAILED_UNAUTHORIZED, 23=HTTP_REQUEST_FAILED_FORBIDDEN, 24=HTTP_REQUEST_FAILED_NOT_FOUND, 25=HTTP_REQUEST_FAILED_INTERNAL_SERVER_ERROR, 26=HTTP_REQUEST_FAILED_TIMEOUT, 27=INTERNAL_CALENDAR_URL_NOT_FOUND, 28=INTERNAL_CALENDAR_UNDECRYPTABLE, 30=INVALID_URL
  # CALENDAR_TYPE: 0=PERSONAL, 1=SUBSCRIPTION, 2=HOLIDAYS
  # CALENDAR_UPSELL_PATHS: multi-cal=MULTI_CAL, share-cal=SHARE_CAL, max-cal=MAX_CAL, color-per-event=COLOR_PER_EVENT, booking-page=BOOKING_PAGE
  # CALENDAR_VALIDATION_MODE: 0=DOWNLOAD_ONLY, 1=DOWNLOAD_AND_PARSE
  # CALENDAR_WEIGHT: 0=PERSONAL, 1=SUBSCRIBED, 2=HOLIDAYS, 3=SHARED, 4=UNKNOWN
  # CalendarEventsQueryType: 0=PartDayInsideWindow, 1=PartDayBeforeWindow, 2=FullDayInsideWindow, 3=FullDayBeforeWindow
  # CalendarKeyFlags: 0=INACTIVE, 1=ACTIVE, 2=PRIMARY
  # CANONICALIZE_SCHEME: 0=DEFAULT, 1=PLUS, 2=GMAIL, 3=PROTON
  # CATEGORIES: 0=IGNORE, 1=INCLUDE
  # CHECKLIST_DISPLAY_TYPE: Full=FULL, Reduced=REDUCED, Hidden=HIDDEN
  # ChecklistKey: SendMessage=SendMessage, RecoveryMethod=RecoveryMethod, DriveUpload=DriveUpload, DriveShare=DriveShare, Import=Import, ProtectInbox=ProtectInbox, AccountLogin=AccountLogin, MobileApp=MobileApp, ClaimAddress=ClaimAddress
  # ChecklistType: 1=MailFreeUser, 2=MailPaidUser, 3=DriveUser, 4=MailBYOEUser
  # ClaimableAddressType: 0=Fixed, 1=Any
  # CLIENT_TYPES: 1=MAIL, 2=VPN, 4=DRIVE, 5=PASS, 6=WALLET, 7=SPACES, 9=LUMO, 10=AUTHENTICATOR, 11=MEET
  # COLLAPSE_EVENTS: COLLAPSE=COLLAPSE, EXPAND=EXPAND
  # ColorScheme: 0=Dark, 1=Light
  # COMPOSER_MODE: 0=POPUP, 1=MAXIMIZED
  # CONFIRM_LINK: 0=DISABLED, 1=CONFIRM
  # ConfirmationCodeVersion: 1=V1, 2=V2
  # CONTACT_CARD_TYPE: 3=ENCRYPTED_AND_SIGNED, 2=SIGNED, 1=ENCRYPTED, 0=CLEAR_TEXT
  # CookieSameSiteAttribute: lax=Lax, strict=Strict, none=None
  # COUPON_CODES: PORKBUN=PORKBUN, BF25PROMO=BLACK_FRIDAY_2025, BF25PROMO1M=BLACK_FRIDAY_2025_MONTH, BF25BUNDLEPROMO=BLACK_FRIDAY_2025_BUNDLE, BF25LIGHTNING=BLACK_FRIDAY_2025_LIGHTNING, BF25LUMOADDON=BLACK_FRIDAY_2025_LUMOADDON, BF25LUMOADDONPROMO=BLACK_FRIDAY_2025_LUMOADDON_OMNI, BF25DEALPD=BLACK_FRIDAY_2025_DEALPD, BF25DEALVM=BLACK_FRIDAY_2025_DEALVM, BF25PROMO24=BLACK_FRIDAY_2025_TWOYEAR, BF25PROMOCS=BLACK_FRIDAY_2025_CS, BF25PROMO24CS=BLACK_FRIDAY_2025_TWOYEAR_CS, BF25PROMO1MCS=BLACK_FRIDAY_2025_MONTH_CS, BF25BUNDLEPROMOCS=BLACK_FRIDAY_2025_BUNDLE_CS, BF25LUMOADDONCS=BLACK_FRIDAY_2025_LUMOADDON_CS, BF25LIGHTNINGCS=BLACK_FRIDAY_2025_LIGHTNING_CS, BF25LUMOADDONPROMOCS=BLACK_FRIDAY_2025_LUMOADDON_PROMO_CS, ANNUALOFFER25=ANNUALOFFER25, RENEWANDSAVE1M26=RENEWANDSAVE1M26, RENEWANDSAVE12M26=RENEWANDSAVE12M26, LIFETIME=LIFETIME, VIVALDIVPN=VPN_VIVALDI, MAILPLUSINTRO=MAILPLUSINTRO, DRIVEPLUSINTRO2024=TRYDRIVEPLUS2024, PASSPLUSINTRO2024=PASSPLUSINTRO2024, VPNINTROPRICE2025=VPN_INTRO_2025, VPNPLUSFREE2024=VPN_PLUS_FREE_2024, TRYVPNPLUS2024=TRYVPNPLUS2024, VPNMATCHDAYDEALS=VPNMATCHDAYDEALS, TECHRADARVPNPASS=TECHRADARVPNPASS, CNETVPNPASS=CNETVPNPASS, COMPARITECHVPNPASS=COMPARITECHVPNPASS, PCMAGVPNPASS=PCMAGVPNPASS, VPNPASSINTRO2026=VPNPASSINTRO2026, TRYMAILPLUS0724=TRYMAILPLUS0724, TRYMAILPLUSMOBILE2026=TRYMAILPLUSMOBILE2026, TRYMAILPLUS0926=TRYMAILPLUS0926, PASSEARLYSUPPORTER=PASSEARLYSUPPORTER, PASSFAMILYLAUNCH=PASSFAMILYLAUNCH, MAR26SALECS=MAR26SALECS, MAR26BUNDLESALECS=MAR26BUNDLESALECS, MAR26OFFERCS=MAR26OFFERCS, JUNE26SALE=JUNE26SALE, JUNE26BUNDLESALE=JUNE26BUNDLESALE, SEP26BUNDLESALE=SEP26BUNDLESALE, SEP26BUNDLEDEAL=SEP26BUNDLEDEAL, SEP26BUNDLESALECS=SEP26BUNDLESALECS, SEP26BUNDLEDEALCS=SEP26BUNDLEDEALCS, VPNSAVEOFFER=VPNSAVEOFFER
  # CREATE_DRAFT_MESSAGE_ACTION: 0=REPLY, 1=REPLY_ALL, 2=FORWARD
  # CreateMemberMode: 0=Password, 1=Invitation, 2=LoginLink
  # CRYPTO_PROCESSING_TYPES: 0=SUCCESS, 1=SIGNATURE_NOT_VERIFIED, 2=FAIL_TO_READ, 3=FAIL_TO_LOAD, 4=FAIL_TO_DECRYPT
  # CurrencySymbols: US$=USD, AU$=AUD, CA$=CAD, €=EUR, £=GBP, CHF=CHF, BRL=BRL, ¥=JPY, ₩=KRW, zł=PLN, SGD=SGD, HK$=HKD
  # CUSTOM_FETCH_ERROR_STATUS_CODE: 0=NO_NETWORK_CONNECTION, -1=TIMEOUT
  # CUSTOM_VIEWS_LABELS: views/newsletters=NEWSLETTER_SUBSCRIPTIONS
  # CustomFieldsBitmap: 1=Mapping, 2=Label, 4=Period
  # CustomPasswordState: 0=NO_PASSWORD
  # CYCLE: 1=MONTHLY, 3=THREE, 6=SIX, 12=YEARLY, 15=FIFTEEN, 18=EIGHTEEN, 24=TWO_YEARS, 30=THIRTY
  # DAILY_TYPE: 0=ALL_DAYS
  # DARK_WEB_MONITORING_ELIGIBILITY_STATE: 1=PAID
  # DARK_WEB_MONITORING_EMAILS_STATE: 1=ENABLED
  # DARK_WEB_MONITORING_STATE: 1=ENABLED
  # DASHBOARD_UPSELL_PATHS: mailplus-dashboard=MAILPLUS, mailpro-dashboard=MAILEPRO, unlimited-dashboard=UNLIMITED, drive-dashboard=DRIVE, pass-dashboard=PASS, vpn-dashboard=VPN, docs-dashboard=DOCS, wallet-dashboard=WALLET, family-dashboard=FAMILY, duo-dashboard=DUO, business-dashboard=BUSINESS, lumo-dashboard=LUMO, meet-dashboard=MEET
  # DELAY_IN_SECONDS: 0=NONE, 5=SMALL, 10=MEDIUM, 20=LARGE
  # DelegatedAccessStateEnum: 0=Disabled, 1=Enabled, 2=Accessible, 3=Recoverable
  # DelegatedAccessTypeEnum: 1=EmergencyAccess, 2=SocialRecovery
  # DELETE_CONFIRMATION_TYPES: 1=SINGLE, 2=RECURRING
  # DELETION_REASON: 0=NORMAL, 1=CHANGE_CALENDAR
  # DENSITY: 0=COMFORTABLE, 1=COMPACT
  # DESKTOP_APP_NAMES: drive=DRIVE
  # DESKTOP_PLATFORMS: linux=LINUX, macos=MACOS, windows=WINDOWS, windows/x64=WINDOWS_X64, windows/arm64=WINDOWS_ARM
  # DIRECTION: 0=LEFT_TO_RIGHT, 1=RIGHT_TO_LEFT
  # DKIM_STATE: 0=DKIM_STATE_DEFAULT, 3=DKIM_STATE_ERROR, 4=DKIM_STATE_GOOD, 5=DKIM_STATE_DELEGATED, 6=DKIM_STATE_WARNING
  # DMARC_STATE: 0=DMARC_STATE_DEFAULT, 1=DMARC_STATE_ONE, 2=DMARC_STATE_MULT, 3=DMARC_STATE_GOOD, 4=DMARC_STATE_RELAXED
  # DocsApiErrorCode: 250000=CommitIdOutOfSync, 250004=NeedsReadonlyMode, 2011=InsufficientPermissions, 2061=InvalidID, 0=Unknown
  # DOMAIN_STATE: 0=DOMAIN_STATE_DEFAULT, 1=DOMAIN_STATE_VERIFIED, 2=DOMAIN_STATE_WARN
  # DRAWER_EVENTS: close=CLOSE, show=SHOW, switch=SWITCH, ready=READY, session=SESSION, api-request=API_REQUEST, api-response=API_RESPONSE, api-request-abort=ABORT_REQUEST, child-url-update=CHILD_URL_UPDATE, outside-call-event-manager=CALL_EVENT_MANAGER_FROM_OUTSIDE, outside-update-theme=UPDATE_THEME, outside-calendar-open-event=CALENDAR_OPEN_EVENT, outside-call-calendar-event-manager=CALL_CALENDAR_EVENT_MANAGER, outside-set-widget-event=SET_WIDGET_EVENT, outside-unset-widget-event=UNSET_WIDGET_EVENT, outside-request-open-events=REQUEST_OPEN_EVENTS, outside-refresh-widget=REFRESH_WIDGET, open-contact-modal=OPEN_CONTACT_MODAL, open-bug-modal=OPEN_BUG_MODAL
  # DRAWER_NATIVE_APPS: quick-settings=QUICK_SETTINGS, contacts=CONTACTS, security-center=SECURITY_CENTER, vpn=VPN, referral=REFERRAL, lumo=LUMO
  # DRAWER_VISIBILITY: 0=SHOW, 1=HIDE
  # DRIVE_PERMISSIONS: 4=READ, 2=WRITE, 16=ADMIN
  # DRIVE_SIGNATURE_CONTEXT: drive.share-member.inviter=SHARE_MEMBER_INVITER, drive.share-member.member=SHARE_MEMBER_MEMBER, drive.share-member.external-invitation=SHARE_MEMBER_EXTERNAL_INVITATION, drive.search.index=SEARCH_INDEX
  # DRIVE_UPSELL_PATHS: sidebar=SIDEBAR, one-dollar-initial-reminder=ONE_DOLLAR_INITIAL_REMINDER, one-dollar-second-reminder=ONE_DOLLAR_SECOND_REMINDER, one-dollar-last-reminder=ONE_DOLLAR_LAST_REMINDER, plus_monthly-subscriber-nudge-variant-money=PLUS_MONTHLY_SUBSCRIBER_NUDGE_VARIANT_MONEY
  # DriveEventsPaginationFlag: 0=completed, 1=hasMore
  # EASY_SWITCH_FEATURES: import_mail=IMPORT_MAIL, import_calendar=IMPORT_CALENDAR, import_contacts=IMPORT_CONTACTS, import_drive=IMPORT_DRIVE, manage_meetings=MANAGE_MEETINGS, byoe=BYOE, oles=OLES
  # EASY_SWITCH_SEARCH_SOURCES: contact-import=CONTACT_IMPORT
  # EASY_SWITCH_SOURCES: account-web-settings=ACCOUNT_WEB_SETTINGS, account-web-settings-byoe=ACCOUNT_WEB_SETTINGS_BYOE, calendar-web-settings=CALENDAR_WEB_SETTINGS, contacts-web-settings=CONTACTS_WEB_SETTINGS, account-web-reconnect-import=ACCOUNT_WEB_RECONNECT_IMPORT, account-web-addresses-byoe=ACCOUNT_WEB_ADDRESSES_BYOE, account-web-reconnect-sync=ACCOUNT_WEB_RECONNECT_SYNC, account-web-grant-permission-byoe=ACCOUNT_WEB_GRANT_PERMISSION_BYOE, account-web-reconnect-byoe=ACCOUNT_WEB_RECONNECT_BYOE, account-web-signup=ACCOUNT_WEB_SIGNUP, contacts-web-import-button=CONTACT_WEB_IMPORT_BUTTON, mail-web-checklist=MAIL_WEB_CHECKLIST, mail-web-checklist-byoe=MAIL_WEB_CHECKLIST_BYOE, calendar-web-create-event=CALENDAR_WEB_CREATE_EVENT, drive-web-sidebar=DRIVE_WEB_SIDEBAR, drive-web-empty-state=DRIVE_WEB_EMPTY_STATE, unknown=UNKNOWN
  # EDM_VALUE: 0=ENABLED, 1=DISABLED
  # EdugainAffiliations: student=STUDENT, faculty=FACULTY, staff=STAFF, alum=ALUM, affiliate=AFFILIATE, employee=EMPLOYEE, library-walk-in=LIBRARY_WALK_IN
  # ENCRYPTION_PREFERENCES_ERROR_TYPES: 0=EMAIL_ADDRESS_ERROR, 1=INTERNAL_USER_DISABLED, 2=INTERNAL_USER_NO_API_KEY, 3=PRIMARY_CANNOT_SEND, 4=PRIMARY_NOT_PINNED, 5=EXTERNAL_USER_NO_VALID_EXTERNALLY_FETCHED_KEY, 6=EXTERNAL_USER_NO_VALID_PINNED_KEY, 7=CONTACT_SIGNATURE_NOT_VERIFIED
  # END_TYPE: NEVER=NEVER, COUNT=AFTER_N_TIMES, UNTIL=UNTIL
  # EnumLockedState: 0=UNLOCKED, 1=LOCKED
  # ERROR_TYPE: GENERATION_HARMFUL=GENERATION_HARMFUL, GENERATION_FAIL=GENERATION_FAIL, LOADGPU_FAIL=LOADGPU_FAIL, DOWNLOAD_FAIL=DOWNLOAD_FAIL, DOWNLOAD_REQUEST_FAIL=DOWNLOAD_REQUEST_FAIL, UNLOAD_FAIL=UNLOAD_FAIL, GENERATION_CANCEL_FAIL=GENERATION_CANCEL_FAIL, TOO_MANY_REQUESTS=TOO_MANY_REQUESTS, CACHING_FAILED=CACHING_FAILED, GENERATION_TOO_LONG=GENERATION_TOO_LONG
  # EVENT_ACTIONS: 0=DELETE, 1=CREATE, 2=UPDATE, 2=UPDATE_DRAFT, 3=UPDATE_FLAGS
  # EVENT_INVITATION_ERROR_TYPE: NON_GREGORIAN=NON_GREGORIAN, INVALID_METHOD=INVALID_METHOD, NO_VEVENT=NO_VEVENT, MISSING_ORIGINAL_UID=MISSING_ORIGINAL_UID, MISSING_ORGANIZER=MISSING_ORGANIZER, MISSING_ORIGINAL_ORGANIZER=MISSING_ORIGINAL_ORGANIZER, MISSING_ATTENDEE=MISSING_ATTENDEE, DUPLICATE_ATTENDEES=DUPLICATE_ATTENDEES, UNEXPECTED_FLOATING_TIME=UNEXPECTED_FLOATING_TIME, X_WR_TIMEZONE_UNSUPPORTED=X_WR_TIMEZONE_UNSUPPORTED, TZID_UNSUPPORTED=TZID_UNSUPPORTED, DTSTART_MISSING=DTSTART_MISSING, ALLDAY_INCONSISTENCY=ALLDAY_INCONSISTENCY, DTSTART_MALFORMED=DTSTART_MALFORMED, DTSTART_OUT_OF_BOUNDS=DTSTART_OUT_OF_BOUNDS, DTEND_MALFORMED=DTEND_MALFORMED, DTEND_OUT_OF_BOUNDS=DTEND_OUT_OF_BOUNDS, RRULE_MALFORMED=RRULE_MALFORMED, RRULE_UNSUPPORTED=RRULE_UNSUPPORTED, SINGLE_EDIT_UNSUPPORTED=SINGLE_EDIT_UNSUPPORTED, NO_OCCURRENCES=NO_OCCURRENCES, EXTERNAL_ERROR=EXTERNAL_ERROR, VALIDATION_ERROR=VALIDATION_ERROR
  # EVENT_TYPES: 0=DELETE, 1=CREATE, 2=UPDATE, 3=UPDATE_METADATA
  # EVENT_VERIFICATION_STATUS: 1=SUCCESSFUL, 0=NOT_VERIFIED, -1=FAILED
  # EventNotifierEventName: Hello=Hello, Ping=Ping, Goodbye=Goodbye, Error=Error
  # EventNotifierLoopType: mail=Mail, calendar=Calendar, contacts=Contacts, core=Core, meet=Meet, lumo=Lumo, legacy=Legacy
  # EXPORT_ERRORS: 0=NETWORK_ERROR
  # EXPORT_EVENT_ERROR_TYPES: 0=DECRYPTION_ERROR, 1=PASSWORD_RESET
  # EXPORT_STEPS: 0=EXPORTING, 1=FINISHED
  # EXTENSION: csv=CSV, vcf=VCF
  # ExtraSessionForkSearchParameters: email=Email
  # FIDO2_CREDENTIALS_PIN_VALUE: 1=ENABLED, 0=DISABLED
  # Fido2CredentialFlags: 1=Compromised
  # FILTER_STATUS: 1=ENABLED, 0=DISABLED
  # FlagAction: 0=MARK_OBSOLETE, 1=MARK_NOT_OBSOLETE, 2=MARK_COMPROMISED, 3=MARK_NOT_COMPROMISED, 4=DISABLE_ENCRYPTION, 5=ENABLE_ENCRYPTION, 6=DISABLE_EXPECT_SIGNED, 7=ENABLE_EXPECT_SIGNED
  # FOLDER_COLOR: 0=DISABLED, 1=ENABLED
  # ForkSearchParameters: app=App, state=State, sk=Base64Key, v=Version, u=LocalID, t=ForkType, p=Persistent, tr=Trusted, prompt=Prompt, independent=Independent, pt=PayloadType, source=Source, selector=Selector, pv=PayloadVersion, promptType=PromptType, promptBypass=PromptBypass, plan=Plan, partnerId=PartnerId, uru=UnauthenticatedReturnUrl, token=Token, forkChallenge=ForkChallenge, clientId=ChildClientID
  # ForkType: 1=SWITCH, 2=SIGNUP, 3=LOGIN
  # ForwardingState: 0=Pending, 1=Active, 2=Outdated, 3=Paused, 4=Rejected
  # ForwardingType: 0=InternalUnencrypted, 1=InternalEncrypted, 2=ExternalUnencrypted, 3=ExternalEncrypted
  # FREQUENCY: ONCE=ONCE, DAILY=DAILY, WEEKLY=WEEKLY, MONTHLY=MONTHLY, YEARLY=YEARLY, CUSTOM=CUSTOM, OTHER=OTHER
  # GENERATION_SELECTION_TYPE: HAS_SELECTION=HAS_SELECTION, NO_SELECTION=NO_SELECTION
  # GENERATION_TYPE: WRITE_FULL_EMAIL=WRITE_FULL_EMAIL, SHORTEN=SHORTEN, PROOFREAD=PROOFREAD, EXPAND=EXPAND, FORMALIZE=FORMALIZE, FRIENDLY=FRIENDLY, CUSTOM_REFINE=CUSTOM_REFINE
  # GetActiveSessionType: 0=Switch, 1=AutoPick
  # GROUP_MEMBER_PERMISSIONS: 0=NONE, 1=SEND, 2=LEAVE, 4=OWNER
  # GROUP_MEMBER_STATE: 0=PENDING, 1=ACTIVE, 3=PAUSED, 4=REJECTED, 5=PENDING_KEYS
  # GROUP_MEMBER_TYPE: 0=INTERNAL, 1=EXTERNAL, 2=INTERNAL_TYPE_EXTERNAL
  # GROUP_MEMBERSHIP_STATUS: active=ACTIVE, unanswered=UNANSWERED
  # GroupFlags: 0=None, 1=System, 4=Scim
  # GroupMemberType: 0=Internal, 1=External
  # GroupPermissions: 0=NobodyCanSend, 1=GroupMembersCanSend, 3=EveryoneCanSend
  # HandshakeInfoVendorType: 0=ProtonDrive, 1=ProtonDoc
  # HIDE_SENDER_IMAGES: 0=SHOW, 1=HIDE
  # HTTP_STATUS_CODE: 200=OK, 204=NO_CONTENT, 400=BAD_REQUEST, 401=UNAUTHORIZED, 403=FORBIDDEN, 404=NOT_FOUND, 409=CONFLICT, 422=UNPROCESSABLE_ENTITY, 429=TOO_MANY_REQUESTS, 500=INTERNAL_SERVER_ERROR
  # ICAL_ALARM_ACTION: DISPLAY=DISPLAY, EMAIL=EMAIL, AUDIO=AUDIO
  # ICAL_ATTENDEE_ROLE: REQ-PARTICIPANT=REQUIRED, OPT-PARTICIPANT=OPTIONAL, NON-PARTICIPANT=NON
  # ICAL_ATTENDEE_RSVP: TRUE=TRUE, FALSE=FALSE
  # ICAL_ATTENDEE_STATUS: NEEDS-ACTION=NEEDS_ACTION, ACCEPTED=ACCEPTED, DECLINED=DECLINED, TENTATIVE=TENTATIVE, DELEGATED=DELEGATED
  # ICAL_CALSCALE: GREGORIAN=GREGORIAN
  # ICAL_EVENT_STATUS: TENTATIVE=TENTATIVE, CONFIRMED=CONFIRMED, CANCELLED=CANCELLED
  # ICAL_METHOD: PUBLISH=PUBLISH, REQUEST=REQUEST, REPLY=REPLY, CANCEL=CANCEL, COUNTER=COUNTER, DECLINECOUNTER=DECLINECOUNTER, ADD=ADD, REFRESH=REFRESH
  # IDP_TYPE: 1=DEFAULT, 2=EDUGAIN
  # IMAGE_PROXY_FLAGS: 0=NONE, 1=INCORPORATOR, 2=PROXY, 3=ALL
  # IMPORT_CONTACT_ERROR_TYPE: 0=UNSUPPORTED_VCARD_VERSION, 1=MISSING_FN, 2=ENCRYPTION_ERROR, 3=EXTERNAL_ERROR
  # IMPORT_ERROR: 2000=UNEXPECTED_ERROR, 2900=IMAP_CONNECTION_ERROR, 2901=AUTHENTICATION_ERROR, 2500=ALREADY_EXISTS, 2027=OAUTH_INSUFFICIENT_SCOPES, 2902=BANDWIDTH_LIMIT, 2902=TEMP_PROVIDER_ERROR, 429=RATE_LIMIT_EXCEEDED, 2011=ACCOUNT_DOES_NOT_EXIST, 2023=TOO_SHORT, 2024=TOO_LARGE, 2501=NOT_EXISTS
  # IMPORT_ERROR_TYPE: 0=NO_FILE_SELECTED, 1=NO_CSV_OR_VCF_FILE, 2=FILE_EMPTY, 3=FILE_TOO_BIG, 4=FILE_CORRUPTED, 5=NO_CONTACTS, 6=TOO_MANY_CONTACTS
  # IMPORT_EVENT_ERROR_TYPE: WRONG_FORMAT=WRONG_FORMAT, NON_GREGORIAN=NON_GREGORIAN, TODO_FORMAT=TODO_FORMAT, JOURNAL_FORMAT=JOURNAL_FORMAT, FREEBUSY_FORMAT=FREEBUSY_FORMAT, TIMEZONE_FORMAT=TIMEZONE_FORMAT, TIMEZONE_IGNORE=TIMEZONE_IGNORE, VEVENT_INVALID=VEVENT_INVALID, VEVENT_UNSUPPORTED=VEVENT_UNSUPPORTED, UNEXPECTED_FLOATING_TIME=UNEXPECTED_FLOATING_TIME, ALLDAY_INCONSISTENCY=ALLDAY_INCONSISTENCY, DTSTART_MISSING=DTSTART_MISSING, DTSTART_MALFORMED=DTSTART_MALFORMED, DTSTART_OUT_OF_BOUNDS=DTSTART_OUT_OF_BOUNDS, DTEND_MALFORMED=DTEND_MALFORMED, DTEND_OUT_OF_BOUNDS=DTEND_OUT_OF_BOUNDS, X_WR_TIMEZONE_UNSUPPORTED=X_WR_TIMEZONE_UNSUPPORTED, TZID_UNSUPPORTED=TZID_UNSUPPORTED, RRULE_MALFORMED=RRULE_MALFORMED, RRULE_UNSUPPORTED=RRULE_UNSUPPORTED, SINGLE_EDIT_UNSUPPORTED=SINGLE_EDIT_UNSUPPORTED, NOTIFICATION_OUT_OF_BOUNDS=NOTIFICATION_OUT_OF_BOUNDS, VALIDATION_ERROR=VALIDATION_ERROR, ENCRYPTION_ERROR=ENCRYPTION_ERROR, PARENT_EVENT_MISSING=PARENT_EVENT_MISSING, EXTERNAL_ERROR=EXTERNAL_ERROR, NO_OCCURRENCES=NO_OCCURRENCES
  # IMPORT_GROUPS_ACTION: 0=MERGE, 1=CREATE, 2=IGNORE
  # IMPORT_STEPS: 0=ATTACHING, 1=ATTACHED, 2=IMPORT_CSV, 3=WARNING, 4=IMPORTING, 5=SUMMARY, 6=IMPORT_GROUPS
  # ImportProvider: google=GOOGLE, yahoo=YAHOO, outlook=OUTLOOK, default=DEFAULT
  # ImportType: Mail=MAIL, Calendar=CALENDAR, Contacts=CONTACTS, Drive=DRIVE
  # INCOMING_DEFAULTS_LOCATION: 14=BLOCKED
  # INCOMPATIBILITY_TYPE: BROWSER=BROWSER, HARDWARE=HARDWARE
  # INHERIT_PARENT_FOLDER_COLOR: 0=DISABLED, 1=ENABLED
  # INVITATION_ERROR_TYPE: INVITATION_INVALID=INVITATION_INVALID, INVITATION_UNSUPPORTED=INVITATION_UNSUPPORTED, INVALID_METHOD=INVALID_METHOD, NO_COMPONENT=NO_COMPONENT, NO_VEVENT=NO_VEVENT, PARSING_ERROR=PARSING_ERROR, DECRYPTION_ERROR=DECRYPTION_ERROR, FETCHING_ERROR=FETCHING_ERROR, UPDATING_ERROR=UPDATING_ERROR, EVENT_CREATION_ERROR=EVENT_CREATION_ERROR, EVENT_UPDATE_ERROR=EVENT_UPDATE_ERROR, CANCELLATION_ERROR=CANCELLATION_ERROR, UNEXPECTED_ERROR=UNEXPECTED_ERROR, EXTERNAL_ERROR=EXTERNAL_ERROR
  # INVOICE_EMAIL_STATE: 0=DISABLED, 1=ENABLED, 2=BOUNCED
  # InvoiceOwner: 0=User, 1=Organization
  # InvoiceState: 0=Unpaid, 1=Paid, 2=Void, 3=Billed, 4=Writeoff
  # InvoiceType: 0=Other, 1=Subscription, 2=Cancellation, 3=Credit, 4=Donation, 5=Chargeback, 6=Renewal, 7=Refund, 8=Modification, 9=Addition, 10=CurrencyConversion, 12=Product, 13=Manual
  # IsCustomCalendarMapping: 1=TRUE, 0=FALSE
  # KEY_FLAG: 8=FLAG_EMAIL_NO_SIGN, 4=FLAG_EMAIL_NO_ENCRYPT, 2=FLAG_NOT_OBSOLETE, 1=FLAG_NOT_COMPROMISED
  # KEY_TRANSPARENCY_SETTING: 0=DISABLED, 1=ENABLED
  # KeyboardKey: Backspace=Backspace, Tab=Tab, Enter=Enter, Shift=Shift, Control=Control, Alt=Alt, CapsLock=CapsLock, Escape=Escape,  =Space,  =Spacebar, PageUp=PageUp, PageDown=PageDown, End=End, Home=Home, ArrowLeft=ArrowLeft, ArrowUp=ArrowUp, ArrowRight=ArrowRight, ArrowDown=ArrowDown, Left=Left, Up=Up, Right=Right, Down=Down, Insert=Insert, Delete=Delete, 0=Zero, )=ClosedParen, 1=One, !=ExclamationMark, 2=Two, @=AtSign, 3=Three, £=PoundSign, #=Hash, 4=Four, $=DollarSign, 5=Five, %=PercentSign, 6=Six, ^=Caret, ^=Hat, 7=Seven, &=Ampersand, 8=Eight, *=Star, *=Asterisk, 9=Nine, (=OpenParen, a=a, b=b, c=c, d=d, e=e, f=f, g=g, h=h, i=i, j=j, k=k, l=l, m=m, n=n, o=o, p=p, q=q, r=r, s=s, t=t, u=u, v=v, w=w, x=x, y=y, z=z, A=A, B=B, C=C, D=D, E=E, F=F, G=G, H=H, I=I, J=J, K=K, L=L, M=M, N=N, O=O, P=P, Q=Q, R=R, S=S, T=T, U=U, V=V, W=W, X=X, Y=Y, Z=Z, Meta=Meta, Meta=LeftWindowKey, Meta=RightWindowKey, 0=Numpad0, 1=Numpad1, 2=Numpad2, 3=Numpad3, 4=Numpad4, 5=Numpad5, 6=Numpad6, 7=Numpad7, 8=Numpad8, 9=Numpad9, *=Multiply, +=Add, -=Subtract, .=DecimalPoint, Decimal=MSDecimalPoint, /=Divide, F1=F1, F2=F2, F3=F3, F4=F4, F5=F5, F6=F6, F7=F7, F8=F8, F9=F9, F10=F10, F11=F11, F12=F12, NumLock=NumLock, ScrollLock=ScrollLock, ;=SemiColon, ==Equals, ,=Comma, -=Dash, .=Period, _=UnderScore, +=PlusSign, /=Slash, /=ForwardSlash, ~=Tilde, `=GraveAccent, [=OpenBracket, ]=ClosedBracket, '=Quote, ?=QuestionMark
  # KEYGEN_TYPES: CURVE25519=CURVE25519, PQC=PQC
  # KeyTransparencyActivation: 0=DISABLED, 1=LOG_ONLY, 2=SHOW_UI
  # KT_VERIFICATION_STATUS: 0=VERIFIED_KEYS, 1=UNVERIFIED_KEYS, 2=VERIFICATION_FAILED
  # LABEL_TYPE: 1=MESSAGE_LABEL, 2=CONTACT_GROUP, 3=MESSAGE_FOLDER, 4=SYSTEM_FOLDER
  # LayoutSetting: 0=List, 1=Grid
  # LINK_TYPES: web=WEB, email=EMAIL, phone=PHONE
  # LinkState: 0=DRAFT, 1=ACTIVE, 2=TRASHED
  # LinkType: 1=FOLDER, 2=FILE, 3=ALBUM
  # LinkURLType: folder=FOLDER, file=FILE
  # LUMO_UPSELL_PATHS: top-navigation-bar=TOP_NAVIGATION_BAR, chat-history=CHAT_HISTORY, sidebar=SIDEBAR, sidebar-button=SIDEBAR_BUTTON, settings-modal=SETTINGS_MODAL, settings-modal-plan=SETTINGS_MODAL_PLAN, api-keys=API_KEYS, limit-questions=LIMIT_QUESTIONS, free-user-question-limit=QUESTION_LIMIT_FREE, paid-user-question-limit=QUESTION_LIMIT_B2B_B2C, lumo-plus-upgrade-modal=LUMO_PLUS_UPGRADE_MODAL, lumo-plus-upgrade-toggle=LUMO_PLUS_UPGRADE_TOGGLE, composer-model-selector=COMPOSER_MODEL_SELECTOR, composer-image-selector=COMPOSER_IMAGE_SELECTOR, gallery-image-limit=GALLERY_IMAGE_LIMIT, custom-agents=CUSTOM_AGENTS
  # MAIL_PAGE_SIZE: 50=FIFTY, 100=ONE_HUNDRED, 200=TWO_HUNDRED
  # MAIL_UPSELL_BANNER_LINK_ID_REF_PATH: 3=SEND_FROM_PM_ADDRESS, 4=GET_MORE_FOLDERS_FILTERS_AND_ADDRESSES, 5=AUTO_REPLY, 7=THIRD_PARTY_CLIENTS, 9=GET_MORE_FEATURES, 15=HOST_EMAILS_FROM_YOUR_DOMAINS, 16=PROTECT_YOUR_BUSINESS, 17=ADD_MORE_ADDRESSES, 18=CONTACT_GROUPS, 19=PRIVACY_FIRST_INTERNET, 20=PRIVACY_FOR_ALL, 23=PREMIUM_FEATURES, 24=LVL_UP_PRIVACY, 25=PROTON_SENTINEL
  # MAIL_UPSELL_PATHS: auto-reply=AUTO_REPLY, domain-names=DOMAIN_NAMES, catch-all=CATCH_ALL, bridge=BRIDGE, pm-me=PM_ME, short-address=SHORT_ADDRESS, auto-delete=AUTO_DELETE, schedule-send=SCHEDULE_SEND, storage-full=STORAGE_FULL, get-started-checklist=GET_STARTED_CHECKLIST, mail-footer=MAIL_FOOTER, unlimited-folders=UNLIMITED_FOLDERS, unlimited-labels=UNLIMITED_LABELS, unlimited-filters=UNLIMITED_FILTERS, unlimited-filters-newsletter-subscription=UNLIMITED_FILTERS_NEWSLETTER_SUBSCRIPTION, unlimited-folders-newsletter-subscription=UNLIMITED_FOLDERS_NEWSLETTER_SUBSCRIPTION, unlimited-addresses=UNLIMITED_ADDRESSES, forward-emails=FORWARD_EMAILS, smtp-submission=SMTP_SUBMISSION, snooze-message=SNOOZE_MESSAGE, proton-sentinel=PROTON_SENTINEL, pass-aliases=PASS_ALIASES, trial-welcome=TRIAL_WELCOME, trial-banner=TRIAL_BANNER, trial-end=TRIAL_END, assistant-toggle=ASSISTANT_TOGGLE, assistant-toggle-downgrade=ASSISTANT_TOGGLE_DOWNGRADE, assistant-composer=ASSISTANT_COMPOSER, zoom-meeting=ZOOM_MEETING, account-locked-state=ACCOUNT_LOCKED, dark-web-monitoring=DARK_WEB_MONITORING, subscription-reminder-privacy=SUBSCRIPTION_REMINDER_PRIVACY, subscription-reminder-productivity=SUBSCRIPTION_REMINDER_PRODUCTIVITY, one-dollar-initial-reminder=ONE_DOLLAR_INITIAL_REMINDER, one-dollar-second-reminder=ONE_DOLLAR_SECOND_REMINDER, one-dollar-last-reminder=ONE_DOLLAR_LAST_REMINDER, zero-ninety-nine-initial-reminder=ZERO_NINETY_NINE_INITIAL_REMINDER, zero-ninety-nine-second-reminder=ZERO_NINETY_NINE_SECOND_REMINDER, zero-ninety-nine-last-reminder=ZERO_NINETY_NINE_LAST_REMINDER, go-unlimited-2025=GO_UNLIMITED_2025, unlimited-to-duo=UNLIMITED_TO_DUO, plus_monthly-subscriber-nudge-variant-money=PLUS_MONTHLY_SUBSCRIBER_NUDGE_VARIANT_MONEY, bundle_monthly-subscriber-nudge-variant-money=BUNDLE_MONTHLY_SUBSCRIBER_NUDGE_VARIANT_MONEY
  # MAIL_VERIFICATION_STATUS: -1=NOT_VERIFIED, 0=NOT_SIGNED, 1=SIGNED_AND_VALID, 2=SIGNED_AND_INVALID
  # MAILBOX_LABEL_IDS: 0=INBOX, 1=ALL_DRAFTS, 2=ALL_SENT, 3=TRASH, 4=SPAM, 5=ALL_MAIL, 10=STARRED, 6=ARCHIVE, 7=SENT, 8=DRAFTS, 9=OUTBOX, 12=SCHEDULED, 15=ALMOST_ALL_MAIL, 16=SNOOZED, 20=CATEGORY_SOCIAL, 21=CATEGORY_PROMOTIONS, 22=CATEGORY_UPDATES, 24=CATEGORY_DEFAULT, 25=CATEGORY_NEWSLETTERS, 26=CATEGORY_TRANSACTIONS, 40=SOFT_DELETED
  # MailImportDestinationFolder: Inbox=INBOX, All Drafts=ALL_DRAFTS, All Sent=ALL_SENT, Trash=TRASH, Spam=SPAM, All Mail=ALL_MAIL, Almost All Mail=ALMOST_ALL_MAIL, Starred=STARRED, Archive=ARCHIVE, Sent=SENT, Drafts=DRAFTS
  # MailImportGmailCategories: Forums=FORUMS, Promotions=PROMOTIONS, Social=SOCIAL, Updates=UPDATES
  # MailImportPayloadError: Max folders limit reached=MAX_FOLDERS_LIMIT_REACHED, Folder names too long=FOLDER_NAMES_TOO_LONG, Label names too long=LABEL_NAMES_TOO_LONG, Unavailable names=UNAVAILABLE_NAMES, Reserved names=RESERVED_NAMES, EMPTY=EMPTY, MERGE_WARNING=MERGE_WARNING
  # MARK_AS_STATUS: read=READ, unread=UNREAD
  # MeetingState: 0=DELETED, 1=ACTIVE
  # MeetingType: 0=INSTANT, 1=PERSONAL, 2=SCHEDULED, 3=RECURRING, 4=PERMANENT
  # MEMBER_FLAGS: 8=OrgKeyResetPrivatization
  # MEMBER_INVITATION_STATUS: 0=PENDING, 1=ACCEPTED, 2=REJECTED
  # MEMBER_ORG_KEY_STATE: 0=NoKey, 1=Active, 2=Missing, 3=Pending
  # MEMBER_PERMISSIONS: 1=MANAGE_FORWARDING
  # MEMBER_PRIVATE: 0=READABLE, 1=UNREADABLE
  # MEMBER_ROLE: 0=ORGANIZATION_NONE, 1=ORGANIZATION_MEMBER, 2=ORGANIZATION_ADMIN
  # MEMBER_STATE: 0=STATUS_DISABLED, 1=STATUS_ENABLED, 2=STATUS_INVITED
  # MEMBER_SUBSCRIBER: 0=NON_PAYER, 1=PAYER
  # MEMBER_TYPE: 0=PROTON, 1=MANAGED
  # MemberUnprivatizationState: 1=Pending, 2=Ready
  # MESSAGE_BUTTONS: 0=READ_UNREAD, 1=UNREAD_READ
  # METRICS_LOG: signup=SIGNUP, encrypted_search=ENCRYPTED_SEARCH, dark_styles=DARK_STYLES
  # MIME_TYPES: multipart/mixed=MIME, text/plain=PLAINTEXT, text/html=DEFAULT, text/calendar=ICS, application/ics=APPLICATION_ICS, application/pgp-keys=PGP_KEYS
  # MIME_TYPES_MORE: =AUTOMATIC
  # MNEMONIC_STATUS: 0=DISABLED, 1=ENABLED, 2=OUTDATED, 3=SET, 4=PROMPT
  # MONTHLY_TYPE: 0=ON_MONTH_DAY, 1=ON_NTH_DAY, -1=ON_MINUS_NTH_DAY
  # MotionModeSetting: 0=No_preference, 1=Reduce
  # MX_STATE: 0=MX_STATE_DEFAULT, 1=MX_STATE_NO_US, 2=MX_STATE_INC_US, 3=MX_STATE_GOOD, 4=MX_STATE_BACKUP
  # NEWSLETTER_SUBSCRIPTIONS: Announcements=ANNOUNCEMENTS, Features=FEATURES, Newsletter=NEWSLETTER, Beta=BETA, Business=BUSINESS, Offers=OFFERS, NewEmailNotif=NEW_EMAIL_NOTIF, Onboarding=ONBOARDING, UserSurveys=USER_SURVEY, InboxNews=INBOX_NEWS, VpnNews=VPN_NEWS, DriveNews=DRIVE_NEWS, PassNews=PASS_NEWS, WalletNews=WALLET_NEWS, LumoNews=LUMO_NEWS, MeetNews=MEET_NEWS, InAppNotifications=IN_APP_NOTIFICATIONS, AccountRecovery=ACCOUNT_RECOVERY
  # NEWSLETTER_SUBSCRIPTIONS_BITS: 1=ANNOUNCEMENTS, 2=FEATURES, 4=NEWSLETTER, 8=BETA, 16=BUSINESS, 32=OFFERS, 64=NEW_EMAIL_NOTIF, 128=ONBOARDING, 256=USER_SURVEY, 512=INBOX_NEWS, 1024=VPN_NEWS, 2048=DRIVE_NEWS, 4096=PASS_NEWS, 8192=WALLET_NEWS, 16384=IN_APP_NOTIFICATIONS, 32768=LUMO_NEWS, 65536=MEET_NEWS, 131072=ACCOUNT_RECOVERY
  # NEXT_MESSAGE_ON_MOVE: 0=DISABLED, 1=DEFAULT, 2=ENABLED
  # NOTIFICATION_TYPE_API: 0=EMAIL, 1=DEVICE
  # NOTIFICATION_UNITS: 1=WEEK, 2=DAY, 3=HOUR, 4=MINUTE
  # NOTIFICATION_WHEN: -=BEFORE, =AFTER
  # OAUTH_PROVIDER: 1=GOOGLE, 2=OUTLOOK, 3=ZOOM, 4=GSUITE, 5=MICROSOFT_BUSINESS
  # ORGANIZATION_FLAGS: 1=LOYAL, 2=COVID, 8=NO_CYCLE_SCHEDULED, 64=DISSIDENT, 128=PROTON, 256=PHONE_SUPPORT, 512=TO_MIGRATE_ORG_KEY, 2048=DELETION_WHITELISTED
  # ORGANIZATION_POLICY_ENFORCED: 0=NO, 1=YES
  # ORGANIZATION_STATE: 0=DISABLED, 1=ACTIVE, 2=DELINQUENT
  # ORGANIZATION_TWOFA_SETTING: 0=NOT_REQUIRED, 1=REQUIRED_ADMIN_ONLY, 2=REQUIRED_ALL
  # OrganizationKeyMode: 0=Legacy, 1=Passwordless
  # OrganizationKeyState: 0=NoKey, 1=Setup, 2=Activate, 3=Inactive, 4=Active
  # OrganizationPlanFlag: 1=Mail, 2=Drive, 4=VPN, 8=Pass, 16=Wallet, 64=Lumo
  # OVERWRITE: 0=THROW_ERROR_IF_CONFLICT, 1=OVERWRITE_CONTACT
  # PACKAGE_SIGNATURES_MODE: 0=SIGNATURES_NONE, 1=SIGNATURES_ATTACHMENTS
  # PACKAGE_TYPE: 1=SEND_PM, 2=SEND_EO, 4=SEND_CLEAR, 8=SEND_PGP_INLINE, 16=SEND_PGP_MIME, 32=SEND_CLEAR_MIME
  # ParticipantCapabilityPermission: 0=NotAllowed, 1=Allowed
  # PASSWORD_MODE: 1=SINGLE, 2=TWO_PASSWORD
  # PASSWORD_REMINDERS_VALUE: 0=ENABLED, 1=DISABLED
  # PasswordPolicyState: 1=ENABLED, 2=OPTIONAL
  # PAYMENT_METHOD_TYPES: chargebee-bitcoin=CHARGEBEE_BITCOIN, cash=CASH, token=TOKEN, chargebee-card=CHARGEBEE_CARD, chargebee-paypal=CHARGEBEE_PAYPAL, chargebee-ideal=CHARGEBEE_IDEAL, sepa-direct-debit=CHARGEBEE_SEPA_DIRECT_DEBIT, apple-pay=APPLE_PAY, google-pay=GOOGLE_PAY
  # PAYMENT_TOKEN_STATUS: 0=PENDING, 1=CHARGEABLE, 2=FAILED, 3=CONSUMED, 4=NOT_SUPPORTED
  # PersonalMeetingState: 0=NOT_YOUR_PERSONAL, 1=YOUR_PERSONAL
  # PGP_SCHEME_TEXT: PGP/Inline=INLINE, PGP/MIME=MIME
  # PGP_SCHEMES: pgp-inline=PGP_INLINE, pgp-mime=PGP_MIME
  # PGP_SCHEMES_MORE: =GLOBAL_DEFAULT
  # PhotoTag: -1=All, 0=Favorites, 1=Screenshots, 2=Videos, 3=LivePhotos, 4=MotionPhotos, 5=Selfies, 6=Portraits, 7=Bursts, 8=Panoramas, 9=Raw
  # PLAN_SERVICES: 1=MAIL, 2=DRIVE, 4=VPN, 8=PASS
  # PLAN_TYPES: 0=ADDON, 1=PLAN, 2=PRODUCT
  # PLANS: free=FREE, drive2022=DRIVE, drive1tb2025=DRIVE_1TB, drivepro2022=DRIVE_PRO, drivebiz2024=DRIVE_BUSINESS, drivelite2024=DRIVE_LITE, pass2023=PASS, mail2022=MAIL, mailpro2022=MAIL_PRO, mailbiz2024=MAIL_BUSINESS, vpn2022=VPN, vpn2024=VPN2024, bundle2022=BUNDLE, bundlepro2022=BUNDLE_PRO, bundlepro2024=BUNDLE_PRO_2024, bundlebiz2025=BUNDLE_BIZ_2025, family2022=FAMILY, duo2024=DUO, visionary2022=VISIONARY, vpnpro2023=VPN_PRO, vpnbiz2023=VPN_BUSINESS, vpnpass2023=VPN_PASS_BUNDLE, passpro2024=PASS_PRO, passbiz2024=PASS_BUSINESS, passfamily2024=PASS_FAMILY, passlifetime2024=PASS_LIFETIME, lumo2024=LUMO, lumobiz2025=LUMO_BUSINESS, meet2026=MEET, meetbiz2025=MEET_BUSINESS, vpnpassbiz2025=VPN_PASS_BUNDLE_BUSINESS
  # PlanState: 0=Unavailable, 1=Available
  # PM_SIGNATURE: 0=DISABLED, 1=ENABLED, 2=LOCKED
  # PM_SIGNATURE_REFERRAL: 0=DISABLED, 1=ENABLED
  # PREDEFINED_ROLE_NAME: Owner=OWNER, User Admin=USER_ADMIN, Security Admin=SECURITY_ADMIN
  # Product: Account=Account, Authenticator=Authenticator, Mail=Mail, Calendar=Calendar, Wallet=Wallet, Docs=Docs, Sheets=Sheets, Lumo=Lumo, Drive=Drive, VPN=VPN, VPN=Verify, Admin=Admin, Pass=Pass, Meet=Meet, Spaces=Spaces, Console=Console, Other=Other
  # PRODUCT: 6=WALLET
  # PRODUCT_BIT: 1=MAIL, 2=DRIVE, 4=VPN, 8=PASS, 16=WALLET, 32=SPACES, 64=LUMO, 256=MEET
  # ProductStatusState: 0=Initialized, 1=Active, 2=Completed, 3=Error
  # PROMPT_PIN: 0=DISABLED, 1=ENABLED
  # ProtectionType: 5=OK
  # PROTON_WEBSITES: https://status.proton.me=PROTON_STATUS_PAGE
  # ProtonCalendarState: 0=NOT_FROM_PROTON_CALENDAR, 1=FROM_PROTON_CALENDAR
  # RAWMimeTypes: image/x-dcraw=dcraw, image/x-adobe-dng=dng, image/x-canon-crw=crw, image/x-canon-cr2=cr2, image/x-canon-cr3=cr3, image/x-epson-erf=erf, image/x-fuji-raf=raf, image/x-kodak-dcr=dcr, image/x-kodak-k25=k25, image/x-kodak-kdc=kdc, image/x-minolta-mrw=mrw, image/x-nikon-nef=nef, image/x-nikon-nrw=nrw, image/x-olympus-orf=orf, image/x-panasonic-raw=raw, image/x-panasonic-rw2=rw2, image/x-pentax-pef=pef, image/x-pentax-ptx=ptx, image/x-sigma-x3f=x3f, image/x-sony-srf=srf, image/x-sony-sr2=sr2, image/x-sony-arw=arw, image/x-phaseone-iiq=iiq, image/x-mamiya-mef=mef, image/x-leica-rwl=rwl, image/x-hasselblad-3fr='3fr', image/x-hasselblad-fff=fff
  # RAWThumbnailExtractionSupported: image/x-adobe-dng=dng, image/x-sony-arw=arw, image/x-epson-erf=erf, image/x-minolta-mrw=mrw, image/x-nikon-nrw=nrw, image/x-olympus-orf=orf, image/x-fuji-raf=raf, image/x-panasonic-rw2=rw2, image/x-canon-cr2=cr2, image/x-canon-cr3=cr3, image/heic=heic, image/x-nikon-nef=nef
  # REASON_TYPES: email=EMAIL, ticket_id=TICKET_ID, other=OTHER
  # RECIPIENT_TYPES: 1=TYPE_INTERNAL, 2=TYPE_EXTERNAL
  # RECURRING_TYPES: 1=ALL, 2=FUTURE, 3=SINGLE
  # ReferralState: 0=INVITED, 1=SIGNED_UP, 2=TRIAL, 3=COMPLETED, 4=REWARDED
  # RELEASE_CATEGORIES: Stable=STABLE, Alpha=ALPHA, EarlyAccess=EARLY_ACCESS
  # Renew: 0=Disabled, 1=Enabled
  # RESPONSE_CODE: 1000=SUCCESS, 2011=NOT_ALLOWED, 2001=INVALID_LINK_TYPE, 2500=ALREADY_EXISTS, 2501=NOT_FOUND, 2061=INVALID_ID
  # RetentionRuleAction: 0=RetainPurgeDeleted, 1=RetainPurgeAll, 2=RetainAll
  # RetentionRuleProduct: 1=Mail
  # RetentionRuleScopeType: 1=User, 2=Group
  # ROLE_SOURCE: user=USER, group=GROUP
  # SAVE_CONFIRMATION_TYPES: 1=SINGLE, 2=RECURRING
  # SEND_MESSAGE_DIRECT_ACTION: 0=REPLY, 1=REPLY_ALL, 2=FORWARD, 3=AUTO_RESPONSE, 4=READ_RECEIPT
  # SentryCalendarInitiatives: rsvp-note=RSVP_NOTE, bookings=BOOKINGS
  # SentryCommonInitiatives: post-subscription=POST_SUBSCRIPTION, encrypted-search=ENCRYPTED_SEARCH, contact-import=CONTACT_IMPORT, event-notifier=EVENT_NOTIFIER
  # SentryMailInitiatives: assistant=ASSISTANT, attachment-encryption-error=ATTACHMENT_ENCRYPTION_ERROR, attachment-upload-error=ATTACHMENT_UPLOAD_ERROR, composer=COMPOSER, drawer-security-center=DRAWER_SECURITY_CENTER, drawer-vpn=DRAWER_VPN, list-actions-telemetry=LIST_ACTIONS_TELEMETRY, mail-onboarding=MAIL_ONBOARDING, mail-redux-errors=MAIL_REDUX_ERRORS, migration-tool=MIGRATION_TOOL, move-actions=MOVE_ACTIONS, remove-email-trackers=REMOVE_EMAIL_TRACKERS, upsell-modals=UPSELL_MODALS, categories-view=CATEGORIES_VIEW, mail-logger=LOGGER
  # SentryRealtimeInitiatives: realtime-sdk-switch=SDK_SWITCH
  # SERVER_FEATURES: 1=SECURE_CORE, 2=TOR, 4=P2P, 16=IPV6, 128=DOUBLE_RESTRICTION
  # SessionAccessTypeFlag: 1=AdminAccess, 2=DelegatedAccess, 4=OrgAccess
  # SessionRecoveryReason: 0=NONE, 1=CANCELLED, 2=AUTHENTICATION
  # SessionRecoveryState: 0=NONE, 1=GRACE_PERIOD, 2=CANCELLED, 3=INSECURE
  # SessionSource: 0=Proton, 1=Saml, 2=Oauth, 3=Msp
  # SETTINGS_2FA_ENABLED: 1=OTP, 2=FIDO2
  # SETTINGS_DATE_FORMAT: 0=LOCALE_DEFAULT, 1=DDMMYYYY, 2=MMDDYYYY, 3=YYYYMMDD
  # SETTINGS_LOG_AUTH_STATE: 0=DISABLE, 1=BASIC, 2=ADVANCED
  # SETTINGS_PASSWORD_MODE: 1=ONE_PASSWORD_MODE, 2=TWO_PASSWORD_MODE
  # SETTINGS_PROTON_SENTINEL_STATE: 0=DISABLED, 1=ENABLED
  # SETTINGS_STATUS: 0=UNVERIFIED, 1=VERIFIED
  # SETTINGS_TIME_FORMAT: 0=LOCALE_DEFAULT, 1=H24, 2=H12
  # SETTINGS_VIEW: 0=DAY, 1=WEEK, 2=MONTH, 3=YEAR, 4=PLANNING
  # SETTINGS_WEEK_START: 0=LOCALE_DEFAULT, 1=MONDAY, 2=TUESDAY, 3=WEDNESDAY, 4=THURSDAY, 5=FRIDAY, 6=SATURDAY, 7=SUNDAY
  # SHARE_EXTERNAL_INVITATION_STATE: 1=PENDING, 2=USER_REGISTERED
  # SHARE_MEMBER_STATE: 1=PENDING, 2=REJECTED, 3=DELETED
  # SHARED_UPSELL_PATHS: emergency-access=EMERGENCY_ACCESS, multi-user=MULTI_USER, contact-groups=CONTACT_GROUP, storage=STORAGE, user-dropdown=USER_DROPDOWN, storage-percentage=STORAGE_PERCENTAGE, organization-capacity=ORGANIZATION_CAPACITY, sentinel=SENTINEL, sentinel-b2b=SENTINEL_B2B, trial-will-end=TRIAL_WILL_END, top-navigation-bar=TOP_NAVIGATION_BAR, public-sharing-permissions-menu=PUBLIC_SHARING_PERMISSIONS_MENU, easy-switch-byoe=EASY_SWITCH_BYOE, easy-switch-byoe-more-storage=EASY_SWITCH_BYOE_MORE_STORAGE
  # SharedURLFlags: 0=Legacy, 1=CustomPassword, 2=GeneratedPasswordIncluded, 3=GeneratedPasswordWithCustom
  # ShareTargetType: 0=Root, 1=Folder, 2=File, 3=Album, 4=Photo, 5=ProtonVendor
  # SHORTCUTS: 0=DISABLED, 1=ENABLED
  # SHOW_IMAGES: 0=SHOW, 1=HIDE
  # SHOW_MOVED: 0=NONE, 1=DRAFTS, 2=SENT, 3=DRAFTS_AND_SENT
  # SIGN: 0=DISABLED, 1=ENABLED
  # SIMPLE_LOGIN_EXTENSION_LINKS: https://app.simplelogin.io/admin/=ADMIN_DASHBOARD, https://app.sldev.ovh/admin/=ADMIN_DASHBOARD_DEV
  # SORT_DIRECTION: ASC=ASC, DESC=DESC
  # SortSetting: 1=NameAsc, 2=SizeAsc, 4=ModifiedAsc, -1=NameDesc, -2=SizeDesc, -4=ModifiedDesc
  # SOURCE_EVENT: BUTTON_SIDEBAR=BUTTON_SIDEBAR, BUTTON_FOLDERS=BUTTON_FOLDERS, BUTTON_LABELS=BUTTON_LABELS, BUTTON_VIEWS=BUTTON_VIEWS, BUTTON_BOOKINGS=BUTTON_BOOKINGS, BUTTON_CALENDARS=BUTTON_CALENDARS
  # SpaceState: 0=Good, 1=Warning, 2=Danger
  # SPAM_ACTION: 0=JustSpam, 1=SpamAndUnsub
  # SPF_STATE: 0=SPF_STATE_DEFAULT, 1=SPF_STATE_ONE, 2=SPF_STATE_MULT, 3=SPF_STATE_GOOD
  # Status: 1=Pending, 2=Resolved, 3=Rejected
  # STICKY_LABELS: 0=DISABLED, 1=ENABLED
  # SubscriptionMode: 0=Regular, 1=CustomBillings, 2=ScheduledChargedImmediately, 3=ScheduledChargedLater, 4=Trial
  # SubscriptionPlatform: 0=Default, 1=iOS, 2=Android
  # SupportedBrowserValue: 0=Unsupported, 1=Supported, -1=Other
  # SupportedMimeTypes: audio/aac=aac, application/vnd.android.package-archive=apk, image/apng=apng, application/x-freearc=arc, video/x-msvideo=avi, image/avif=avif, image/bmp=bmp, application/x-bzip2=bzip2, image/x-canon-cr3=cr3, application/vnd.openxmlformats-officedocument.wordprocessingml.document=docx, application/vnd.ms-fontobject=eot, application/epub+zip=epub, audio/x-flac=flac, video/x-flv=flv, image/gif=gif, application/gzip=gzip, image/heic=heic, image/heic-sequence=heics, image/heif=heif, image/heif-sequence=heifs, image/x-icon=ico, image/jpeg=jpg, image/jxl=jxl, application/vnd.apple.keynote=keynote, audio/x-m4a=m4a, video/x-m4v=m4v, audio/midi=midi, video/MP1S=mp1s, video/MP2P=mp2p, video/mp2t=mp2t, audio/mp4=mp4a, video/mp4=mp4v, audio/mpeg=mpeg, video/mpeg=mpg, application/vnd.apple.numbers=numbers, application/vnd.oasis.opendocument.presentation=odp, application/vnd.oasis.opendocument.spreadsheet=ods, application/vnd.oasis.opendocument.text=odt, audio/ogg=oga, application/ogg=ogg, video/ogg=ogv, audio/opus=opus, font/otf=otf, application/vnd.apple.pages=pages, application/pdf=pdf, image/png=png, application/vnd.openxmlformats-officedocument.presentationml.presentation=pptx, audio/qcelp=qcp, video/quicktime=qt, application/vnd.rar=rar, application/rtf=rtf, image/svg+xml=svg, application/x-shockwave-flash=swf, application/x-tar=tar, image/tiff=tiff, font/ttf=ttf, video/3gpp2=v3g2, video/3gpp=v3gp, audio/wav=wav, image/webp=webp, font/woff=woff, font/woff2=woff2, application/x-7z-compressed=x7zip, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=xlsx, text/xml=xml, application/zip=zip, image/vnd.microsoft.icon=vdnMicrosoftIcon
  # SupportedProtonDocsMimeTypes: application/vnd.openxmlformats-officedocument.wordprocessingml.document=docx, application/vnd.oasis.opendocument.text=odt, text/plain=txt, text/markdown=md, text/html=html, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=xlsx, text/csv=csv, text/tab-separated-values=tsv, application/vnd.oasis.opendocument.spreadsheet=ods
  # SWIPE_ACTION: -1=None, 0=Trash, 1=Spam, 2=Star, 3=Archive, 4=MarkAsRead, 5=LabelAs, 6=MoveTo
  # SyncTokenStrategy: 0=create, 1=useExisting
  # TaxMode: 0=EXCLUSIVE, 1=INCLUSIVE, 2=REVERSE_CHARGE
  # TelemetryAccountCancellationEvents: start_cancellation=startCancellation, cancel_page=cancelPage, cancel_modal=cancelModal, feedback_modal=feedbackModal, resubscribe_modal=resubscribeModal, dashboard_reactivate=dashboardReactivate, upsell_modal=upsellModal
  # TelemetryAccountCancellationFlowFeedbackEvents: start_cancellation=startCancellation, feedback_step=feedbackStep, second_step=secondStep, confirm_cancellation=confirmCancellation, managed_externally=managedExternally
  # TelemetryAccountDashboardEvents: page_load=pageLoad, cross_product_click=crossProductClick, feature_card_click=featureCardClick, upgrade_button_click=upgradeButtonClick, upsell_cta_click=upsellCtaClick, download_cta_click=downloadCtaClick
  # TelemetryAccountOrganizationLogoUploadEvents: process_start=processStart, process_success=processSuccess, process_failure=processFailure
  # TelemetryAccountSecurityCheckupEvents: page_load=pageLoad, cohort_change.complete_recovery_multiple=completeRecoveryMultiple, cohort_change.complete_recovery_single=completeRecoverySingle, cohort_change.account_recovery_enabled=accountRecoveryEnabled
  # TelemetryAccountSignupEvents: fe.page_load=pageLoad, user.plan_select=planSelect, user.cycle_select=cycleSelect, user.currency_select=currencySelect, user.payment_select=paymentSelect, user.checkout=userCheckout, user.sign_in=userSignIn, user.interact.account_create=interactAccountCreate, user.interact.upsell=interactUpsell, user.interact.credit_card=interactCreditCard, user.interact.password=interactPassword, user.interact.recovery=interactRecoveryKit, user.interact.download=interactDownload, be.available_external=beAvailableExternal, be.sign_in_success=beSignInSuccess, be.sign_out_success=beSignOutSuccess, be.payments_available=bePaymentMethods, be.checkout_error=checkoutError, fe.onboarding_start=onboardingStart, fe.onboarding_shown=onboardShown, fe.onboarding_finish=onboardFinish, fe.signup_finish=signupFinish
  # TelemetryAlwaysOnUpsellEvents: click_upsell_button=clickUpsellButton, click_top_navbar=clickTopNavbar, close_offer=closeOffer, user_subscribed=userSubscribed
  # TelemetryAppSwitcher: dropdown_app_click=dropdown_app_click
  # TelemetryB2BOnboardingEvents: modal_displayed=modal_displayed, click_modal_item=click_modal_item, hide_navbar_button=hide_navbar_button
  # TelemetryBringYourOwnEmailEvents: claim_proton_address=claim_proton_address
  # TelemetryCalendarEvents: change_temporary_time_zone=change_temporary_time_zone, answer_invite=answer_invite
  # TelemetryCalendarVideoConferencing: video_conference_widget=video_conference_widget, video_conference_settings_toggle=video_conference_settings_toggle, video_conference_zoom_integration=video_conference_zoom_integration, video_conference_proton_meet_integration=video_conference_proton_meet_integration, video_conference_proton_meet_settings_toggle=video_conference_proton_meet_settings_toggle
  # TelemetryCategoriesOnboardingEvents: onboarding_reply=onboarding_reply, category_nav=category_nav, recategorize_email=recategorize_email, settings_toggle_category_view=settings_toggle_category_view, settings_toggle_category=settings_toggle_category, settings_toggle_notification=settings_toggle_notification, report_unread_count=report_unread_count
  # TelemetryChangelog: opened=opened
  # TelemetryCollapsibleLeftSidebarEvents: toggle_left_sidebar=toggleLeftSidebar
  # TelemetryContentSearchEvents: query_completed=query_completed, result_opened=result_opened, result_action=result_action, search_session_completed=search_session_completed
  # TelemetryContentSearchIndexEvents: mailbox_index_completed=mailbox_index_completed
  # TelemetryDesktopEvents: client_first_launch=client_first_launch
  # TelemetryDocsEditorEvents: table_of_contents.available=table_of_contents_available, table_of_contents.opened=table_of_contents_opened, table_of_contents.heading_clicked=table_of_contents_heading_clicked
  # TelemetryDocsEvents: suggestion.created=suggestion_created, suggestion.resolved=suggestion_resolved, suggestion.comment=suggestion_commented
  # TelemetryDocsHomepageEvents: document.opened=document_opened, document.opened_in_trash=document_opened_in_trash, document.created=document_created, document.shared=document_shared, document.trashed=document_trashed, document.restored=document_restored, document.permanently_deleted=document_permanently_deleted, document.renamed=document_renamed, document.moved=document_moved, document.source.opened=document_source_opened, sorting.changed.to_name=sorting_changed_to_name, sorting.changed.to_time=sorting_changed_to_time, sorting.changed.to_owner=sorting_changed_to_owner, sorting.changed.to_location=sorting_changed_to_location, invite.accepted=invite_accepted, invite.rejected=invite_rejected, drive.opened=drive_opened
  # TelemetryDriveWebFeature: drive_web_feature_performance_unauth=performance, drive_web_actions_unauth=actions
  # TelemetryEncryptedSearchEvents: start_es_indexing=start_es_indexing, end_es_indexing=end_es_indexing, pause_es_indexing=pause_es_indexing, perform_search=perform_search, es_search_complete=es_search_complete, clear_search_fields=clear_search_fields, delete_es_data=delete_es_data, switch_search_type=switch_search_type
  # TelemetryESMigrationToolEvents: es_migration_tool.migration_finished=migration_finished
  # TelemetryExploreAppsEvents: page_load=page_load, app_click=app_click
  # TelemetryHeartbeatEvents: mail_heartbeat=mail_heartbeat, calendar_heartbeat=calendar_heartbeat
  # TelemetryIcsSurgeryEvents: import=import, import_publish=import_publish, invitation=invitation, ics_parsing=ics_parsing
  # TelemetryInboxDestkopEvents: mailto_heartbeat=mailto_heartbeat, daily_stats_heartbeat=daily_stats_heartbeat
  # TelemetryKeyTransparencyErrorEvents: self_audit_error=self_audit_error, key_verification_failure=key_verification_failure
  # TelemetryListSetting: list_filter_all=list_filter_all, list_filter_read=list_filter_read, list_filter_unread=list_filter_unread, list_filter_file=list_filter_file, list_order_new_first=list_order_new_first, list_order_old_first=list_order_old_first, list_order_large_first=list_order_large_first, list_order_small_first=list_order_small_first
  # TelemetryMailBlockquotes: expand_composer_blockquotes=expandComposerBlockquotes, create_reply=createReply
  # TelemetryMailComposerAssistantEvents: show_assistant=show_assistant, free_trial_start=free_trial_start, download_model=download_model, use_answer=use_answer, not_use_answer=not_use_answer, request_assistant=request_assistant, assistant_error=assistant_error, send_message=send_message, pause_download=pause_download, load_model=load_model, unload_model=unload_model, incompatible_assistant=incompatible_assistant
  # TelemetryMailDrivePostSignupOneDollarEvents: automatic_modal_open=automaticModalOpen, click_upsell_button=clickUpsellButton, click_top_navbar=clickTopNavbar, close_offer=closeOffer, user_subscribed=userSubscribed
  # TelemetryMailEvents: privacy_dropdown_opened=privacy_dropdown_opened, snooze_open_dropdown=snooze_open_dropdown
  # TelemetryMailForegroundEvents: mail_foreground_event=app_in_foreground
  # TelemetryMailListEvents: clicks_mail_actions=clicksMailListActions
  # TelemetryMailLumoEvents: assistant_opened=assistant_opened, prompt_sent=prompt_sent, chain_end=chain_end, tool_end=tool_end, confirm_answered=confirm_answered, debug_report_opened=debug_report_opened
  # TelemetryMailNewsletterSubscriptions: newsletters_view_visit=newsletters_view_visit, newsletter_action=newsletter_action, newsletter_messages_action=newsletter_messages_action, newsletters_list_sorting=newsletters_list_sorting, newsletters_list_pagination=newsletters_list_pagination
  # TelemetryMailOnboardingEvents: start_onboarding_modals=start_onboarding_modals, finish_onboarding_modals=finish_onboarding_modals, select_theme=select_theme, enable_gmail_forwarding=enable_gmail_forwarding, change_login=change_login, change_login_checklist=change_login_checklist, finish_change_login=finish_change_login, download_desktop_app=download_desktop_app, premium_features=premium_features, close_checklist=close_checklist, clicked_checklist_setting=clicked_checklist_setting
  # TelemetryMailPagingControlsEvents: move_to_previous_page=move_to_previous_page, move_to_next_page=move_to_next_page, clicked_load_more_search_results=clicked_load_more_search_results, move_to_custom_page=move_to_custom_page
  # TelemetryMailPostSignupZeroNinetyNineEvents: automatic_modal_open=automaticModalOpen, click_top_navbar=clickTopNavbar, click_upsell_button=clickUpsellButton, close_offer=closeOffer, click_hide_offer=clickHideOffer, user_subscribed=userSubscribed
  # TelemetryMailSelectAllEvents: button_move_to_archive=button_move_to_archive, button_move_to_trash=button_move_to_trash, banner_move_to=banner_move_to, banner_label_as=banner_label_as, banner_mark_as_read=banner_mark_as_read, banner_mark_as_unread=banner_mark_as_unread, banner_permanent_delete=banner_permanent_delete
  # TelemetryMailTrial2024UpsellModal: no_thanks=noThanks, close_modal=closeModal, upsell=upsell
  # TelemetryMeasurementGroups: account.any.signup=accountSignup, account.web.org_logo_upload=accountOrgLogoUpload, account.web.security_checkup=accountSecurityCheckup, account.web.safety_review_ctr=accountSafetyReviewCtr, account.web.safety_review_score_diff=accountSafetyReviewScoreDiff, account.web.recovery_settings=accountRecoverySettings, account.web.password_reminder=accountPasswordReminder, account.web.reset_password=accountResetPassword, account.web.unauth_lost_2fa=accountUnauthLost2FA, account.web.dashboard=accountDashboard, account.web.upgrade_page=accountUpgradePage, any.web.referral_discover=referralDiscover, any.web.always_on_upsell=alwaysOnUpsell, calendar.web.ics_surgery=calendarIcsSurgery, calendar.web.timezone_selector=calendarTimeZoneSelector, calendar.web.video_conferencing=calendarVideoConferencing, meet.web.meet_funnel_telemetry=meetFunnelTelemetry, account.web.cancellation=accountCancellation, account.web.cancellation_feedback_first=accountCancellationFeedbackFirst, any.web.settings_heart_beat=settingsHeartBeat, any.web.calendar_settings_heart_beat=calendarSettingsHeartBeat, any.web.calendar_invite=calendarInvite, any.web.key_transparency=keyTransparency, any.web.subscription_modal=subscriptionModal, mail.web.onboarding=mailOnboarding, any.web.paid_users_nudge=paidUsersNudge, mail.web.privacy_dropdown=mailPrivacyDropdown, mail.web.select_all=mailSelectAll, mail.web.snooze=mailSnooze, mail.web.signup=mailSignup, mail.web.composer_assistant=mailComposerAssistant, mail.web.lumo=mailLumo, mail.web.proton_tips=mailProtonTips, any.web.post_subscription_tour_events=postSubscriptionTourEvents, mail.desktop.default_mailto=mailDesktopDefaultMailto, mail.desktop.daily_stats=mailDesktopDailyStats, mail.web.clicks_mail_actions=mailActions, mail.web.list_settings=mailListSettings, mail.web.post_signup_one_dollar=mailPostSignupOneDollar, mail.web.post_signup_zero_ninety_nine=mailPostSignupZeroNinetyNine, mail.web.paging_controls=mailPagingControls, mail.web.expand_blockquotes=mailExpandBlockquotes, mail.any.categories_view=categoriesView, mail.web.pass_nudge=passNudge, mail.any.search=contentSearch, mail.any.search_index=contentSearchIndex, mail.web.newsletter_subscriptions=mailNewsletterSubscriptions, any.web.unlimited_offer_2025=unlimitedOffer2025, any.web.unlimited_to_duo_offer=unlimitedToDuoOffer, mail.es_migration_tool=esMigrationTool, any.web.security_center=securityCenter, any.web.vpn_drawer=vpnDrawer, payments.flow=paymentsFlow, drive.web.feature_performance_unauth=driveWebFeaturePerformance, drive.web.actions_unauth=driveWebActions, drive.web.post_signup_one_dollar=drivePostSignupOneDollar, any.web.collapsible_left_sidebar=collapsibleLeftSidebar, any.web.smart_banner=smartBanner, common.any.client_installs=clientInstalls, any.web.client_search=clientSearch, any.web.b2b_onboarding=b2bOnboarding, any.web.bring_your_own_email=bringYourOwnEmail, any.web.app_switcher=appSwitcher, account.web.explore_apps=accountExploreApps, any.web.prevent_wasm_loading=preventWasmLoading, common.web.suggestions=docsSuggestions, drive.docs.homepage=docsHomepage, drive.docs.editor=docsEditor, vpn.any.tv_signin=vpnTv, vpn.web.always_on_policy=vpnAlwaysOnPolicy, vpn.web.b2b_user_activity=vpnB2bUserActivity, mail.common.foreground_activity=mailForegroundActivity
  # TelemetryMeetFunnelTelemetry: spotlight_displayed=spotlight_displayed, explore_meet_clicked=explore_meet_clicked, meeting_created=meeting_created, meet_opened=meet_opened
  # TelemetryPaidUsersNudge: click_upsell_button=clickUpsellButton, click_top_navbar=clickTopNavbar, close_offer=closeOffer, user_subscribed=userSubscribed, click_hide_offer=clickHideOffer
  # TelemetryPassExtensionEvents: fe.pass_extension_installed=pass_extension_installed
  # TelemetryPassNudgeEvents: banner_display=banner_display, banner_interaction=banner_interaction, pass_cta_click=pass_cta_click
  # TelemetryPasswordReminderEvents: banner_display=banner_display, open=open, success=success, wrong_password=wrong_password, api_error=api_error, close=close, dismiss=dismiss, forgot_password_exit=forgot_password_exit, enable=enable, disable=disable, enforcement_enable=enforcement_enable, enforcement_disable=enforcement_disable
  # TelemetryPaymentsEvents: load_payment=load_payment, payment_attempt=payment_attempt, payment_success=payment_success, payment_failure=payment_failure
  # TelemetryPostSubscriptionTourEvents: post_subscription_action=post_subscription_action, start_feature_tour=start_feature_tour, quit_feature_tour=quit_feature_tour, finish_feature_tour=finish_feature_tour, replaced_default_short_domain_address=replaced_default_short_domain_address
  # TelemetryPreventWasmLoading: wasm_unsupported=wasm_unsupported, wasm_loading=wasm_loading, wasm_failed=wasm_failed
  # TelemetryProtonTipsEvents: tip_displayed=tipDispayed, cta_clicked=CTAButtonClicked, tip_change_state=tipChangeState, close_button_clicked=closeButtonClicked, tip_snoozed=tipSnoozed
  # TelemetryRecoverySettingsEvents: page_load=page_load, account_safety_review_click=account_safety_review_click, setting_enabled=setting_enabled
  # TelemetryReferralDiscoverEvents: top_bar_button_view=top_bar_button_view, top_bar_button_click=top_bar_button_click, top_bar_spotlight_cta_click=top_bar_spotlight_cta_click, settings_spotlight_view=settings_spotlight_view, referral_page_view=referral_page_view, drawer_app_view=drawer_app_view, copy_link_drawer=copy_link_drawer, copy_link_page=copy_link_page, share=share, send_email_invite=send_email_invite
  # TelemetryResetPasswordEvents: page_load=page_load, page_exit=page_exit, step_load=step_load, recovery_methods_requested=recovery_methods_requested, code_sent=code_sent, method_validated=method_validated, success=success, failure=failure
  # TelemetrySafetyReviewCtrEvents: step_load=step_load, step_exit=step_exit, step_skip=step_skip, step_success=step_success
  # TelemetrySafetyReviewScoreDiffEvents: score_diff=score_diff
  # TelemetrySecurityCenterEvents: account_security_card=account_security_card, proton_pass_discover_banner=proton_pass_discover_banner, proton_pass_create_alias=proton_pass_create_alias, proton_sentinel_toggle=proton_sentinel_toggle
  # TelemetrySmartBannerEvents: click_app_store_link=clickAppStoreLink
  # TelemetrySubscriptionModalEvents: initialization=initialization, payment=payment, cancelled_on_same_day=cancelledOnSameDay, add_lumo=addLumo
  # TelemetryUnauthLost2FAEvents: step_load=step_load, flow_outcome=flow_outcome
  # TelemetryUnlimitedOffer2025: click_top_navbar=clickTopNavbar, click_upsell_button=clickUpsellButton, close_offer=closeOffer, user_subscribed=userSubscribed, click_hide_offer=clickHideOffer
  # TelemetryUnlimitedToDuoOffer: click_upsell_button=clickUpsellButton, click_top_navbar=clickTopNavbar, user_subscribed=userSubscribed, close_offer=closeOffer, click_hide_offer=clickHideOffer
  # TelemetryUpgradePageEvents: page_load=page_load, cta_click=cta_click, subscription_success=subscription_success
  # TelemetryVpnAlwaysOnPolicyEvents: configure_opened=configureOpened, generate_start=generateStart, generate_success=generateSuccess, generate_failure=generateFailure, instructions_viewed=instructionsViewed, learn_more_clicked=learnMoreClicked, remove_modal_opened=removeModalOpened, download_latest_clicked=downloadLatestClicked, client_download_clicked=clientDownloadClicked
  # TelemetryVpnB2bUserActivityEvents: upsell_shown=upsell_shown, upsell_learn_more_clicked=upsell_learn_more_clicked, upsell_upgrade_started=upsell_upgrade_started, upsell_upgrade_success=upsell_upgrade_success, enable_clicked=enable_clicked
  # TelemetryVPNDrawerEvents: tooltip_displayed=tooltip_displayed, tooltip_clicked=tooltip_clicked, tooltip_dismissed=tooltip_dismissed, drawer_displayed=drawer_displayed, download_clicked=download_clicked, status_changed=status_changed
  # TelemetryVpnTvEvents: tv_auth_initiated=tvAuthInitiated
  # ThemeFeatureSetting: 0=DEFAULT, 1=SCROLLBARS_OFF, 2=ANIMATIONS_OFF
  # ThemeFontFaceSetting: 0=DEFAULT, 1=SYSTEM, 2=ARIAL, 3=TIMES, 4=DYSLEXIC, 5=ATKINSON
  # ThemeFontSizeSetting: 0=DEFAULT, 1=X_SMALL, 2=SMALL, 3=LARGE, 4=X_LARGE
  # ThemeModeSetting: 0=Auto, 1=Dark, 2=Light
  # ThemeTypes: 0=Duotone, 1=Carbon, 2=Snow, 3=Monokai, 4=ContrastLight, 5=Legacy, 6=Classic, 7=ContrastDark, 8=PassDark, 9=Storefront, 10=WalletLight, 11=StorefrontWallet, 12=PassLight, 13=WalletDark, 14=LumoLight, 15=LumoDark
  # TIME_PERIOD: big_bang=BIG_BANG, last_year=LAST_YEAR, last_6_months=LAST_6_MONTHS, last_3_months=LAST_3_MONTHS, last_month=LAST_MONTH
  # TransactionState: 0=SUCCESS, 1=VOIDED, 2=FAILURE, 3=TIMEOUT, 4=NEEDS_ATTENTION, 5=REFUNDED, 6=CHARGEBACK
  # TransactionType: 0=AUTHORIZATION, 1=PAYMENT, 2=REFUND, 3=PAYMENT_REVERSAL, 4=CURRENCY_CONVERSION, 5=CREDIT, 6=GIFT_CARD, 7=BANK_TRANSFER, 8=BITCOIN, 9=CASH, 10=CHARGEBACK, 11=CREDIT_TRANSFER, 12=MIGRATION, 13=ADJUSTMENT_CREDIT, 14=TEST_CREDIT, 15=PREPAYMENT
  # TrialType: 0=ReferralProgram, 1=FamilyPlan, 2=Manual
  # TwoFactorStatusFlags: 1=Totp, 2=Fido2
  # UNPAID_STATE: 0=NOT_UNPAID, 1=AVAILABLE, 2=OVERDUE
  # UNREAD_FAVICON: 0=DISABLED, 1=ENABLED
  # UPSELL_COMPONENT: banner-=BANNER, modal-=MODAL, button-=BUTTON, toggle-=TOGGLE, tip-=TIP
  # USER_ROLES: 0=FREE_ROLE, 1=MEMBER_ROLE, 2=ADMIN_ROLE
  # USER_STATUS: 0=DELETED, 1=DISABLED, 2=USER, 3=VPN_ADMIN, 4=ADMIN, 5=SUPER_ADMIN
  # UserLockedFlags: 1=BASE_STORAGE_EXCEEDED, 2=DRIVE_STORAGE_EXCEEDED, 3=STORAGE_EXCEEDED, 4=ORG_ISSUE_FOR_PRIMARY_ADMIN, 8=ORG_ISSUE_FOR_MEMBER, 16=USER_WITH_A_DOMAIN
  # UserType: 1=PROTON, 2=MANAGED, 3=EXTERNAL
  # VcalDays: 0=SU, 1=MO, 2=TU, 3=WE, 4=TH, 5=FR, 6=SA
  # VCardGender: M=Male, F=Female, O=Other, N=None, U=Unknown, =Empty
  # VERIFY_STATE: 0=VERIFY_STATE_DEFAULT, 1=VERIFY_STATE_EXIST, 2=VERIFY_STATE_GOOD
  # VIDEO_CONFERENCE_PROVIDER: 1=ZOOM, 2=PROTON_MEET
  # VIEW_LAYOUT: 0=COLUMN, 1=ROW
  # VIEW_MODE: 0=GROUP, 1=SINGLE
  # VIEWS: 1=DAY, 2=WEEK, 3=MONTH, 4=YEAR, 5=AGENDA, 6=CUSTOM, 7=MAIL, 8=DRIVE, 9=SEARCH
  # VolumeRestoreStatus: 0=Done, 1=Progress, -1=Failed
  # VolumeState: 1=Active, 3=Locked
  # VolumeType: 1=Regular, 2=Photos
  # WaitingRoomState: 0=DISABLED, 1=ENABLED
  # WEEKLY_TYPE: 0=ON_DAYS
  # YEARLY_TYPE: 0=BY_MONTH_ON_MONTH_DAY

tags:
  - name: Account
  - name: Ai
  - name: Auth
  - name: Calendar
  - name: Contacts
  - name: Core
  - name: Data
  - name: Domains
  - name: Drive
  - name: Event-notifier
  - name: Importer
  - name: Keys
  - name: Logs
  - name: Lumo
  - name: Mail
  - name: Meet
  - name: Members
  - name: Metrics
  - name: Oauth
  - name: Oauth-token
  - name: Organizations
  - name: Partner
  - name: Pass
  - name: Permissions
  - name: Settings
  - name: Tests
  - name: Vpn
  - name: pass

paths:
  /account/organization/events/auth:
    get:
      tags: [Account]
      summary: Get Org Auth Logs
      operationId: getOrgAuthLogs
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/organization/events/export/organization:
    get:
      tags: [Account]
      summary: Get Organization Logs Download
      operationId: getOrganizationLogsDownload
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: Event
          in: query
          schema:
            type: string
        - name: Email
          in: query
          schema:
            type: string
        - name: Ip
          in: query
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: string
        - name: EndTime
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            text/plain:
              schema:
                type: string
  /account/organization/events/export/pass:
    get:
      tags: [Account]
      summary: Get Pass Logs Download
      operationId: getPassLogsDownload
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: Event
          in: query
          schema:
            type: string
        - name: Email
          in: query
          schema:
            type: string
        - name: Ip
          in: query
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: string
        - name: EndTime
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            text/plain:
              schema:
                type: string
  /account/organization/events/export/vpn:
    get:
      tags: [Account]
      summary: Get VPN Log Download
      operationId: getVPNLogDownload
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: Event
          in: query
          schema:
            type: string
        - name: Email
          in: query
          schema:
            type: string
        - name: Ip
          in: query
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: string
        - name: EndTime
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            text/plain:
              schema:
                type: string
  /account/organization/events/organization:
    get:
      tags: [Account]
      summary: Get Organization Logs
      operationId: getOrganizationLogs
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: Event
          in: query
          schema:
            type: string
        - name: Email
          in: query
          schema:
            type: string
        - name: Ip
          in: query
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: string
        - name: EndTime
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/organization/events/organization/event-types:
    get:
      tags: [Account]
      summary: Get Organization Event Types
      operationId: getOrganizationEventTypes
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/organization/events/pass:
    get:
      tags: [Account]
      summary: Get Pass Logs
      operationId: getPassLogs
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: Event
          in: query
          schema:
            type: string
        - name: Email
          in: query
          schema:
            type: string
        - name: Ip
          in: query
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: string
        - name: EndTime
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/organization/events/pass/event-types:
    get:
      tags: [Account]
      summary: Get Pass Event Types
      operationId: getPassEventTypes
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/organization/events/vpn:
    get:
      tags: [Account]
      summary: Get VPN Logs
      operationId: getVPNLogs
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: Event
          in: query
          schema:
            type: string
        - name: Email
          in: query
          schema:
            type: string
        - name: Ip
          in: query
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: string
        - name: EndTime
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/organization/events/vpn/event-types:
    get:
      tags: [Account]
      summary: Get Vpn Event Types
      operationId: getVpnEventTypes
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/retention/v1/rule:
    get:
      tags: [Account]
      summary: Get Retention Rules
      operationId: getRetentionRules
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Account]
      summary: Create Retention Rule Api
      operationId: createRetentionRuleApi
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Products
                - Lifetime
                - Action
                - Scopes
              properties:
                Name:
                  type: string
                Products:
                  type: integer
                Lifetime:
                  type: integer
                Action:
                  type: integer
                Scopes:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/retention/v1/rule/{id}:
    delete:
      tags: [Account]
      summary: Delete Retention Rule Api
      operationId: deleteRetentionRuleApi
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Account]
      summary: Update Retention Rule Api
      operationId: updateRetentionRuleApi
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Products
                - Lifetime
                - Action
                - Scopes
              properties:
                Name:
                  type: string
                Products:
                  type: integer
                Lifetime:
                  type: integer
                Action:
                  type: integer
                Scopes:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/born-private:
    post:
      tags: [Account]
      summary: Born Private
      operationId: bornPrivate
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentEmail
                - ActivationKey
              properties:
                ParentEmail:
                  type: string
                ActivationKey:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/born-private/recover:
    post:
      tags: [Account]
      summary: Born Private Recovery
      operationId: bornPrivateRecovery
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentEmail
                - ReservedEmail
                - ActivationKey
              properties:
                ParentEmail:
                  type: string
                ReservedEmail:
                  type: string
                ActivationKey:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/breaches/domains/{domainId}/breach-alerts:
    patch:
      tags: [Account]
      summary: Disable Domain Breach Alert
      operationId: disableDomainBreachAlert
      parameters:
        - name: domainId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Account]
      summary: Enable Domain Breach Alert
      operationId: enableDomainBreachAlert
      parameters:
        - name: domainId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/breaches/email-notifications:
    patch:
      tags: [Account]
      summary: Update Breach Email Notifications State
      operationId: updateBreachEmailNotificationsState
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/recovery/session:
    post:
      tags: [Account]
      summary: Initiate Session Recovery
      operationId: initiateSessionRecovery
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/recovery/session/abort:
    post:
      tags: [Account]
      summary: Abort Session Recovery
      operationId: abortSessionRecovery
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v1/recovery/session/consume:
    post:
      tags: [Account]
      summary: Consume Session Recovery
      operationId: consumeSessionRecovery
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - UserKeys
                - KeySalt
              properties:
                UserKeys:
                  type: array
                  items: {}
                KeySalt:
                  type: string
                OrganizationKey:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v4/breaches:
    get:
      tags: [Account]
      summary: Get Breaches
      operationId: getBreaches
      parameters:
        - name: Recent
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v4/breaches/state:
    put:
      tags: [Account]
      summary: Update Breach State
      operationId: updateBreachState
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - State
              properties:
                ID:
                  type: string
                State:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /account/v4/breaches/unread/count:
    get:
      tags: [Account]
      summary: Get Unread Breaches Count
      operationId: getUnreadBreachesCount
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /ai/v1/feedback:
    post:
      tags: [Ai]
      summary: Send Assistant Feedback
      operationId: sendAssistantFeedback
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Category
                - Sentiment
                - Environment
                - Component
                - Body
              properties:
                Category:
                  type: string
                Sentiment:
                  type: string
                Environment:
                  type: string
                ModelID:
                  type: string
                RequestedModel:
                  type: string
                HasGeneratedImages:
                  type: boolean
                ToolsUsed:
                  type: array
                  items: {}
                Platform:
                  type: string
                NativeAppVersion:
                  type: string
                AppVersion:
                  type: string
                PromptTokens:
                  type: integer
                CompletionTokens:
                  type: integer
                ShareWithApertus:
                  type: boolean
                Component:
                  type: string
                Body:
                  type: string
                Prompt:
                  type: string
                ModelOutput:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/devices:
    delete:
      tags: [Auth]
      summary: Delete All Other Auth Device Config
      operationId: deleteAllOtherAuthDeviceConfig
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Auth]
      summary: Get Auth Devices Config
      operationId: getAuthDevicesConfig
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Auth]
      summary: Add Auth Device Config
      operationId: addAuthDeviceConfig
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - ConfirmationCodeVersion
              properties:
                Name:
                  type: string
                ActivationToken:
                  type: string
                ConfirmationCodeVersion:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/devices/{DeviceID}:
    delete:
      tags: [Auth]
      summary: Delete Auth Device Config
      operationId: deleteAuthDeviceConfig
      parameters:
        - name: DeviceID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Auth]
      summary: Activate Auth Device Config
      operationId: activateAuthDeviceConfig
      parameters:
        - name: DeviceID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DeviceID
                - EncryptedSecret
              properties:
                DeviceID:
                  type: string
                EncryptedSecret:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/devices/{DeviceID}/associate:
    post:
      tags: [Auth]
      summary: Associate Auth Device Config
      operationId: associateAuthDeviceConfig
      parameters:
        - name: DeviceID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DeviceID
                - DeviceToken
              properties:
                DeviceID:
                  type: string
                DeviceToken:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/devices/{deviceID}/admin:
    put:
      tags: [Auth]
      summary: Ask Admin Config
      operationId: askAdminConfig
      parameters:
        - name: deviceID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/devices/{deviceID}/reject:
    put:
      tags: [Auth]
      summary: Reject Auth Device Config
      operationId: rejectAuthDeviceConfig
      parameters:
        - name: deviceID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/mnemonic:
    post:
      tags: [Auth]
      summary: Auth Mnemonic
      operationId: authMnemonic
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/mnemonic/info:
    post:
      tags: [Auth]
      summary: Get Mnemonic Auth Info
      operationId: getMnemonicAuthInfo
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/mnemonic/reauth:
    post:
      tags: [Auth]
      summary: Reauth Mnemonic
      operationId: reauthMnemonic
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Username
                - PersistentCookies
              properties:
                Username:
                  type: string
                PersistentCookies:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/organizations/loginlink/token:
    post:
      tags: [Auth]
      summary: Redeem Token
      operationId: redeemToken
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - token
              properties:
                email:
                  type: string
                token:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/organizations/loginlink/verify-code:
    post:
      tags: [Auth]
      summary: Verify Code
      operationId: verifyCode
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - code
              properties:
                code:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/reminder:
    delete:
      tags: [Auth]
      summary: Delete Auth Reminder
      operationId: deleteAuthReminder
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Auth]
      summary: Auth Reminder
      operationId: authReminder
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ClientEphemeral
                - ClientProof
                - SRPSession
              properties:
                ClientEphemeral:
                  type: string
                ClientProof:
                  type: string
                SRPSession:
                  type: string
                TwoFactorCode:
                  type: string
                FIDO2:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions:
    delete:
      tags: [Auth]
      summary: Revoke Other Sessions
      operationId: revokeOtherSessions
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Auth]
      summary: Query Sessions
      operationId: querySessions
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Auth]
      summary: Create Session
      operationId: createSession
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions/forks:
    get:
      tags: [Auth]
      summary: Get Forks
      operationId: getForks
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Auth]
      summary: Push Fork Session
      operationId: pushForkSession
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ChildClientID
                - Independent
              properties:
                Payload:
                  type: string
                ChildClientID:
                  type: string
                Independent:
                  type: integer
                ForkChallenge:
                  type: string
                Selector:
                  type: string
                UserCode:
                  type: string
                ActiveOrganizationID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions/forks/{selector}:
    get:
      tags: [Auth]
      summary: Pull Fork Session
      operationId: pullForkSession
      parameters:
        - name: selector
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions/local:
    get:
      tags: [Auth]
      summary: Get Local Sessions
      operationId: getLocalSessions
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions/local/key:
    get:
      tags: [Auth]
      summary: Get Local Key
      operationId: getLocalKey
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Auth]
      summary: Set Local Key
      operationId: setLocalKey
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions/payload:
    post:
      tags: [Auth]
      summary: Payload
      operationId: payload
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /auth/v4/sessions/{UID}:
    delete:
      tags: [Auth]
      summary: Revoke Session
      operationId: revokeSession
      parameters:
        - name: UID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1:
    get:
      tags: [Calendar]
      summary: Query Calendars
      operationId: queryCalendars
      parameters:
        - name: OrderBy
          in: query
          schema:
            type: integer
        - name: ReturnFlags
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Calendar]
      summary: Create Calendar
      operationId: createCalendar
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Name
                - Description
                - Color
                - Display
              properties:
                IsImport:
                  type: integer
                AddressID:
                  type: string
                Name:
                  type: string
                Description:
                  type: string
                Color:
                  type: string
                Display:
                  type: integer
                URL:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/booking:
    get:
      tags: [Calendar]
      summary: Get User Booking Page
      operationId: getUserBookingPage
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Calendar]
      summary: Create Booking Page
      operationId: createBookingPage
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CalendarID
                - BookingUID
                - BookingKeySalt
                - EncryptedSecret
                - EncryptedContent
                - CalendarKeySignature
                - Slots
                - MinimumNoticeMode
                - ConflictCalendarIDs
              properties:
                CalendarID:
                  type: string
                BookingUID:
                  type: string
                BookingKeySalt:
                  type: string
                EncryptedSecret:
                  type: string
                EncryptedContent:
                  type: string
                CalendarKeySignature:
                  type: string
                Slots:
                  type: array
                  items: {}
                MinimumNoticeMode:
                  type: string
                ConflictCalendarIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/booking/external/{bookingUID}:
    get:
      tags: [Calendar]
      summary: Query Public Booking Page
      operationId: queryPublicBookingPage
      parameters:
        - name: bookingUID
          in: path
          required: true
          schema:
            type: string
        - name: Start
          in: query
          schema:
            type: integer
        - name: End
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/booking/external/{bookingUID}/next-slot:
    get:
      tags: [Calendar]
      summary: Get Next Available Slot
      operationId: getNextAvailableSlot
      parameters:
        - name: bookingUID
          in: path
          required: true
          schema:
            type: string
        - name: StartTime
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/booking/external/{bookingUID}/slots/{slotId}/confirm:
    post:
      tags: [Calendar]
      summary: Confirm Booking Slot
      operationId: confirmBookingSlot
      parameters:
        - name: bookingUID
          in: path
          required: true
          schema:
            type: string
        - name: slotId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ContentPart
                - TimePart
                - AttendeeData
                - AttendeeToken
                - SharedKeyPacket
                - EmailData
                - MeetingLinkName
              properties:
                ContentPart:
                  type: string
                TimePart:
                  type: string
                AttendeeData:
                  type: string
                AttendeeToken:
                  type: string
                AttendeeSharedKeyPacket:
                  type: string
                SharedKeyPacket:
                  type: string
                EmailData:
                  type: object
                MeetingLinkName:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/booking/{bookingUID}:
    delete:
      tags: [Calendar]
      summary: Delete Booking Page
      operationId: deleteBookingPage
      parameters:
        - name: bookingUID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Calendar]
      summary: Get Booking Page Details
      operationId: getBookingPageDetails
      parameters:
        - name: bookingUID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Calendar]
      summary: Update Booking Page
      operationId: updateBookingPage
      parameters:
        - name: bookingUID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - EncryptedContent
                - EncryptedSecret
                - CalendarKeySignature
                - Slots
                - MinimumNoticeMode
                - ConflictCalendarIDs
              properties:
                EncryptedContent:
                  type: string
                EncryptedSecret:
                  type: string
                CalendarKeySignature:
                  type: string
                Slots:
                  type: array
                  items: {}
                MinimumNoticeMode:
                  type: string
                ConflictCalendarIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/directory:
    get:
      tags: [Calendar]
      summary: Get Directory Calendars
      operationId: getDirectoryCalendars
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/events:
    get:
      tags: [Calendar]
      summary: Get Event By UID
      operationId: getEventByUID
      parameters:
        - name: UID
          in: query
          schema:
            type: string
        - name: RecurrenceID
          in: query
          schema:
            type: integer
        - name: CalendarType
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/invitations:
    get:
      tags: [Calendar]
      summary: Get All Invitations
      operationId: getAllInvitations
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/keys/reset:
    post:
      tags: [Calendar]
      summary: Reset Calendars
      operationId: resetCalendars
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CalendarKeys
              properties:
                CalendarKeys:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/subscription/validate:
    post:
      tags: [Calendar]
      summary: Validate Subscription
      operationId: validateSubscription
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/timezones:
    get:
      tags: [Calendar]
      summary: Get Allowed Time Zones
      operationId: getAllowedTimeZones
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/videoconferences:
    post:
      tags: [Calendar]
      summary: Create Zoom Meeting
      operationId: createZoomMeeting
      description: Only Zoom is supported for the moment
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/vtimezones:
    get:
      tags: [Calendar]
      summary: Get Vtimezones
      operationId: getVtimezones
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}:
    delete:
      tags: [Calendar]
      summary: Remove Calendar
      operationId: removeCalendar
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Calendar]
      summary: Get Calendar
      operationId: getCalendar
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/alarms:
    get:
      tags: [Calendar]
      summary: Query Calendar Alarms
      operationId: queryCalendarAlarms
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: Start
          in: query
          schema:
            type: integer
        - name: End
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events:
    get:
      tags: [Calendar]
      summary: Query Events
      operationId: queryEvents
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/count:
    get:
      tags: [Calendar]
      summary: Get Events Count
      operationId: getEventsCount
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/ids:
    get:
      tags: [Calendar]
      summary: Query Events I Ds
      operationId: queryEventsIDs
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: Limit
          in: query
          schema:
            type: integer
        - name: AfterID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/sync:
    put:
      tags: [Calendar]
      summary: Sync Multiple Events
      operationId: syncMultipleEvents
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MemberID
                - Events
              properties:
                MemberID:
                  type: string
                IsImport:
                  type: integer
                Events:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/{eventID}:
    get:
      tags: [Calendar]
      summary: Get Event
      operationId: getEvent
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/{eventID}/attendee_delete_single_edit:
    put:
      tags: [Calendar]
      summary: Attendee Delete Single Edit
      operationId: attendeeDeleteSingleEdit
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                CalendarEventContent:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/{eventID}/attendees:
    get:
      tags: [Calendar]
      summary: Get Paginated Attendees Info
      operationId: getPaginatedAttendeesInfo
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/{eventID}/attendees/{attendeeID}:
    put:
      tags: [Calendar]
      summary: Update Attendee Partstat
      operationId: updateAttendeePartstat
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
        - name: attendeeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Status
                - UpdateTime
              properties:
                Status:
                  type: string
                UpdateTime:
                  type: string
                Comment:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/{eventID}/personal:
    put:
      tags: [Calendar]
      summary: Update Personal Event Part
      operationId: updatePersonalEventPart
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Notifications
                - Color
              properties:
                Notifications:
                  type: array
                  items: {}
                Color:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/events/{eventID}/upgrade:
    put:
      tags: [Calendar]
      summary: Upgrade P2 P Invite
      operationId: upgradeP2PInvite
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                SharedKeyPacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/invitations:
    get:
      tags: [Calendar]
      summary: Get Calendar Invitations
      operationId: getCalendarInvitations
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/invitations/{addressID}/accept:
    put:
      tags: [Calendar]
      summary: Accept Invitation
      operationId: acceptInvitation
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Signature
              properties:
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/invitations/{addressID}/join:
    post:
      tags: [Calendar]
      summary: Join Holidays Calendar
      operationId: joinHolidaysCalendar
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PassphraseKeyPacket
                - Signature
                - Color
                - DefaultFullDayNotifications
              properties:
                PassphraseKeyPacket:
                  type: string
                Signature:
                  type: string
                Color:
                  type: string
                DefaultFullDayNotifications:
                  type: array
                  items: {}
                Priority:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/invitations/{addressID}/reject:
    put:
      tags: [Calendar]
      summary: Reject Invitation
      operationId: rejectInvitation
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/invitations/{invitationID}:
    delete:
      tags: [Calendar]
      summary: Remove Invitation
      operationId: removeInvitation
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Calendar]
      summary: Get Invitation
      operationId: getInvitation
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Calendar]
      summary: Update Invitation
      operationId: updateInvitation
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Permissions:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/keys:
    post:
      tags: [Calendar]
      summary: Setup Calendar
      operationId: setupCalendar
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Signature
                - PrivateKey
                - Passphrase
              properties:
                AddressID:
                  type: string
                Signature:
                  type: string
                PrivateKey:
                  type: string
                Passphrase:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/keys/all:
    get:
      tags: [Calendar]
      summary: Get All Calendar Keys
      operationId: getAllCalendarKeys
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/keys/{keyID}:
    put:
      tags: [Calendar]
      summary: Reactivate Calendar Key
      operationId: reactivateCalendarKey
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: keyID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PrivateKey
              properties:
                PrivateKey:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/managed:
    delete:
      tags: [Calendar]
      summary: Remove Holidays Calendar
      operationId: removeHolidaysCalendar
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/members:
    get:
      tags: [Calendar]
      summary: Query Members
      operationId: queryMembers
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Calendar]
      summary: Add Member
      operationId: addMember
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Signature
                - Members
              properties:
                AddressID:
                  type: string
                Signature:
                  type: string
                Members:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/members/all:
    get:
      tags: [Calendar]
      summary: Get All Members
      operationId: getAllMembers
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/members/{memberID}:
    delete:
      tags: [Calendar]
      summary: Remove Member
      operationId: removeMember
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Calendar]
      summary: Update Member
      operationId: updateMember
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Permissions:
                  type: string
                PassphraseKeyPacket:
                  type: string
                Name:
                  type: string
                Description:
                  type: string
                Color:
                  type: string
                Display:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/members/{memberID}/permission:
    put:
      tags: [Calendar]
      summary: Update Member Permission
      operationId: updateMemberPermission
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Permissions
              properties:
                Permissions:
                  type: string
                PassphraseKeyPacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/modelevents/latest:
    get:
      tags: [Calendar]
      summary: Query Latest Model Event ID
      operationId: queryLatestModelEventID
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/modelevents/{eventID}:
    get:
      tags: [Calendar]
      summary: Query Model Events
      operationId: queryModelEvents
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/passphrases:
    get:
      tags: [Calendar]
      summary: Get Passphrases
      operationId: getPassphrases
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/settings:
    put:
      tags: [Calendar]
      summary: Update Calendar Settings
      operationId: updateCalendarSettings
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ID:
                  type: string
                CalendarID:
                  type: string
                DefaultEventDuration:
                  type: string
                DefaultPartDayNotifications:
                  type: string
                DefaultFullDayNotifications:
                  type: string
                MakesUserBusy:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/subscription:
    get:
      tags: [Calendar]
      summary: Get Subscription Parameters
      operationId: getSubscriptionParameters
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/urls:
    get:
      tags: [Calendar]
      summary: Get Public Links
      operationId: getPublicLinks
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Calendar]
      summary: Create Public Link
      operationId: createPublicLink
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AccessLevel
                - CacheKeySalt
                - CacheKeyHash
                - EncryptedPassphrase
                - EncryptedPurpose
                - EncryptedCacheKey
                - PassphraseID
              properties:
                AccessLevel:
                  type: integer
                CacheKeySalt:
                  type: string
                CacheKeyHash:
                  type: string
                EncryptedPassphrase:
                  type: string
                EncryptedPurpose:
                  type: string
                EncryptedCacheKey:
                  type: string
                PassphraseID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{calendarID}/urls/{urlID}:
    delete:
      tags: [Calendar]
      summary: Delete Public Link
      operationId: deletePublicLink
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: urlID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Calendar]
      summary: Edit Public Link
      operationId: editPublicLink
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
        - name: urlID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - calendarID
                - urlID
                - encryptedPurpose
              properties:
                calendarID:
                  type: string
                urlID:
                  type: string
                encryptedPurpose:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v1/{emailAddress}/busy-schedule:
    get:
      tags: [Calendar]
      summary: Get Busy Slots
      operationId: getBusySlots
      parameters:
        - name: emailAddress
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
          description: Min 0, Max 100. Defaults to 100
        - name: Page
          in: query
          schema:
            type: integer
          description: 0 based index. Defaults to 0
        - name: Type
          in: query
          schema:
            type: integer
        - name: Start
          in: query
          schema:
            type: integer
          description: Unix timestamp
        - name: End
          in: query
          schema:
            type: integer
          description: Unix timestamp
        - name: Timezone
          in: query
          schema:
            type: string
          description: "The timezone currently used on the calendar, will impact which events are returned: \"Timezone=Europe/Paris\""
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v2/{calendarID}/bootstrap:
    get:
      tags: [Calendar]
      summary: Get Full Calendar
      operationId: getFullCalendar
      parameters:
        - name: calendarID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v6/events/latest:
    get:
      tags: [Calendar]
      summary: Get Latest Calendar Event IDV6
      operationId: getLatestCalendarEventIDV6
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /calendar/v6/events/{eventID}:
    get:
      tags: [Calendar]
      summary: Get Calendar Events V6
      operationId: getCalendarEventsV6
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts:
    delete:
      tags: [Contacts]
      summary: Clear Contacts
      operationId: clearContacts
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Contacts]
      summary: Query Contacts
      operationId: queryContacts
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: LabelID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Contacts]
      summary: Add Contacts
      operationId: addContacts
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Contacts
                - Overwrite
              properties:
                Contacts:
                  type: array
                  items: {}
                Overwrite:
                  type: integer
                Import:
                  type: integer
                Labels:
                  type: integer
                timeout:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/delete:
    put:
      tags: [Contacts]
      summary: Delete Contacts
      operationId: deleteContacts
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/emails:
    get:
      tags: [Contacts]
      summary: Query Contact Emails
      operationId: queryContactEmails
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Email
          in: query
          schema:
            type: string
        - name: LabelID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/emails/label:
    put:
      tags: [Contacts]
      summary: Label Contact Emails
      operationId: labelContactEmails
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - ContactEmailIDs
              properties:
                LabelID:
                  type: string
                ContactEmailIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/emails/unlabel:
    put:
      tags: [Contacts]
      summary: Un Label Contact Emails
      operationId: unLabelContactEmails
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - ContactEmailIDs
              properties:
                LabelID:
                  type: string
                ContactEmailIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/emails/{contactEmailID}:
    get:
      tags: [Contacts]
      summary: Query Contact Email
      operationId: queryContactEmail
      parameters:
        - name: contactEmailID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/export:
    get:
      tags: [Contacts]
      summary: Query Contact Export
      operationId: queryContactExport
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: LabelID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/label:
    put:
      tags: [Contacts]
      summary: Label Contacts
      operationId: labelContacts
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - ContactIDs
              properties:
                LabelID:
                  type: string
                ContactIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v4/contacts/{contactID}:
    get:
      tags: [Contacts]
      summary: Get Contact
      operationId: getContact
      parameters:
        - name: contactID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Contacts]
      summary: Update Contact
      operationId: updateContact
      parameters:
        - name: contactID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Cards
              properties:
                Cards:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v6/events/latest:
    get:
      tags: [Contacts]
      summary: Get Latest Contact Event IDV6
      operationId: getLatestContactEventIDV6
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /contacts/v6/events/{eventID}:
    get:
      tags: [Contacts]
      summary: Get Contact Events V6
      operationId: getContactEventsV6
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses:
    get:
      tags: [Core]
      summary: Query Addresses
      operationId: queryAddresses
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Create Address
      operationId: createAddress
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Local
                - Domain
              properties:
                MemberID:
                  type: string
                Local:
                  type: string
                Domain:
                  type: string
                DisplayName:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/allowAddressDeletion:
    get:
      tags: [Core]
      summary: Get Allow Address Deletion
      operationId: getAllowAddressDeletion
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/canonical:
    get:
      tags: [Core]
      summary: Get Canonical Addresses
      operationId: getCanonicalAddresses
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/order:
    put:
      tags: [Core]
      summary: Update Addresses Order
      operationId: updateAddressesOrder
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/setup:
    post:
      tags: [Core]
      summary: Setup Address
      operationId: setupAddress
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Domain
                - DisplayName
              properties:
                Domain:
                  type: string
                DisplayName:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}:
    get:
      tags: [Core]
      summary: Get Address
      operationId: getAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Update Address
      operationId: updateAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                DisplayName:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/delete:
    put:
      tags: [Core]
      summary: Delete Address
      operationId: deleteAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/disable:
    put:
      tags: [Core]
      summary: Disable Address
      operationId: disableAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/enable:
    put:
      tags: [Core]
      summary: Enable Address
      operationId: enableAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/encryption:
    put:
      tags: [Core]
      summary: Update Address Flags
      operationId: updateAddressFlags
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Data
                - Signature
              properties:
                Data:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/rename/external:
    put:
      tags: [Core]
      summary: Rename External Address
      operationId: renameExternalAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Local
                - Domain
                - AddressKeys
              properties:
                Local:
                  type: string
                Domain:
                  type: string
                AddressKeys:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/rename/internal:
    put:
      tags: [Core]
      summary: Rename Internal Address
      operationId: renameInternalAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Local
                - AddressKeys
              properties:
                Local:
                  type: string
                AddressKeys:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/addresses/{addressID}/type:
    put:
      tags: [Core]
      summary: Address Type
      operationId: addressType
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
                - SignedKeyList
              properties:
                Type:
                  type: integer
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth:
    delete:
      tags: [Core]
      summary: Revoke
      operationId: revoke
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Auth
      operationId: auth
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth/2fa:
    post:
      tags: [Core]
      summary: Auth2 FA
      operationId: auth2FA
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth/cookies:
    post:
      tags: [Core]
      summary: Set Cookies
      operationId: setCookies
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - UID
                - RefreshToken
                - State
              properties:
                UID:
                  type: string
                RefreshToken:
                  type: string
                State:
                  type: string
                RedirectURI:
                  type: string
                Persistent:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth/info:
    post:
      tags: [Core]
      summary: Get Info
      operationId: getInfo
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                intent:
                  type: string
                isTesting:
                  type: boolean
                reauthScope:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth/jwt:
    post:
      tags: [Core]
      summary: Auth Jwt
      operationId: authJwt
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Token
              properties:
                Token:
                  type: object
                ClientSecret:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth/modulus:
    get:
      tags: [Core]
      summary: Get Modulus
      operationId: getModulus
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/auth/scopes:
    get:
      tags: [Core]
      summary: Query Scopes
      operationId: queryScopes
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/checklist/check-item:
    put:
      tags: [Core]
      summary: Update Checklist Item
      operationId: updateChecklistItem
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/checklist/seen-completed-list/{checklistType}:
    post:
      tags: [Core]
      summary: Seen Completed Checklist
      operationId: seenCompletedChecklist
      parameters:
        - name: checklistType
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/checklist/update-display:
    put:
      tags: [Core]
      summary: Update Checklist Display
      operationId: updateChecklistDisplay
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/checklist/{checklistType}:
    get:
      tags: [Core]
      summary: Get Checklist
      operationId: getChecklist
      parameters:
        - name: checklistType
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/connection-information:
    get:
      tags: [Core]
      summary: Get Connection Information
      operationId: getConnectionInformation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/events/latest:
    get:
      tags: [Core]
      summary: Get Latest ID
      operationId: getLatestID
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/features:
    get:
      tags: [Core]
      summary: Get Features
      operationId: getFeatures
      description: "Get all feature flags of featureCodes API route is a lot more powerfull with sorts, filters It's just not needed at this point"
      parameters:
        - name: Code
          in: query
          schema:
            type: string
        - name: Limit
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/features/{featureCode}/value:
    put:
      tags: [Core]
      summary: Update Feature Value
      operationId: updateFeatureValue
      parameters:
        - name: featureCode
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups:
    get:
      tags: [Core]
      summary: Get Groups
      operationId: getGroups
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Create Group
      operationId: createGroup
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Email
                - Permissions
                - Description
                - Flags
              properties:
                Name:
                  type: string
                Email:
                  type: string
                ParentGroup:
                  type: string
                Permissions:
                  type: integer
                Description:
                  type: string
                Flags:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/external/{jwt}:
    delete:
      tags: [Core]
      summary: Decline External Group Membership
      operationId: declineExternalGroupMembership
      parameters:
        - name: jwt
          in: path
          required: true
          schema:
            type: string
        - name: GroupID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Accept External Group Membership
      operationId: acceptExternalGroupMembership
      parameters:
        - name: jwt
          in: path
          required: true
          schema:
            type: string
        - name: GroupID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/members:
    post:
      tags: [Core]
      summary: Add Group Member
      operationId: addGroupMember
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
                - GroupID
                - Email
                - AddressSignaturePacket
              properties:
                Type:
                  type: string
                GroupID:
                  type: string
                Email:
                  type: string
                AddressSignaturePacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/members/external/{jwt}:
    get:
      tags: [Core]
      summary: Get External Group Memberships
      operationId: getExternalGroupMemberships
      parameters:
        - name: jwt
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/members/internal:
    get:
      tags: [Core]
      summary: Get Group Membership
      operationId: getGroupMembership
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/members/{groupMemberID}/keys:
    post:
      tags: [Core]
      summary: Add Group Member Keys
      operationId: addGroupMemberKeys
      parameters:
        - name: groupMemberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
                - AddressSignaturePacket
              properties:
                Email:
                  type: string
                AddressSignaturePacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/members/{groupMemberID}/resume:
    put:
      tags: [Core]
      summary: Resume Group Member
      operationId: resumeGroupMember
      parameters:
        - name: groupMemberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/members/{memberID}:
    delete:
      tags: [Core]
      summary: Delete Group Member
      operationId: deleteGroupMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Core]
      summary: Get Group Member
      operationId: getGroupMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Update Group Member
      operationId: updateGroupMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - GroupID
                - Permissions
              properties:
                GroupID:
                  type: string
                Permissions:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/owners/accept/{inviteID}:
    post:
      tags: [Core]
      summary: Accept Group Owner Invite
      operationId: acceptGroupOwnerInvite
      parameters:
        - name: inviteID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - TokenKeyPacket
                - TokenSignaturePacket
              properties:
                TokenKeyPacket:
                  type: string
                TokenSignaturePacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/owners/add/{groupMemberID}:
    post:
      tags: [Core]
      summary: Add Group Owner
      operationId: addGroupOwner
      parameters:
        - name: groupMemberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MemberID
                - TokenKeyPacket
                - TokenSignaturePacket
              properties:
                MemberID:
                  type: string
                TokenKeyPacket:
                  type: string
                TokenSignaturePacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/owners/invites:
    get:
      tags: [Core]
      summary: Get Group Owner Invites
      operationId: getGroupOwnerInvites
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Invite Group Owner
      operationId: inviteGroupOwner
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - GroupMemberID
                - EncryptionAddress
                - TokenKeyPacket
                - TokenSignaturePacket
              properties:
                GroupMemberID:
                  type: string
                EncryptionAddress:
                  type: string
                TokenKeyPacket:
                  type: string
                TokenSignaturePacket:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/{groupID}:
    delete:
      tags: [Core]
      summary: Delete Group
      operationId: deleteGroup
      parameters:
        - name: groupID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Core]
      summary: Get Group
      operationId: getGroup
      parameters:
        - name: groupID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Edit Group
      operationId: editGroup
      parameters:
        - name: groupID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
                Email:
                  type: string
                ParentGroup:
                  type: string
                Permissions:
                  type: string
                Description:
                  type: string
                Flags:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/{groupID}/members:
    get:
      tags: [Core]
      summary: Get Group Members
      operationId: getGroupMembers
      parameters:
        - name: groupID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/groups/{groupMemberID}/reinvite:
    put:
      tags: [Core]
      summary: Reinvite Group Member
      operationId: reinviteGroupMember
      parameters:
        - name: groupMemberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/images:
    get:
      tags: [Core]
      summary: Get Image
      operationId: getImage
      parameters:
        - name: Url
          in: query
          schema:
            type: string
        - name: DryRun
          in: query
          schema:
            type: integer
        - name: UID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/images/logo:
    get:
      tags: [Core]
      summary: Get Logo
      operationId: getLogo
      description: Get logo corresponding to address
      parameters:
        - name: Address
          in: query
          schema:
            type: string
        - name: Domain
          in: query
          schema:
            type: string
        - name: Size
          in: query
          schema:
            type: integer
        - name: BimiSelector
          in: query
          schema:
            type: string
        - name: Mode
          in: query
          schema:
            type: string
        - name: UID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/invites/check:
    post:
      tags: [Core]
      summary: Check Invitation
      operationId: checkInvitation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Selector
                - Token
                - Type
              properties:
                Selector:
                  type: string
                Token:
                  type: string
                Type:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys:
    post:
      tags: [Core]
      summary: Create Address Key Route
      operationId: createAddressKeyRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Primary
                - PrivateKey
                - SignedKeyList
              properties:
                AddressID:
                  type: string
                Primary:
                  type: integer
                PrivateKey:
                  type: string
                SignedKeyList:
                  type: object
                AddressForwardingID:
                  type: string
                GroupMemberID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/address:
    post:
      tags: [Core]
      summary: Create Address Key Route V2
      operationId: createAddressKeyRouteV2
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Token
                - Signature
                - AddressID
                - Primary
                - PrivateKey
                - SignedKeyList
              properties:
                Token:
                  type: string
                Signature:
                  type: string
                AddressID:
                  type: string
                Primary:
                  type: integer
                PrivateKey:
                  type: string
                SignedKeyList:
                  type: object
                AddressForwardingID:
                  type: string
                GroupMemberID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/address/active:
    put:
      tags: [Core]
      summary: Update Address Active Keys Route
      operationId: updateAddressActiveKeysRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Keys
                - SignedKeyList
              properties:
                AddressID:
                  type: string
                Keys:
                  type: array
                  items: {}
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/address/{ID}:
    put:
      tags: [Core]
      summary: Activate Key Route V2
      operationId: activateKeyRouteV2
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Signature
                - Token
                - ID
                - PrivateKey
                - SignedKeyList
              properties:
                Signature:
                  type: string
                Token:
                  type: string
                ID:
                  type: string
                PrivateKey:
                  type: string
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/address/{ID}/delete:
    post:
      tags: [Core]
      summary: Remove Address Key Route
      operationId: removeAddressKeyRoute
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - SignedKeyList
              properties:
                ID:
                  type: string
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/all:
    get:
      tags: [Core]
      summary: Get All Public Keys
      operationId: getAllPublicKeys
      parameters:
        - name: Email
          in: query
          schema:
            type: string
        - name: InternalOnly
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/group:
    post:
      tags: [Core]
      summary: Create Group Address Key Route
      operationId: createGroupAddressKeyRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - PrivateKey
                - OrgToken
                - OrgSignature
                - SignedKeyList
              properties:
                AddressID:
                  type: string
                PrivateKey:
                  type: string
                OrgToken:
                  type: string
                OrgSignature:
                  type: string
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/migrate:
    post:
      tags: [Core]
      summary: Migrate Address Keys Route
      operationId: migrateAddressKeysRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressKeys
                - SignedKeyLists
              properties:
                AddressKeys:
                  type: array
                  items: {}
                SignedKeyLists:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/private:
    put:
      tags: [Core]
      summary: Update Private Key Route
      operationId: updatePrivateKeyRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - KeySalt
              properties:
                KeySalt:
                  type: string
                OrganizationKey:
                  type: string
                PersistPasswordScope:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/private/upgrade:
    post:
      tags: [Core]
      summary: Upgrade Keys Route
      operationId: upgradeKeysRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - KeySalt
              properties:
                KeySalt:
                  type: string
                OrganizationKey:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/reset:
    post:
      tags: [Core]
      summary: Reset Keys Route
      operationId: resetKeysRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Username
                - Token
                - KeySalt
              properties:
                Username:
                  type: string
                Token:
                  type: string
                KeySalt:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/salts:
    get:
      tags: [Core]
      summary: Get Key Salts
      operationId: getKeySalts
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/setup:
    post:
      tags: [Core]
      summary: Setup Keys
      operationId: setupKeys
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PrimaryKey
                - KeySalt
                - AddressKeys
              properties:
                PrimaryKey:
                  type: string
                KeySalt:
                  type: string
                AddressKeys:
                  type: array
                  items: {}
                EncryptedSecret:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      x-timeout: 60000
  /core/v4/keys/signedkeylists:
    get:
      tags: [Core]
      summary: Get Signed Key Lists Route
      operationId: getSignedKeyListsRoute
      parameters:
        - name: AfterRevision
          in: query
          schema:
            type: integer
        - name: Identifier
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Update Signed Key List Route
      operationId: updateSignedKeyListRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - SignedKeyList
              properties:
                AddressID:
                  type: string
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/signedkeylists/signature:
    put:
      tags: [Core]
      summary: Update Signed Key List Signature Route
      operationId: updateSignedKeyListSignatureRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Revision
                - Signature
              properties:
                AddressID:
                  type: string
                Revision:
                  type: integer
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/tokens:
    put:
      tags: [Core]
      summary: Replace Address Tokens
      operationId: replaceAddressTokens
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressKeyTokens
              properties:
                AddressKeyTokens:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/user:
    post:
      tags: [Core]
      summary: Create User Key Route
      operationId: createUserKeyRoute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Primary
                - PrivateKey
              properties:
                Primary:
                  type: integer
                PrivateKey:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/user/{ID}:
    delete:
      tags: [Core]
      summary: Remove User Key Route
      operationId: removeUserKeyRoute
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Reactivate User Key Route V2
      operationId: reactivateUserKeyRouteV2
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - PrivateKey
                - AddressKeyFingerprints
                - SignedKeyLists
              properties:
                ID:
                  type: string
                PrivateKey:
                  type: string
                AddressKeyFingerprints:
                  type: array
                  items: {}
                SignedKeyLists:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/{ID}/activate:
    put:
      tags: [Core]
      summary: Activate Key Route
      operationId: activateKeyRoute
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - PrivateKey
                - SignedKeyList
              properties:
                ID:
                  type: string
                PrivateKey:
                  type: string
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/{ID}/flags:
    put:
      tags: [Core]
      summary: Set Key Flags Route
      operationId: setKeyFlagsRoute
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - Flags
                - SignedKeyList
              properties:
                ID:
                  type: string
                Flags:
                  type: integer
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/keys/{ID}/primary:
    put:
      tags: [Core]
      summary: Set Key Primary Route
      operationId: setKeyPrimaryRoute
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - SignedKeyList
              properties:
                ID:
                  type: string
                SignedKeyList:
                  type: object
                Primary:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels:
    delete:
      tags: [Core]
      summary: Delete Labels
      operationId: deleteLabels
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Core]
      summary: Get
      operationId: get
      parameters:
        - name: Type
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Create
      operationId: create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
                - Name
                - Color
              properties:
                Type:
                  type: integer
                Name:
                  type: string
                Color:
                  type: string
                ParentID:
                  type: string
                Notify:
                  type: integer
                Expanded:
                  type: integer
                Sticky:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels/available:
    get:
      tags: [Core]
      summary: Check Label Availability
      operationId: checkLabelAvailability
      parameters:
        - name: Name
          in: query
          schema:
            type: string
        - name: Type
          in: query
          schema:
            type: integer
        - name: ParentID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels/by-ids:
    post:
      tags: [Core]
      summary: Get By Ids
      operationId: getByIds
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels/order:
    put:
      tags: [Core]
      summary: Order
      operationId: order
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
                - LabelIDs
              properties:
                Type:
                  type: integer
                LabelIDs:
                  type: array
                  items: {}
                ParentID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels/order/tree:
    put:
      tags: [Core]
      summary: Order All Folders
      operationId: orderAllFolders
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels/{labelID}:
    delete:
      tags: [Core]
      summary: Delete Label
      operationId: deleteLabel
      parameters:
        - name: labelID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Update Label
      operationId: updateLabel
      parameters:
        - name: labelID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Color
              properties:
                Name:
                  type: string
                Color:
                  type: string
                Notify:
                  type: integer
                ParentID:
                  type: string
                Sticky:
                  type: integer
                Expanded:
                  type: integer
                Display:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/labels/{labelId}/seen:
    post:
      tags: [Core]
      summary: Update Last Seen Event ID
      operationId: updateLastSeenEventID
      parameters:
        - name: labelId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LastEventID
              properties:
                LastEventID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/logs/auth:
    delete:
      tags: [Core]
      summary: Clear Logs
      operationId: clearLogs
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Core]
      summary: Query Logs
      operationId: queryLogs
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members:
    get:
      tags: [Core]
      summary: Query Members
      operationId: queryMembers
      parameters:
        - name: IncludeAddresses
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      x-timeout: MEMBERS_TIMEOUT
    post:
      tags: [Core]
      summary: Create Member
      operationId: createMember
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - MaxSpace
                - MaxVPN
                - MaxAI
                - TemporaryPassword
              properties:
                Name:
                  type: string
                MaxSpace:
                  type: integer
                MaxVPN:
                  type: integer
                MaxAI:
                  type: integer
                TemporaryPassword:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/addresses/available:
    post:
      tags: [Core]
      summary: Check Member Address Availability
      operationId: checkMemberAddressAvailability
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Local
                - Domain
              properties:
                Local:
                  type: string
                Domain:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/devices/pending:
    get:
      tags: [Core]
      summary: Get Pending Member Auth Devices Config
      operationId: getPendingMemberAuthDevicesConfig
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/invitations:
    post:
      tags: [Core]
      summary: Invite Member
      operationId: inviteMember
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - maxSpace
              properties:
                email:
                  type: string
                maxSpace:
                  type: integer
                maxAI:
                  type: integer
                maxLumo:
                  type: integer
                maxVPN:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/invitations/{memberID}:
    put:
      tags: [Core]
      summary: Edit Member Invitation
      operationId: editMemberInvitation
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/me:
    get:
      tags: [Core]
      summary: Get Self Member
      operationId: getSelfMember
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/me/unprivatize:
    delete:
      tags: [Core]
      summary: Delete Member Unprivatization Info
      operationId: deleteMemberUnprivatizationInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Core]
      summary: Query Member Unprivatization Info
      operationId: queryMemberUnprivatizationInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Accept Member Unprivatization Info
      operationId: acceptMemberUnprivatizationInfo
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - OrgUserKeys
                - OrgActivationToken
              properties:
                OrgUserKeys:
                  type: array
                  items: {}
                OrgActivationToken:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/search:
    get:
      tags: [Core]
      summary: Search Members
      operationId: searchMembers
      parameters:
        - name: q
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      x-timeout: MEMBERS_TIMEOUT
  /core/v4/members/search/summary:
    get:
      tags: [Core]
      summary: Search Members Summary
      operationId: searchMembersSummary
      parameters:
        - name: q
          in: query
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
        - name: excludeGroupId
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{MemberID}/devices/reset:
    post:
      tags: [Core]
      summary: Activate Member Auth Device Config
      operationId: activateMemberAuthDeviceConfig
      parameters:
        - name: MemberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MemberID
                - AuthDeviceID
                - EncryptedSecret
                - UserKeys
              properties:
                MemberID:
                  type: string
                AuthDeviceID:
                  type: string
                EncryptedSecret:
                  type: string
                UserKeys:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{MemberID}/devices/{DeviceID}/reject:
    put:
      tags: [Core]
      summary: Reject Member Auth Device Config
      operationId: rejectMemberAuthDeviceConfig
      parameters:
        - name: MemberID
          in: path
          required: true
          schema:
            type: string
        - name: DeviceID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}:
    delete:
      tags: [Core]
      summary: Delete Member
      operationId: deleteMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Core]
      summary: Get Member
      operationId: getMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/addresses:
    get:
      tags: [Core]
      summary: Query Addresses
      operationId: queryAddresses
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      x-timeout: MEMBERS_TIMEOUT
    post:
      tags: [Core]
      summary: Create Member Address
      operationId: createMemberAddress
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Local
                - Domain
              properties:
                Local:
                  type: string
                Domain:
                  type: string
                DisableE2EE:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/ai:
    put:
      tags: [Core]
      summary: Update AI
      operationId: updateAI
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/auth:
    post:
      tags: [Core]
      summary: Auth Member
      operationId: authMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Unlock:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/disable:
    put:
      tags: [Core]
      summary: Disable Member
      operationId: disableMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/enable:
    put:
      tags: [Core]
      summary: Enable Member
      operationId: enableMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/keys/unprivatize:
    post:
      tags: [Core]
      summary: Unprivatize Member Keys Route
      operationId: unprivatizeMemberKeysRoute
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - UserKeys
                - AddressKeys
              properties:
                UserKeys:
                  type: array
                  items: {}
                AddressKeys:
                  type: array
                  items: {}
                OrganizationKeyActivation:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/lumo:
    put:
      tags: [Core]
      summary: Update Lumo
      operationId: updateLumo
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/name:
    put:
      tags: [Core]
      summary: Update Name
      operationId: updateName
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/privatize:
    put:
      tags: [Core]
      summary: Privatize Member
      operationId: privatizeMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/quota:
    put:
      tags: [Core]
      summary: Update Quota
      operationId: updateQuota
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/role:
    put:
      tags: [Core]
      summary: Update Role
      operationId: updateRole
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/saml:
    delete:
      tags: [Core]
      summary: Remove SSO Saml Member
      operationId: removeSSOSamlMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Add SSO Saml Member
      operationId: addSSOSamlMember
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/unprivatize:
    delete:
      tags: [Core]
      summary: Delete Unprivatization Request
      operationId: deleteUnprivatizationRequest
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Request Unprivatization
      operationId: requestUnprivatization
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - InvitationData
                - InvitationSignature
              properties:
                InvitationData:
                  type: string
                InvitationSignature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/unprivatize/resend:
    post:
      tags: [Core]
      summary: Resend Unprivatization Link
      operationId: resendUnprivatizationLink
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/members/{memberID}/vpn:
    put:
      tags: [Core]
      summary: Update VPN
      operationId: updateVPN
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/nps/dismiss:
    post:
      tags: [Core]
      summary: Dismiss Nps
      operationId: dismissNps
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/nps/submit:
    post:
      tags: [Core]
      summary: Submit Nps
      operationId: submitNps
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Score
              properties:
                Score:
                  type: integer
                Comment:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations:
    get:
      tags: [Core]
      summary: Get Organization
      operationId: getOrganization
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/2fa/remind:
    post:
      tags: [Core]
      summary: Send Email Reminder Two FA
      operationId: sendEmailReminderTwoFA
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/keys:
    get:
      tags: [Core]
      summary: Get Organization Keys
      operationId: getOrganizationKeys
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Update Organization Keys Legacy
      operationId: updateOrganizationKeysLegacy
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PrivateKey
                - BackupPrivateKey
                - BackupKeySalt
                - Tokens
                - GroupAddressKeyTokens
              properties:
                PrivateKey:
                  type: string
                BackupPrivateKey:
                  type: string
                BackupKeySalt:
                  type: string
                Tokens:
                  type: array
                  items: {}
                GroupAddressKeyTokens:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/keys/activate:
    put:
      tags: [Core]
      summary: Activate Passwordless Key
      operationId: activatePasswordlessKey
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - TokenKeyPacket
                - Signature
              properties:
                TokenKeyPacket:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/keys/backup:
    get:
      tags: [Core]
      summary: Get Organization Backup Keys
      operationId: getOrganizationBackupKeys
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Update Backup Key
      operationId: updateBackupKey
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PrivateKey
                - KeySalt
              properties:
                PrivateKey:
                  type: string
                KeySalt:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/keys/migrate:
    post:
      tags: [Core]
      summary: Migrate Passwordless Organization Key
      operationId: migratePasswordlessOrganizationKey
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AdminInvitations
                - Token
                - PrivateKey
                - Signature
                - AdminActivations
              properties:
                AdminInvitations:
                  type: array
                  items: {}
                Token:
                  type: string
                PrivateKey:
                  type: string
                Signature:
                  type: string
                AdminActivations:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/keys/signature:
    get:
      tags: [Core]
      summary: Get Organization Identity
      operationId: getOrganizationIdentity
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Upload Organization Key Signature
      operationId: uploadOrganizationKeySignature
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Signature
              properties:
                AddressID:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/logo/{id}:
    get:
      tags: [Core]
      summary: Get Organization Logo
      operationId: getOrganizationLogo
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/membership:
    delete:
      tags: [Core]
      summary: Leave Organisation
      operationId: leaveOrganisation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/name:
    put:
      tags: [Core]
      summary: Update Organization Name
      operationId: updateOrganizationName
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/require2fa:
    delete:
      tags: [Core]
      summary: Query Remove Two FA
      operationId: queryRemoveTwoFA
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Query Enforce Two FA
      operationId: queryEnforceTwoFA
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/scim:
    get:
      tags: [Core]
      summary: Get SCIM Info
      operationId: getSCIMInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Setup SCIM
      operationId: setupSCIM
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Password
              properties:
                Password:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Update SCIM
      operationId: updateSCIM
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - State
              properties:
                State:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/settings:
    get:
      tags: [Core]
      summary: Get Organization Settings
      operationId: getOrganizationSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Update Organization Settings
      operationId: updateOrganizationSettings
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ShowName:
                  type: boolean
                ShowScribeWritingAssistant:
                  type: boolean
                VideoConferencingEnabled:
                  type: boolean
                MailCategoryViewEnabled:
                  type: boolean
                SSOBackupPasswordDisabled:
                  type: boolean
                PasswordReminderEnforced:
                  type: boolean
                AllowedProducts:
                  type: array
                  items: {}
                PasswordPolicies:
                  type: array
                  items: {}
                InvoiceEmail:
                  type: string
                InvoiceEmailState:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/settings/logo:
    delete:
      tags: [Core]
      summary: Delete Organization Logo
      operationId: deleteOrganizationLogo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Update Organization Logo
      operationId: updateOrganizationLogo
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/subsidiaries:
    get:
      tags: [Core]
      summary: Get Msp Subsidiaries
      operationId: getMspSubsidiaries
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Create Msp Subsidiary
      operationId: createMspSubsidiary
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - MaxMembers
                - ParentOrgToken
                - ParentOrgSignature
                - PrivateKey
                - OrganizationIdentitySignature
                - OrganizationIdentityAddressID
              properties:
                Name:
                  type: string
                MaxMembers:
                  type: integer
                ParentOrgToken:
                  type: string
                ParentOrgSignature:
                  type: string
                PrivateKey:
                  type: string
                OrganizationIdentitySignature:
                  type: string
                OrganizationIdentityAddressID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/subsidiaries/{id}:
    put:
      tags: [Core]
      summary: Update Msp Subsidiary
      operationId: updateMspSubsidiary
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - MaxMembers
              properties:
                Name:
                  type: string
                MaxMembers:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/subsidiaries/{id}/disable:
    post:
      tags: [Core]
      summary: Disable Msp Subsidiary
      operationId: disableMspSubsidiary
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/subsidiaries/{id}/enable:
    post:
      tags: [Core]
      summary: Enable Msp Subsidiary
      operationId: enableMspSubsidiary
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/{mspId}/subsidiaries/billing-periods:
    get:
      tags: [Core]
      summary: Get Msp Billing Periods
      operationId: getMspBillingPeriods
      parameters:
        - name: mspId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/{mspId}/subsidiaries/billing-summary/cost:
    get:
      tags: [Core]
      summary: Get Msp Billing Summary
      operationId: getMspBillingSummary
      parameters:
        - name: mspId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/{mspId}/subsidiaries/daily-usage:
    get:
      tags: [Core]
      summary: Get Msp Daily Usage
      operationId: getMspDailyUsage
      parameters:
        - name: mspId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/organizations/{mspId}/subsidiaries/{type}/csv:
    get:
      tags: [Core]
      summary: Get Msp Csv Report
      operationId: getMspCsvReport
      parameters:
        - name: mspId
          in: path
          required: true
          schema:
            type: string
        - name: type
          in: path
          required: true
          schema:
            type: string
        - name: Month
          in: query
          schema:
            type: integer
        - name: Year
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/referrals:
    get:
      tags: [Core]
      summary: Get Referrals
      operationId: getReferrals
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Send Email Invitation
      operationId: sendEmailInvitation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - emails
              properties:
                emails:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/referrals/identifiers/{identifier}:
    get:
      tags: [Core]
      summary: Check Referrer
      operationId: checkReferrer
      parameters:
        - name: identifier
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/referrals/info:
    get:
      tags: [Core]
      summary: Get Referral Info
      operationId: getReferralInfo
      description: Get referral info
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/referrals/register:
    post:
      tags: [Core]
      summary: Post Referral Registration
      operationId: postReferralRegistration
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - plan
                - referralData
                - referralRegistrationSubscription
              properties:
                plan:
                  type: object
                referralData:
                  type: object
                referralRegistrationSubscription:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/referrals/status:
    get:
      tags: [Core]
      summary: Get Referrals Status
      operationId: getReferralsStatus
      description: Get current user referral status
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reports/bug:
    post:
      tags: [Core]
      summary: Report Bug
      operationId: reportBug
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ClientType
                - Client
                - ClientVersion
                - Title
                - Description
                - Email
                - Username
                - OS
                - OSVersion
                - Browser
                - BrowserVersion
                - Resolution
                - DeviceName
                - DeviceModel
              properties:
                ClientType:
                  type: integer
                Client:
                  type: string
                ClientVersion:
                  type: string
                Title:
                  type: string
                Description:
                  type: string
                Email:
                  type: string
                Username:
                  type: string
                OS:
                  type: string
                OSVersion:
                  type: string
                Browser:
                  type: string
                BrowserVersion:
                  type: string
                Resolution:
                  type: string
                DeviceName:
                  type: string
                DeviceModel:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reports/bug/{ticketID}:
    delete:
      tags: [Core]
      summary: Close Ticket
      operationId: closeTicket
      parameters:
        - name: ticketID
          in: path
          required: true
          schema:
            type: string
        - name: RequesterID
          in: query
          schema:
            type: integer
        - name: CreatedAt
          in: query
          schema:
            type: string
        - name: BrandID
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reports/cancel-plan:
    post:
      tags: [Core]
      summary: Report Cancel Plan
      operationId: reportCancelPlan
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Reason
                - Message
                - Email
                - OS
                - OSVersion
                - Browser
                - BrowserVersion
                - Client
                - ClientVersion
                - ClientType
                - Tags
              properties:
                Reason:
                  type: string
                Message:
                  type: string
                Email:
                  type: string
                OS:
                  type: string
                OSVersion:
                  type: string
                Browser:
                  type: string
                BrowserVersion:
                  type: string
                Client:
                  type: string
                ClientVersion:
                  type: string
                ClientType:
                  type: integer
                Tags:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reports/phishing:
    post:
      tags: [Core]
      summary: Report Phishing
      operationId: reportPhishing
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MIMEType
              properties:
                MessageID:
                  type: string
                MIMEType:
                  type: string
                Body:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reset:
    post:
      tags: [Core]
      summary: Request Login Reset Token
      operationId: requestLoginResetToken
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reset/username:
    post:
      tags: [Core]
      summary: Request Username
      operationId: requestUsername
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/reset/{username}/{token}:
    get:
      tags: [Core]
      summary: Validate Reset Token
      operationId: validateResetToken
      parameters:
        - name: username
          in: path
          required: true
          schema:
            type: string
        - name: token
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/configs:
    get:
      tags: [Core]
      summary: Get SAML Configs
      operationId: getSAMLConfigs
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/configs/{uid}/delete:
    put:
      tags: [Core]
      summary: Remove SAML Config
      operationId: removeSAMLConfig
      parameters:
        - name: uid
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/configs/{uid}/fields:
    put:
      tags: [Core]
      summary: Update SAML Config
      operationId: updateSAMLConfig
      parameters:
        - name: uid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DomainID
                - SSOURL
                - SSOEntityID
                - Certificate
              properties:
                DomainID:
                  type: string
                SSOURL:
                  type: string
                SSOEntityID:
                  type: string
                Certificate:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/edugain/info:
    get:
      tags: [Core]
      summary: Get SAML Edugain Info
      operationId: getSAMLEdugainInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/setup/fields:
    post:
      tags: [Core]
      summary: Setup SAML Fields
      operationId: setupSAMLFields
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DomainID
                - SSOURL
                - SSOEntityID
                - Certificate
              properties:
                DomainID:
                  type: string
                SSOURL:
                  type: string
                SSOEntityID:
                  type: string
                Certificate:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/setup/url:
    post:
      tags: [Core]
      summary: Setup SAML Url
      operationId: setupSAMLUrl
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DomainID
                - MetadataURL
              properties:
                DomainID:
                  type: string
                MetadataURL:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/setup/xml:
    post:
      tags: [Core]
      summary: Setup SAML Xml
      operationId: setupSAMLXml
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DomainID
                - XML
              properties:
                DomainID:
                  type: string
                XML:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/saml/sp/info:
    get:
      tags: [Core]
      summary: Get SAML Static Info
      operationId: getSAMLStaticInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings:
    get:
      tags: [Core]
      summary: Get Settings
      operationId: getSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/2fa:
    put:
      tags: [Core]
      summary: Disable2 FA
      operationId: disable2FA
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/2fa/register:
    get:
      tags: [Core]
      summary: Get Security Key Challenge
      operationId: getSecurityKeyChallenge
      parameters:
        - name: CrossPlatform
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Register Security Key
      operationId: registerSecurityKey
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - RegistrationOptions
                - ClientData
                - AttestationObject
                - Transports
                - Name
              properties:
                RegistrationOptions:
                  type: object
                ClientData:
                  type: string
                AttestationObject:
                  type: string
                Transports:
                  type: array
                  items: {}
                Name:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/2fa/totp:
    post:
      tags: [Core]
      summary: Setup Totp
      operationId: setupTotp
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Disable Totp
      operationId: disableTotp
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/2fa/totp/secret:
    get:
      tags: [Core]
      summary: Get Setup Totp Secret
      operationId: getSetupTotpSecret
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/2fa/{credentialID}/remove:
    post:
      tags: [Core]
      summary: Remove Security Key
      operationId: removeSecurityKey
      parameters:
        - name: credentialID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/2fa/{credentialID}/rename:
    put:
      tags: [Core]
      summary: Rename Security Key
      operationId: renameSecurityKey
      parameters:
        - name: credentialID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
              properties:
                Name:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/ai-assistant-flags:
    put:
      tags: [Core]
      summary: Update AI Assistant
      operationId: updateAIAssistant
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/breachalerts:
    delete:
      tags: [Core]
      summary: Disable Breach Alert
      operationId: disableBreachAlert
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Enable Breach Alert
      operationId: enableBreachAlert
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/crashreports:
    put:
      tags: [Core]
      summary: Update Crash Reports
      operationId: updateCrashReports
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CrashReports
              properties:
                CrashReports:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/dateformat:
    put:
      tags: [Core]
      summary: Update Date Format
      operationId: updateDateFormat
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/density:
    put:
      tags: [Core]
      summary: Update Density
      operationId: updateDensity
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/devicerecovery:
    put:
      tags: [Core]
      summary: Update Device Recovery
      operationId: updateDeviceRecovery
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DeviceRecovery
              properties:
                DeviceRecovery:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/earlyaccess:
    put:
      tags: [Core]
      summary: Update Early Access
      operationId: updateEarlyAccess
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - EarlyAccess
              properties:
                EarlyAccess:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/email:
    put:
      tags: [Core]
      summary: Update Email
      operationId: updateEmail
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
              properties:
                Email:
                  type: string
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/email/reset:
    put:
      tags: [Core]
      summary: Update Reset Email
      operationId: updateResetEmail
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Reset
              properties:
                Reset:
                  type: integer
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/flags:
    put:
      tags: [Core]
      summary: Update Flags
      operationId: updateFlags
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Welcomed:
                  type: string
                SupportPgpV6Keys:
                  type: string
                EdmOptOut:
                  type: string
                DisplayTrialEndModal:
                  type: string
                PasswordReminderOptOut:
                  type: string
                Fido2CredentialsPinOptIn:
                  type: string
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/hide-side-panel:
    put:
      tags: [Core]
      summary: Update Hide Drawer
      operationId: updateHideDrawer
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/highsecurity:
    delete:
      tags: [Core]
      summary: Disable High Security
      operationId: disableHighSecurity
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Enable High Security
      operationId: enableHighSecurity
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/highsecurity/summary/email:
    delete:
      tags: [Core]
      summary: Delete Summary Email For High Security
      operationId: deleteSummaryEmailForHighSecurity
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Update Summary Email For High Security
      operationId: updateSummaryEmailForHighSecurity
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/invoicetext:
    put:
      tags: [Core]
      summary: Update Invoice Text
      operationId: updateInvoiceText
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/locale:
    put:
      tags: [Core]
      summary: Update Locale
      operationId: updateLocale
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/logauth:
    put:
      tags: [Core]
      summary: Update Log Auth
      operationId: updateLogAuth
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/mnemonic:
    get:
      tags: [Core]
      summary: Get Mnemonic User Keys
      operationId: getMnemonicUserKeys
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Update Mnemonic Phrase
      operationId: updateMnemonicPhrase
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MnemonicUserKeys
                - MnemonicSalt
                - MnemonicAuth
              properties:
                MnemonicUserKeys:
                  type: array
                  items: {}
                MnemonicSalt:
                  type: string
                MnemonicAuth:
                  type: object
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/mnemonic/disable:
    post:
      tags: [Core]
      summary: Disable Mnemonic Phrase
      operationId: disableMnemonicPhrase
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/mnemonic/reactivate:
    put:
      tags: [Core]
      summary: Reactivate Mnemonic Phrase
      operationId: reactivateMnemonicPhrase
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MnemonicUserKeys
                - MnemonicSalt
                - MnemonicAuth
              properties:
                MnemonicUserKeys:
                  type: array
                  items: {}
                MnemonicSalt:
                  type: string
                MnemonicAuth:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/mnemonic/reset:
    get:
      tags: [Core]
      summary: Get Mnemonic Reset
      operationId: getMnemonicReset
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Mnemonic Reset
      operationId: mnemonicReset
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - UserKeys
                - KeysSalt
              properties:
                UserKeys:
                  type: array
                  items: {}
                KeysSalt:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/news:
    patch:
      tags: [Core]
      summary: Patch News
      operationId: patchNews
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Announcements:
                  type: string
                Features:
                  type: string
                Newsletter:
                  type: string
                Beta:
                  type: string
                Business:
                  type: string
                Offers:
                  type: string
                NewEmailNotif:
                  type: string
                Onboarding:
                  type: string
                UserSurveys:
                  type: string
                InboxNews:
                  type: string
                VpnNews:
                  type: string
                DriveNews:
                  type: string
                PassNews:
                  type: string
                WalletNews:
                  type: string
                LumoNews:
                  type: string
                MeetNews:
                  type: string
                InAppNotifications:
                  type: string
                AccountRecovery:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/news/external:
    get:
      tags: [Core]
      summary: Get News External
      operationId: getNewsExternal
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    patch:
      tags: [Core]
      summary: Patch News External
      operationId: patchNewsExternal
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Announcements:
                  type: string
                Features:
                  type: string
                Newsletter:
                  type: string
                Beta:
                  type: string
                Business:
                  type: string
                Offers:
                  type: string
                NewEmailNotif:
                  type: string
                Onboarding:
                  type: string
                UserSurveys:
                  type: string
                InboxNews:
                  type: string
                VpnNews:
                  type: string
                DriveNews:
                  type: string
                PassNews:
                  type: string
                WalletNews:
                  type: string
                LumoNews:
                  type: string
                MeetNews:
                  type: string
                InAppNotifications:
                  type: string
                AccountRecovery:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/password:
    put:
      tags: [Core]
      summary: Update Password
      operationId: updatePassword
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PersistPasswordScope
              properties:
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/password/upgrade:
    put:
      tags: [Core]
      summary: Upgrade Password
      operationId: upgradePassword
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/phone:
    put:
      tags: [Core]
      summary: Update Phone
      operationId: updatePhone
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Phone
              properties:
                Phone:
                  type: string
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/phone/reset:
    put:
      tags: [Core]
      summary: Update Reset Phone
      operationId: updateResetPhone
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Reset
              properties:
                Reset:
                  type: integer
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/product-disabled:
    put:
      tags: [Core]
      summary: Set Product Disabled
      operationId: setProductDisabled
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Product
                - Disabled
              properties:
                Product:
                  type: integer
                Disabled:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/recovery/secret:
    delete:
      tags: [Core]
      summary: Delete Recovery Secrets
      operationId: deleteRecoverySecrets
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Set New Recovery Secret
      operationId: setNewRecoverySecret
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - RecoverySecret
                - Signature
              properties:
                RecoverySecret:
                  type: string
                Signature:
                  type: string
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/sessionaccountrecovery:
    put:
      tags: [Core]
      summary: Update Session Account Recovery
      operationId: updateSessionAccountRecovery
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SessionAccountRecovery
              properties:
                SessionAccountRecovery:
                  type: integer
                PersistPasswordScope:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/telemetry:
    put:
      tags: [Core]
      summary: Update Telemetry
      operationId: updateTelemetry
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Telemetry
              properties:
                Telemetry:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/theme:
    put:
      tags: [Core]
      summary: Update Theme
      operationId: updateTheme
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Mode
                - LightTheme
                - DarkTheme
                - FontSize
                - FontFace
                - Features
              properties:
                Mode:
                  type: integer
                LightTheme:
                  type: integer
                DarkTheme:
                  type: integer
                FontSize:
                  type: integer
                FontFace:
                  type: integer
                Features:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/timeformat:
    put:
      tags: [Core]
      summary: Update Time Format
      operationId: updateTimeFormat
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/username:
    put:
      tags: [Core]
      summary: Update Username
      operationId: updateUsername
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Username
              properties:
                Username:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/weekstart:
    put:
      tags: [Core]
      summary: Update Week Start
      operationId: updateWeekStart
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/settings/welcome:
    put:
      tags: [Core]
      summary: Update Welcome Flags
      operationId: updateWelcomeFlags
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/support/schedulecall:
    get:
      tags: [Core]
      summary: Schedule Call
      operationId: scheduleCall
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/trials/{referralIdentifier}:
    get:
      tags: [Core]
      summary: List Eligible Trials
      operationId: listEligibleTrials
      description: List eligible trial plans for a referral identifier
      parameters:
        - name: referralIdentifier
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users:
    get:
      tags: [Core]
      summary: Get User
      operationId: getUser
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Query Create User
      operationId: queryCreateUser
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Username
                - Type
                - VisitorId
              properties:
                Username:
                  type: string
                Domain:
                  type: string
                Email:
                  type: string
                Phone:
                  type: string
                Type:
                  type: integer
                  description: 1 = mail, 2 = VPN
                Referrer:
                  type: string
                ReferralIdentifier:
                  type: string
                ReferralID:
                  type: string
                  description: Invite
                TokenPayment:
                  type: string
                Payload:
                  type: object
                Salt:
                  type: string
                VisitorId:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/available:
    get:
      tags: [Core]
      summary: Query Check Username Availability
      operationId: queryCheckUsernameAvailability
      parameters:
        - name: Name
          in: query
          schema:
            type: string
        - name: ParseDomain
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/availableExternal:
    get:
      tags: [Core]
      summary: Query Check Email Availability
      operationId: queryCheckEmailAvailability
      parameters:
        - name: Name
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/check:
    put:
      tags: [Core]
      summary: Query Check Verification Code
      operationId: queryCheckVerificationCode
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/code:
    post:
      tags: [Core]
      summary: Query Verification Code
      operationId: queryVerificationCode
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Address:
                  type: string
                Phone:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/delete:
    get:
      tags: [Core]
      summary: Can Delete
      operationId: canDelete
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Core]
      summary: Delete User
      operationId: deleteUser
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Reason:
                  type: string
                Feedback:
                  type: string
                Email:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/disable/{data.JWT}:
    get:
      tags: [Core]
      summary: Disable User
      operationId: disableUser
      parameters:
        - name: data.JWT
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/external:
    post:
      tags: [Core]
      summary: Query Create User External
      operationId: queryCreateUserExternal
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
                - VisitorId
              properties:
                Email:
                  type: string
                Token:
                  type: string
                TokenType:
                  type: string
                Type:
                  type: integer
                  description: 1 = mail, 2 = VPN
                Referrer:
                  type: string
                TokenPayment:
                  type: string
                TokenPreVerifiedAddress:
                  type: string
                Payload:
                  type: object
                Salt:
                  type: string
                VisitorId:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/invitations:
    get:
      tags: [Core]
      summary: Get Invitations
      operationId: getInvitations
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/invitations/{invitationID}:
    get:
      tags: [Core]
      summary: Get Invitation
      operationId: getInvitation
      parameters:
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/invitations/{invitationID}/accept:
    post:
      tags: [Core]
      summary: Accept Invitation
      operationId: acceptInvitation
      parameters:
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/invitations/{invitationID}/reject:
    post:
      tags: [Core]
      summary: Reject Invitation
      operationId: rejectInvitation
      parameters:
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/lock:
    put:
      tags: [Core]
      summary: Lock Sensitive Settings
      operationId: lockSensitiveSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/password:
    put:
      tags: [Core]
      summary: Unlock Password Changes
      operationId: unlockPasswordChanges
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/reset:
    get:
      tags: [Core]
      summary: Get Recovery Methods
      operationId: getRecoveryMethods
      parameters:
        - name: Username
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/users/unlock:
    put:
      tags: [Core]
      summary: Query Unlock
      operationId: queryUnlock
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/validate/email:
    post:
      tags: [Core]
      summary: Validate Email
      operationId: validateEmail
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/validate/phone:
    post:
      tags: [Core]
      summary: Validate Phone
      operationId: validatePhone
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verification/captcha/{token}:
    post:
      tags: [Core]
      summary: Submit External Captcha
      operationId: submitExternalCaptcha
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verification/{method}/{token}:
    get:
      tags: [Core]
      summary: Get Verification Data Route
      operationId: getVerificationDataRoute
      parameters:
        - name: method
          in: path
          required: true
          schema:
            type: string
        - name: token
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Send Verification Code
      operationId: sendVerificationCode
      parameters:
        - name: method
          in: path
          required: true
          schema:
            type: string
        - name: token
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verification/{method}/{token}/{code}:
    post:
      tags: [Core]
      summary: Verify Verification Code
      operationId: verifyVerificationCode
      parameters:
        - name: method
          in: path
          required: true
          schema:
            type: string
        - name: token
          in: path
          required: true
          schema:
            type: string
        - name: code
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verify/email:
    post:
      tags: [Core]
      summary: Post Verify Email
      operationId: postVerifyEmail
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verify/phone:
    post:
      tags: [Core]
      summary: Post Verify Phone
      operationId: postVerifyPhone
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verify/reauth/email:
    post:
      tags: [Core]
      summary: Reauth By Email Verification
      operationId: reauthByEmailVerification
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verify/reauth/phone:
    post:
      tags: [Core]
      summary: Reauth By Sms Verification
      operationId: reauthBySmsVerification
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verify/send:
    post:
      tags: [Core]
      summary: Post Verify Send
      operationId: postVerifySend
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
              properties:
                Type:
                  type: string
                Destination:
                  type: string
                  description: required if type is external_email, optional & not used if type is recovery_email
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v4/verify/validate:
    delete:
      tags: [Core]
      summary: Post Verify Unvalidate
      operationId: postVerifyUnvalidate
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - JWT
              properties:
                JWT:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Core]
      summary: Post Verify Validate
      operationId: postVerifyValidate
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - JWT
              properties:
                JWT:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v5/events/{eventID}:
    get:
      tags: [Core]
      summary: Get Events
      operationId: getEvents
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v6/events/latest:
    get:
      tags: [Core]
      summary: Get Latest Core Event IDV6
      operationId: getLatestCoreEventIDV6
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /core/v6/events/{eventID}:
    get:
      tags: [Core]
      summary: Get Core Events V6
      operationId: getCoreEventsV6
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /data/v1/stats:
    post:
      tags: [Data]
      summary: Send Telemetry Data
      operationId: sendTelemetryData
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MeasurementGroup
                - Event
              properties:
                MeasurementGroup:
                  type: integer
                Event:
                  type: string
                Values:
                  type: object
                Dimensions:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      x-keepalive: true
  /data/v1/stats/multiple:
    post:
      tags: [Data]
      summary: Send Multiple Telemetry Data
      operationId: sendMultipleTelemetryData
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - reports
              properties:
                reports:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      x-keepalive: true
  /domains:
    get:
      tags: [Domains]
      summary: Query Domains
      operationId: queryDomains
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Domains]
      summary: Add Domain
      operationId: addDomain
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
              properties:
                Name:
                  type: string
                AllowedForSSO:
                  type: boolean
                AllowedForMail:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /domains/available:
    get:
      tags: [Domains]
      summary: Query Available Domains
      operationId: queryAvailableDomains
      parameters:
        - name: Type
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /domains/premium:
    get:
      tags: [Domains]
      summary: Query Premium Domains
      operationId: queryPremiumDomains
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /domains/{domainID}:
    delete:
      tags: [Domains]
      summary: Delete Domain
      operationId: deleteDomain
      parameters:
        - name: domainID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Domains]
      summary: Get Domain
      operationId: getDomain
      parameters:
        - name: domainID
          in: path
          required: true
          schema:
            type: string
        - name: Refresh
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /domains/{domainID}/addresses:
    get:
      tags: [Domains]
      summary: Query Domain Addresses
      operationId: queryDomainAddresses
      parameters:
        - name: domainID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /domains/{domainID}/catchall:
    put:
      tags: [Domains]
      summary: Update Catch All
      operationId: updateCatchAll
      parameters:
        - name: domainID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /domains/{domainID}/registrar:
    get:
      tags: [Domains]
      summary: Get Domain Registrar
      operationId: getDomainRegistrar
      parameters:
        - name: domainID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/blocks:
    post:
      tags: [Drive]
      summary: Request block upload
      operationId: postDriveBlocks
      description: Request upload URLs for a set of blocks/thumbnails of a given draft revision.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkID
                - RevisionID
                - VolumeID
                - ShareID
                - Thumbnail
                - ThumbnailHash
                - ThumbnailSize
                - BlockList
                - ThumbnailList
              properties:
                LinkID:
                  type: string
                RevisionID:
                  type: string
                AddressID:
                  type: string
                VolumeID:
                  type: string
                ShareID:
                  type: string
                  description: Deprecated, pass VolumeID instead
                Thumbnail:
                  type: integer
                  description: Request for thumbnail upload
                ThumbnailHash:
                  type: string
                  description: sha256 hash of thumbnail contents
                ThumbnailSize:
                  type: integer
                  description: Size of thumbnail contents
                BlockList:
                  type: array
                  items: {}
                ThumbnailList:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      UploadLinks:
                        type: array
                        items: {}
                      ThumbnailLink:
                        type: object
                      ThumbnailLinks:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/devices:
    get:
      tags: [Drive]
      summary: List devices
      operationId: getDriveDevices
      description: Gives a list of devices for current user, ordered by creationTime DESC
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Devices:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create a Device
      operationId: postDriveDevices
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Device
                - Share
                - Link
              properties:
                Device:
                  type: object
                Share:
                  type: object
                Link:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Device:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/devices/{deviceID}:
    delete:
      tags: [Drive]
      summary: Delete a device
      operationId: deleteDriveDevicesByDeviceID
      parameters:
        - name: deviceID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update device
      operationId: putDriveDevicesByDeviceID
      parameters:
        - name: deviceID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Device
                - Share
              properties:
                Device:
                  type: object
                Share:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/entitlements:
    get:
      tags: [Drive]
      summary: Get entitlements
      operationId: getDriveEntitlements
      description: Get the current entitlements and their value for the logged-in user.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Entitlements:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/health/hash-check:
    get:
      tags: [Drive]
      summary: Get hash check
      operationId: getDriveHealthHashCheck
      description: Tells the client if the user is potentially impacted by Windows-Drive January 2026 incident and client should check hashes
      parameters:
        - name: ClientUID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Check:
                        type: boolean
    post:
      tags: [Drive]
      summary: Report hash check progress
      operationId: postDriveHealthHashCheck
      description: Inform the backend of the hash-check progress for a given client. Only report twice, once when starting with 0-counts and once when finished (be it successfully or with failures)
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ClientUID
                - RefreshedItemCount
                - InspectedItemCount
                - FailedItemCount
                - State
              properties:
                ClientUID:
                  type: string
                RefreshedItemCount:
                  type: integer
                  description: Number of files that had to be redownloaded due to an issue
                InspectedItemCount:
                  type: integer
                  description: Number of files that were suspicious and had to be inspected for issues
                FailedItemCount:
                  type: integer
                  description: Number of files that could not be analysed or repaired
                State:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /drive/me/active:
    get:
      tags: [Drive]
      summary: Ping active user
      operationId: getDriveMeActive
      description: Endpoint that can be pinged by clients to mark a user as an active user
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Active:
                        type: boolean
  /drive/me/settings:
    get:
      tags: [Drive]
      summary: Get user settings
      operationId: getDriveMeSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      UserSettings:
                        type: object
                        description: User settings as defined by the user.
                      Defaults:
                        type: object
                        description: Defaults for certain settings (e.g. if not set by user).
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update user settings
      operationId: putDriveMeSettings
      description: At least one setting must be provided.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Layout
                - Sort
                - RevisionRetentionDays
              properties:
                Layout:
                  type: integer
                Sort:
                  type: integer
                RevisionRetentionDays:
                  type: integer
                  description: Number of days revisions should be retained. If null, default will be used by backend. Changing the setting is only available to paid users, free users will always use the default.
                DocsCommentsNotificationsEnabled:
                  type: boolean
                  description: Indicates if email notifications for comment activity in Proton Docs are enabled. If null, the default value to 0 = false will be used by backend.
                DocsCommentsNotificationsIncludeDocumentName:
                  type: boolean
                  description: Indicates if email notifications for comment activity in Proton Docs should include the document name. If null, the default value to 0 = false will be used by backend.
                DocsFontPreference:
                  type: string
                  description: Indicates user-preferred font in Proton Docs.
                PhotoTags:
                  type: array
                  items: {}
                  description: Order and visibility of Photo Tags, tags not in the list should not be shown; Use defaults when NULL; Show no tags if empty array.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      UserSettings:
                        type: object
                        description: User settings as defined by the user.
                      Defaults:
                        type: object
                        description: Defaults for certain settings (e.g. if not set by user).
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/migrations/shareaccesswithnode:
    post:
      tags: [Drive]
      summary: Migrate legacy Shares
      operationId: postDriveMigrationsShareaccesswithnode
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - PassphraseNodeKeyPackets
                - UnreadableShareIDs
              properties:
                PassphraseNodeKeyPackets:
                  type: array
                  items: {}
                  description: The sum of PassphraseNodeKeyPacket-pairs and UnreadableShareIDs should not exceed 50
                UnreadableShareIDs:
                  type: array
                  items: {}
                  description: ShareIDs of unmigrated Shares that the client could not decrypt and should be locked
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ShareIDs:
                        type: array
                        items: {}
                        description: ShareIDs successfully migrated
                      Errors:
                        type: array
                        items: {}
                        description: ShareIDs not migrated with reason and error code
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [HTTP_STATUS_CODE.NOT_FOUND]
  /drive/migrations/shareaccesswithnode/unmigrated:
    get:
      tags: [Drive]
      summary: List unmigrated shares
      operationId: getDriveMigrationsShareaccesswithnodeUnmigrated
      description: "List shares that have not been migrated to the new PassphraseNodeKeyPacket yet. Will throw a 422 with Code 2000 if the current user doesn't have any active Volume."
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ShareIDs:
                        type: array
                        items: {}
                        description: ShareIDs that can be migrated
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [HTTP_STATUS_CODE.NOT_FOUND]
  /drive/organization/volumes:
    get:
      tags: [Drive]
      summary: List org. volumes
      operationId: getDriveOrganizationVolumes
      description: List all org. volumes the user belongs. The user can be an org. admin or any user belonging to the organization
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volumes:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create Organization volume
      operationId: postDriveOrganizationVolumes
      description: "Only allowed to Org administrators This new volume would have: + OwnerOrgID filled with the orgID of the request + specific membership for the owner (OrgAdmin to true)"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - AddressKeyID
                - ShareKey
                - SharePassphrase
                - SharePassphraseSignature
                - FolderName
                - FolderKey
                - FolderPassphrase
                - FolderPassphraseSignature
                - FolderHashKey
                - OrganizationID
                - VolumeName
                - MaxSpace
              properties:
                AddressID:
                  type: string
                AddressKeyID:
                  type: string
                  description: "XX's encrypted AddressKeyID. Must be the primary key from the AddressID"
                ShareKey:
                  type: string
                SharePassphrase:
                  type: string
                SharePassphraseSignature:
                  type: string
                FolderName:
                  type: string
                FolderKey:
                  type: string
                FolderPassphrase:
                  type: string
                FolderPassphraseSignature:
                  type: string
                FolderHashKey:
                  type: string
                OrganizationID:
                  type: string
                VolumeName:
                  type: string
                  description: "Name of the org. volume. It's plain text so that name can be displayed in UI menu"
                MaxSpace:
                  type: integer
                  description: Maximum space (in bytes) to allocate for this volume
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volume:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/organization/volumes/admin:
    get:
      tags: [Drive]
      summary: List volumes in an org
      operationId: getDriveOrganizationVolumesAdmin
      description: List all volumes in an org where the user must be admin of.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volumes:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/albums/shared-with-me:
    get:
      tags: [Drive]
      summary: Get Drive Photos Albums Shared With Me
      operationId: getDrivePhotosAlbumsSharedWithMe
      description: "Potential codes and their meaning: - 2011: Insufficient permissions"
      parameters:
        - name: AnchorID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Albums:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                      More:
                        type: boolean
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/migrate-legacy:
    get:
      tags: [Drive]
      summary: Get status of migration from legacy photo share on a regular volume into a new Photo Volume
      operationId: getDrivePhotosMigrateLegacy
      description: "Potential codes and their meaning: - 2501: The link or volume does not exist."
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      OldVolumeID:
                        type: string
                      NewVolumeID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: "DEPRECATED: All shares have been migrated, always returns share not found"
      operationId: postDrivePhotosMigrateLegacy
      description: "Potential codes and their meaning: - 2501: Share not found"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/photos/recently-accessed-items:
    post:
      tags: [Drive]
      summary: Report recently accessed
      operationId: postDrivePhotosRecentlyAccessedItems
      description: Report recently accessed items to the API
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - RecentlyAccessedItems
              properties:
                RecentlyAccessedItems:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes:
    post:
      tags: [Drive]
      summary: Create a photo volume
      operationId: postDrivePhotosVolumes
      description: "Also, creates : + root folder for the new Photo Volume + Photo share for the new Photo Volume + Adds ShareMember with given Address ID"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Share
                - Link
              properties:
                Share:
                  type: object
                Link:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volume:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/albums:
    get:
      tags: [Drive]
      summary: List current user albums
      operationId: getDrivePhotosVolumesByVolumeIDAlbums
      description: "Potential codes and their meaning: - 2501: a photo share does not exist for this volume - 2011: Insufficient permissions"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Albums:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                      More:
                        type: boolean
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create an album
      operationId: postDrivePhotosVolumesByVolumeIDAlbums
      description: "Potential codes and their meaning: - 200300: Limit of albums per volume reached - 2501: Volume does not exist, or is not photo volume - 2011: Insufficient permissions, not volume owner"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Locked
                - Link
              properties:
                Locked:
                  type: boolean
                Link:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Album:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/albums/{linkID}:
    delete:
      tags: [Drive]
      summary: Delete an album
      operationId: deleteDrivePhotosVolumesByVolumeIDAlbumsByLinkID
      description: "Potential codes and their meaning: - 200302: Album is not empty. Delete operation would result in data loss. - 2011: Insufficient permissions"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: DeleteAlbumPhotos
          in: query
          schema:
            type: integer
          description: Whether or not to delete the album even with direct children.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update an album
      operationId: putDrivePhotosVolumesByVolumeIDAlbumsByLinkID
      description: "Potential codes and their meaning: - 2501: a photo share does not exist for this volume - 2011: Insufficient permissions"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                CoverLinkID:
                  type: string
                Link:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/albums/{linkID}/add-multiple:
    post:
      tags: [Drive]
      summary: Add photos to an album
      operationId: postDrivePhotosVolumesByVolumeIDAlbumsByLinkIDAddMultiple
      description: "Potential codes and their meaning: - 2501: The album does not exist. - 200300: Album has reached the limit of photos. - 2000: All main photos have to be sent with related photos."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AlbumData
              properties:
                AlbumData:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/photos/volumes/{volumeID}/albums/{linkID}/children:
    get:
      tags: [Drive]
      summary: List photos in album
      operationId: getDrivePhotosVolumesByVolumeIDAlbumsByLinkIDChildren
      description: "Potential codes and their meaning: - 2501: Volume not found - 2501: File or folder not found - 2011: Insufficient permissions"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
        - name: Desc
          in: query
          schema:
            type: boolean
        - name: Tag
          in: query
          schema:
            type: integer
        - name: OnlyChildren
          in: query
          schema:
            type: boolean
        - name: IncludeTrashed
          in: query
          schema:
            type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Photos:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                      More:
                        type: boolean
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/albums/{linkID}/duplicates:
    post:
      tags: [Drive]
      summary: Find duplicates in album
      operationId: postDrivePhotosVolumesByVolumeIDAlbumsByLinkIDDuplicates
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NameHashes
              properties:
                NameHashes:
                  type: array
                  items: {}
                  description: List of Name HMACs to check
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      DuplicateHashes:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/albums/{linkID}/remove-multiple:
    post:
      tags: [Drive]
      summary: Post Drive Photos Volumes By Volume ID Albums By Link ID Remove Multiple
      operationId: postDrivePhotosVolumesByVolumeIDAlbumsByLinkIDRemoveMultiple
      description: "Potential codes and their meaning: - 2500: A volume is already active"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/photos/volumes/{volumeID}/links:
    post:
      tags: [Drive]
      summary: Load links details
      operationId: postDrivePhotosVolumesByVolumeIDLinks
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/links/transfer-multiple:
    put:
      tags: [Drive]
      summary: Transfer photos from and to albums
      operationId: putDrivePhotosVolumesByVolumeIDLinksTransferMultiple
      description: "Potential codes and their meaning: - 2501: The volume does not exist. - 2511: cannot move favorite photos from a share - 2000: All main photos have to be sent with related photos."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentLinkID
                - Links
                - NameSignatureEmail
                - SignatureEmail
              properties:
                ParentLinkID:
                  type: string
                Links:
                  type: array
                  items: {}
                NameSignatureEmail:
                  type: string
                  description: Signature email address used for signing name
                SignatureEmail:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/photos/volumes/{volumeID}/links/{linkID}/capture-time:
    put:
      tags: [Drive]
      summary: Update Photo Capture Time
      operationId: putDrivePhotosVolumesByVolumeIDLinksByLinkIDCaptureTime
      description: ONLY updates the clear text photo capture time. Any user with WRITE permissions may update the capture time.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CaptureTime
              properties:
                CaptureTime:
                  type: integer
                  description: Unix timestamp (in seconds) used to determine position in timeline
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/links/{linkID}/favorite:
    post:
      tags: [Drive]
      summary: Favorite existing photo
      operationId: postDrivePhotosVolumesByVolumeIDLinksByLinkIDFavorite
      description: "Potential codes and their meaning: - 2501: The link or volume does not exist."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                PhotoData:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      VolumeID:
                        type: string
                      RelatedPhotos:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/links/{linkID}/revisions/{revisionID}/xattr:
    put:
      tags: [Drive]
      summary: Update xAttr Photo-Link
      operationId: putDrivePhotosVolumesByVolumeIDLinksByLinkIDRevisionsByRevisionIDXattr
      description: ONLY for use by iOS, due to a bug in the iOS client, xAttr were not populated for photos, the client can use this endpoint to fix this.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SignatureEmail
                - XAttr
              properties:
                SignatureEmail:
                  type: string
                  description: "Format: email"
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/links/{linkID}/tags:
    delete:
      tags: [Drive]
      summary: Remove tags from existing photo
      operationId: deleteDrivePhotosVolumesByVolumeIDLinksByLinkIDTags
      description: "Potential codes and their meaning: - 2501: The link or volume does not exist. - 2011: Only the owner can assign tags to photos."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Tags
              properties:
                Tags:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Add tags to existing photo
      operationId: postDrivePhotosVolumesByVolumeIDLinksByLinkIDTags
      description: "Potential codes and their meaning: - 2501: The link or volume does not exist. - 2500: One of the tags is already assigned to the photo. - 2011: Only the owner can assign tags to photos. - 2000: Cannot assign favorite tag on this endpoint. Please use a dedicated favouring photos endpoint."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Tags
              properties:
                Tags:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/photos/volumes/{volumeID}/recover-multiple:
    put:
      tags: [Drive]
      summary: Recover photos from your photo volume
      operationId: putDrivePhotosVolumesByVolumeIDRecoverMultiple
      description: "Potential codes and their meaning: - 2501: The volume does not exist. - 2511: cannot recover photos from a share - 2011: cannot move favorite photos from a share - 2000: All main photos have to be sent with related photos."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentLinkID
                - Links
                - NameSignatureEmail
                - SignatureEmail
              properties:
                ParentLinkID:
                  type: string
                Links:
                  type: array
                  items: {}
                NameSignatureEmail:
                  type: string
                  description: Signature email address used for signing name
                SignatureEmail:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/photos/volumes/{volumeID}/tags-migration:
    get:
      tags: [Drive]
      summary: Get photo tag migration status
      operationId: getDrivePhotosVolumesByVolumeIDTagsMigration
      description: "Potential codes and their meaning: - 2501: Volume does not exist, or is not photo volume - 2011: Insufficient permissions, not volume owner"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Finished:
                        type: boolean
                      Anchor:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Update tag migration status
      operationId: postDrivePhotosVolumesByVolumeIDTagsMigration
      description: "Potential codes and their meaning: - 2501: Volume does not exist, or is not photo volume - 2011: Insufficient permissions, not volume owner"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Finished
                - Anchor
              properties:
                Finished:
                  type: boolean
                Anchor:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/recently-accessed-items:
    post:
      tags: [Drive]
      summary: Report recently accessed
      operationId: postDriveRecentlyAccessedItems
      description: Report recently accessed items to the API
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - RecentlyAccessedItems
              properties:
                RecentlyAccessedItems:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/report/share:
    post:
      tags: [Drive]
      summary: Report Share for abuse
      operationId: postDriveReportShare
      description: "Potential codes and their meaning: - 9001: User is required to complete HV; always in anonymous context or in authenticated context when 'ReporterEmail' is passed and does not belong to user . - 12087: Human verification address mismatch"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SharePassphrase
                - AbuseCategory
                - ReporterMessage
                - ReporterEmail
                - ShareURL
                - ShareURLPassword
                - ShareID
                - LinkID
                - RevisionID
                - BonaFide
              properties:
                SharePassphrase:
                  type: string
                  description: "Passphrase for reported Share's Share key, unencrypted, as a base64 encoded string"
                MemberSessionKey:
                  type: string
                  description: Session-key of the membership, or invitation. Required for reporting direct Shares
                AbuseCategory:
                  type: string
                ReporterMessage:
                  type: string
                  description: User message about the report. Required for copyright or leak reports.
                ReporterEmail:
                  type: string
                  description: "Format: email"
                ShareURL:
                  type: string
                  description: For reporting ShareURLs, complete including fragment
                ShareURLPassword:
                  type: string
                  description: Full ShareURL password, including custom part, as string, escaped for JSON; Required when reporting ShareURLs
                ShareID:
                  type: string
                LinkID:
                  type: string
                  description: Nullable; A Link in the reported Share, can be used to report only a single Link in the Share
                RevisionID:
                  type: string
                  description: Nullable; To report only a particular Revision of a Link in the reported Share
                BonaFide:
                  type: boolean
                  description: The user declares the report is submitted in good-faith (bona fide); Must always be true, but requires specific user-action (opt-in)
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/report/url:
    post:
      tags: [Drive]
      summary: Report Share URL
      operationId: postDriveReportUrl
      description: "DEPRECATED: Use POST /drive/report/share"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ResourcePassphrase
                - BonaFide
                - ShareURL
                - AbuseCategory
                - Password
                - ReporterEmail
                - ReporterMessage
                - VolumeID
                - LinkID
                - RevisionID
              properties:
                ResourcePassphrase:
                  type: string
                  description: "Passphrase for reported Link's Node key, unencrypted, as a string, escaped for JSON."
                BonaFide:
                  type: boolean
                  description: The user declares the report is submitted in good-faith (bona fide); Must always be true, but requires specific user-action (opt-in)
                ShareURL:
                  type: string
                  description: Reported ShareURL, complete including fragment
                AbuseCategory:
                  type: string
                Password:
                  type: string
                  description: Full password, including custom part, as string, escaped for JSON
                ReporterEmail:
                  type: string
                  description: "Format: email"
                ReporterMessage:
                  type: string
                  description: User message about the report. Required for copyright or leak reports.
                VolumeID:
                  type: string
                LinkID:
                  type: string
                RevisionID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/sanitization/mhk:
    get:
      tags: [Drive]
      summary: List folders with missing hash keys
      operationId: getDriveSanitizationMhk
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      NodesWithMissingNodeHashKey:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: List folders with missing hash keys
      operationId: postDriveSanitizationMhk
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NodesWithMissingNodeHashKey
              properties:
                NodesWithMissingNodeHashKey:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares:
    get:
      tags: [Drive]
      summary: List shares
      operationId: getDriveShares
      description: List shares available to current user. The results can be restricted to a single address by providing the AddressID query parameter. By default, only active shares are shown. Passing the ShowAll=1 query parameter will show locked and disabled shares also.
      parameters:
        - name: AddressID
          in: query
          schema:
            type: string
          description: Encrypted AddressID
        - name: ShowAll
          in: query
          schema:
            type: integer
          description: Show disabled shares as well, i.e. Shares where the ShareMemberShip for the user is non-active (locked), otherwise only return with active Membership
        - name: ShareType
          in: query
          schema:
            type: integer
          description: Filter on Share Type
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Shares:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/shares/{shareID}:
    delete:
      tags: [Drive]
      summary: Delete a standard share by ID
      operationId: deleteDriveSharesByShareID
      description: Only standard shares (type 2) can be deleted this way. Will throw 422 with body code 2005 if Members, ShareURLs or Invitations are still attached to the share. Use Force=1 query param to delete the share together with any attached entities.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: Force
          in: query
          schema:
            type: integer
          description: Forces the deletion of the share along with attached members and urls
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    get:
      tags: [Drive]
      summary: Get share bootstrap
      operationId: getDriveSharesByShareID
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ShareID:
                        type: string
                      VolumeID:
                        type: string
                      Type:
                        type: integer
                        description: 1=Main, 2=Standard, 3=Device, 4=Photo
                      State:
                        type: integer
                        description: 1=Active, 3=Restored
                      VolumeType:
                        type: integer
                        description: 1=Regular, 2=Photo
                      Creator:
                        type: string
                        description: "Format: email"
                      Locked:
                        type: boolean
                      CreateTime:
                        type: integer
                      ModifyTime:
                        type: integer
                      LinkID:
                        type: string
                      CreationTime:
                        type: integer
                        description: "Deprecated: Use `CreateTime`"
                      PermissionsMask:
                        type: integer
                      LinkType:
                        type: integer
                        description: 1=folder, 2=file
                      Flags:
                        type: integer
                      BlockSize:
                        type: integer
                      VolumeSoftDeleted:
                        type: boolean
                      Key:
                        type: string
                      Passphrase:
                        type: string
                      PassphraseSignature:
                        type: string
                      AddressID:
                        type: string
                        description: "Address ID of the current user's address for the membership of this share. Can be missing if the user is not a direct member of the share."
                      AddressKeyID:
                        type: string
                        description: Clients should not use this field but pass the address keyring when validating and decrypting related fields.
                      Memberships:
                        type: array
                        items: {}
                        description: Your own memberships
                      PossibleKeyPackets:
                        type: array
                        items: {}
                        description: Deprecated, use `Memberships` instead
                      RootLinkRecoveryPassphrase:
                        type: string
                      EditorsCanShare:
                        type: boolean
                        description: Indicates if editor members of this share could reshare it or not
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [API_CUSTOM_ERROR_CODES.NOT_ALLOWED]
  /drive/shares/{shareID}/documents:
    post:
      tags: [Drive]
      summary: Create a document/sheet
      operationId: postDriveSharesByShareIDDocuments
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ContentKeyPacket
                - ManifestSignature
                - ContentKeyPacketSignature
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                ContentKeyPacket:
                  type: string
                ManifestSignature:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                DocumentType:
                  type: integer
                  description: Document=1, Sheet=2
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Document:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares/{shareID}/editors-can-share:
    put:
      tags: [Drive]
      summary: Update editorsCanShare property of a share
      operationId: putDriveSharesByShareIDEditorsCanShare
      description: Only allowed to volume owners and members with Admin rights on the Parent
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Value
              properties:
                Value:
                  type: boolean
                  description: Indicates if editor members of this share could reshare it or not
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares/{shareID}/events/latest:
    get:
      tags: [Drive]
      summary: Get latest share event
      operationId: getDriveSharesByShareIDEventsLatest
      description: "Get latest EventID for a given share. Deprecated: Use events per volume instead."
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      EventID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares/{shareID}/events/{eventID}:
    get:
      tags: [Drive]
      summary: List share events
      operationId: getDriveSharesByShareIDEventsByEventID
      description: "Get new events for given share since eventID. Deprecated: Use events per volume instead."
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Events:
                        type: array
                        items: {}
                      EventID:
                        type: string
                        description: Last event ID that can be used on the next call. Will be latest/newest-event-id if requested last-event-id does not exist.
                      More:
                        type: integer
                        description: 1 if there is more to pull, i.e. there are more events than returned in one call
                      Refresh:
                        type: integer
                        description: 1 if client needs to refresh from scratch as their provided event does not exist anymore, i.e. too much time passed since the last event sync
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-timeout: 60000
  /drive/shares/{shareID}/files:
    post:
      tags: [Drive]
      summary: Create a new draft file
      operationId: postDriveSharesByShareIDFiles
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MIMEType
                - ContentKeyPacket
                - ContentKeyPacketSignature
                - ClientUID
                - IntendedUploadSize
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                MIMEType:
                  type: string
                ContentKeyPacket:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      File:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-timeout: 90000
      x-expected-errors: [all]
  /drive/shares/{shareID}/files/{linkID}/revisions:
    get:
      tags: [Drive]
      summary: List revisions
      operationId: getDriveSharesByShareIDFilesByLinkIDRevisions
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revisions:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create revision
      operationId: postDriveSharesByShareIDFilesByLinkIDRevisions
      description: Create a new revision on an existing link. Only one draft can be created at a time. A draft can be deleted using the DELETE revision endpoint if the new draft should be created regardless. The error code indicates the reason for failure. Client unique ID can be used to track revision ownership to improve concurrency control. It can be a single persistent client ID generated by the client and stored locally, or it can be specific to the revision. The client can use it to identify revisions in case it failed to receive the confirmation of the revision creation.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CurrentRevisionID
                - ClientUID
                - IntendedUploadSize
              properties:
                CurrentRevisionID:
                  type: string
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revision:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-timeout: 90000
      x-expected-errors: [all]
  /drive/shares/{shareID}/files/{linkID}/revisions/{revisionID}:
    delete:
      tags: [Drive]
      summary: Delete an obsolete/draft revision
      operationId: deleteDriveSharesByShareIDFilesByLinkIDRevisionsByRevisionID
      description: Only the volume owner can delete obsolete revisions. Members with write permission can only delete drafts. This will return an error code 2511 INCOMPATIBLE_STATE if the revision is active. Create or revert to another revision first. You cannot delete a draft revision for a draft link. Delete the link instead.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    get:
      tags: [Drive]
      summary: Get revision
      operationId: getDriveSharesByShareIDFilesByLinkIDRevisionsByRevisionID
      description: Get detailed revision information.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
          description: Number of blocks
        - name: FromBlockIndex
          in: query
          schema:
            type: integer
          description: Block index from which to fetch block list
        - name: NoBlockUrls
          in: query
          schema:
            type: boolean
          description: Do not generate download URLs for blocks
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revision:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Commit a revision
      operationId: putDriveSharesByShareIDFilesByLinkIDRevisionsByRevisionID
      description: The revision becomes the current active one and the updated file content become available for reading.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ManifestSignature
                - SignatureAddress
                - BlockNumber
                - XAttr
                - Photo
                - BlockList
                - ThumbnailToken
                - State
                - ChecksumVerified
              properties:
                ManifestSignature:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
                BlockNumber:
                  type: integer
                  description: Unused. Was meant for shorter partial revisions.
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
                Photo:
                  type: object
                BlockList:
                  type: array
                  items: {}
                  description: Ignored entirely by API. Field can be removed from request by client.
                ThumbnailToken:
                  type: string
                State:
                  type: integer
                  description: Ignored entirely by API, revision will always be committed (made active)
                ChecksumVerified:
                  type: boolean
                  description: Whether the checksum in xattr of the revision content was verified by the client during upload
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-timeout: 90000
  /drive/shares/{shareID}/files/{linkID}/revisions/{revisionID}/restore:
    post:
      tags: [Drive]
      summary: Restore a revision
      operationId: postDriveSharesByShareIDFilesByLinkIDRevisionsByRevisionIDRestore
      description: ErrorCode
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares/{shareID}/files/{linkID}/revisions/{revisionID}/thumbnail:
    get:
      tags: [Drive]
      summary: Get revision thumbnail
      operationId: getDriveSharesByShareIDFilesByLinkIDRevisionsByRevisionIDThumbnail
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
        - name: Type
          in: query
          schema:
            type: integer
          description: Type of Thumbnail to fetch
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      ThumbnailLink:
                        type: string
                        description: Thumbnail download link
                      ThumbnailBareURL:
                        type: string
                        description: Bare Thumbnail download link
                      ThumbnailToken:
                        type: string
                        description: Thumbnail download token
      x-expected-errors: [all]
  /drive/shares/{shareID}/folders:
    post:
      tags: [Drive]
      summary: Create a folder
      operationId: postDriveSharesByShareIDFolders
      description: Create a new folder under a given parent folder.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NodeHashKey
                - XAttr
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                NodeHashKey:
                  type: string
                  description: Node hash key (random bytes encoded in base64 format), encrypted and signed.
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares/{shareID}/folders/{linkID}/children:
    get:
      tags: [Drive]
      summary: List folder children
      operationId: getDriveSharesByShareIDFoldersByLinkIDChildren
      description: List children of a given folder.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
          description: Field to sort by
        - name: Desc
          in: query
          schema:
            type: integer
          description: Sort order
        - name: ShowAll
          in: query
          schema:
            type: integer
          description: Show all files including those in non-active (drafts) state.
        - name: FoldersOnly
          in: query
          schema:
            type: integer
          description: Show folders only
        - name: Thumbnails
          in: query
          schema:
            type: integer
          description: Get thumbnail download URLs
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      AllowSorting:
                        type: boolean
                        description: Allow sorting of items in folder
                      Links:
                        type: array
                        items: {}
  /drive/shares/{shareID}/folders/{linkID}/delete_multiple:
    post:
      tags: [Drive]
      summary: Delete drafts from folder
      operationId: postDriveSharesByShareIDFoldersByLinkIDDelete_multiple
      description: Permanently delete children from folder, skipping trash. Can only be done for draft links.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/shares/{shareID}/folders/{linkID}/trash_multiple:
    post:
      tags: [Drive]
      summary: Trash children from folder
      operationId: postDriveSharesByShareIDFoldersByLinkIDTrash_multiple
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/shares/{shareID}/links/fetch_metadata:
    post:
      tags: [Drive]
      summary: Fetch links in share
      operationId: postDriveSharesByShareIDLinksFetch_metadata
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Thumbnails
                - LinkIDs
              properties:
                Thumbnails:
                  type: integer
                  description: Get thumbnail download URLs
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Links:
                        type: array
                        items: {}
                      Parents:
                        type: array
                        items: {}
  /drive/shares/{shareID}/links/{linkID}:
    get:
      tags: [Drive]
      summary: Get link data
      operationId: getDriveSharesByShareIDLinksByLinkID
      description: Retrieve individual link information.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Link:
                        type: string
  /drive/shares/{shareID}/links/{linkID}/checkAvailableHashes:
    post:
      tags: [Drive]
      summary: Check available hashes
      operationId: postDriveSharesByShareIDLinksByLinkIDCheckAvailableHashes
      description: Filter unavailable hashes out of a list of hashes under a given parent folder. Pending hashes from drafts are also listed. They can be filtered with a list of ClientUID.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Hashes
                - ClientUID
              properties:
                Hashes:
                  type: array
                  items: {}
                ClientUID:
                  type: array
                  items: {}
                  description: Client UID list to filter pending drafts with. If not provided, all conflicting draft hashes will be returned in `PendingHashes`
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      AvailableHashes:
                        type: array
                        items: {}
                      PendingHashes:
                        type: array
                        items: {}
                        description: Hashes of existing drafts excluding the ones of provided ClientUIDs
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-timeout: 60000
  /drive/shares/{shareID}/links/{linkID}/move:
    put:
      tags: [Drive]
      summary: Move link
      operationId: putDriveSharesByShareIDLinksByLinkIDMove
      description: Move a file or folder. Client must provide new values for fields encrypted with parent NodeKey. Clients moving a file or folder MUST reuse the existing session keys for the name and passphrase as these are also used by shares pointing to the link. The passphrase should NOT be changed, reusing same session key as previously.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - NodePassphrase
                - Hash
                - ParentLinkID
                - NameSignatureEmail
                - SignatureAddress
                - OriginalHash
                - NewShareID
                - ContentHash
                - NodePassphraseSignature
                - SignatureEmail
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                NodePassphrase:
                  type: string
                  description: Node passphrase, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash
                ParentLinkID:
                  type: string
                NameSignatureEmail:
                  type: string
                  description: "Format: email"
                SignatureAddress:
                  type: string
                  description: "Format: email"
                OriginalHash:
                  type: string
                  description: Current name hash before move operation. Used to prevent race conditions.
                NewShareID:
                  type: string
                  description: "Deprecated: Target ShareID (for move between shares/devices). Determined on the backend automatically"
                ContentHash:
                  type: string
                  description: "Optional, except when moving a Photo-Link. Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ lower_hex(hmacSha256(folder hash key, lower_hex(sha1(plain content)))) ]"
                NodePassphraseSignature:
                  type: string
                  description: Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address.
                SignatureEmail:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /drive/shares/{shareID}/links/{linkID}/rename:
    put:
      tags: [Drive]
      summary: Rename link
      operationId: putDriveSharesByShareIDLinksByLinkIDRename
      description: "Rename a file or folder. Client must provide new values for fields linked to name. Clients renaming a file or folder MUST reuse the existing session key for the name as it is also used by shares pointing to the link. Users with access only through a public sharing URL (no editor membership) are limited to renaming their own files and folders: - Unauthenticated users must have created them in their session - Authenticated users' email must match the signature email on the node for folders or active revision for files"
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - NameSignatureEmail
                - SignatureAddress
                - OriginalHash
                - MIMEType
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash; ignored/nullable for root-links
                NameSignatureEmail:
                  type: string
                  description: "Format: email"
                SignatureAddress:
                  type: string
                  description: "Format: email"
                OriginalHash:
                  type: string
                  description: Current name hash before move operation. Used to prevent race conditions.
                MIMEType:
                  type: string
                  description: MIME type, optional, only on files.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /drive/shares/{shareID}/links/{linkID}/revisions/{revisionID}/verification:
    get:
      tags: [Drive]
      summary: Get verification data.
      operationId: getDriveSharesByShareIDLinksByLinkIDRevisionsByRevisionIDVerification
      description: Get data to verify encryption of the revision before committing.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      VerificationCode:
                        type: string
                      ContentKeyPacket:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/shares/{shareID}/map:
    get:
      tags: [Drive]
      summary: Search map
      operationId: getDriveSharesByShareIDMap
      description: Used only for search on web that does not scale. Should be replaced by better version in the future.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: SessionName
          in: query
          schema:
            type: string
        - name: LastIndex
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      SessionName:
                        type: string
                      More:
                        type: integer
                      Total:
                        type: integer
                      Links:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/shares/{shareID}/trash:
    delete:
      tags: [Drive]
      summary: Empty share trash
      operationId: deleteDriveSharesByShareIDTrash
      description: Permanently delete all links from trash of a given share. Only used by clients that don’t show photos and devices. Going forward, the volume-based route should be used instead. CANNOT be used on Photo-Volume -> use volume-trash
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    get:
      tags: [Drive]
      summary: List share trash
      operationId: getDriveSharesByShareIDTrash
      description: List all trashed items of a given share. Only used by clients that don’t show photos and devices. Going forward, the volume-based route should be used instead. CANNOT be used on Photo-Volume -> use volume-trash
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: Thumbnails
          in: query
          schema:
            type: integer
          description: Get thumbnail download URLs
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Links:
                        type: array
                        items: {}
                      Parents:
                        type: object
                        description: Dictionary of ancestors of trashed links.
  /drive/shares/{shareID}/trash/delete_multiple:
    post:
      tags: [Drive]
      summary: Delete items from trash
      operationId: postDriveSharesByShareIDTrashDelete_multiple
      description: Permanently delete a list of links from trash in a given volume. The user must be the owner of the volume or admin of the organization.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/shares/{shareID}/trash/restore_multiple:
    put:
      tags: [Drive]
      summary: Restore items from trash
      operationId: putDriveSharesByShareIDTrashRestore_multiple
      description: Restore list of links from trash to original location. In personal regular and photo volumes, you need to be the volume owner to restore from trash. In organization volumes, users can restore files from trash that they have write-permission on.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/shares/{shareID}/urls:
    get:
      tags: [Drive]
      summary: List URLs on share
      operationId: getDriveSharesByShareIDUrls
      description: There can only be one or zero share URLs on a given share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ShareURLs:
                        type: array
                        items: {}
                      Links:
                        type: object
                        description: Unused and deprecated. Always empty.
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Share by URL
      operationId: postDriveSharesByShareIDUrls
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CreatorEmail
                - Permissions
                - UrlPasswordSalt
                - SharePasswordSalt
                - SRPVerifier
                - SRPModulusID
                - Flags
                - SharePassphraseKeyPacket
                - Password
                - MaxAccesses
                - ExpirationTime
                - ExpirationDuration
                - Name
              properties:
                CreatorEmail:
                  type: string
                Permissions:
                  type: integer
                  description: "Permission bitfield, cannot exceed the owner's permissions. Valid permissions: - 4: read access - 6: read + write access"
                UrlPasswordSalt:
                  type: string
                SharePasswordSalt:
                  type: string
                SRPVerifier:
                  type: string
                SRPModulusID:
                  type: string
                Flags:
                  type: integer
                  description: "Bitmap: 1 = custom password set, 2 = random password set"
                SharePassphraseKeyPacket:
                  type: string
                Password:
                  type: string
                  description: "PGP encrypted password. The password is encrypted with the user's address key."
                MaxAccesses:
                  type: integer
                  description: Maximum number of times this link can be accessed. 0 for infinite
                ExpirationTime:
                  type: integer
                  description: UNIX timestamp (in seconds) after which this link is no longer accessible. Use this or ExpirationDuration for a relative expiration period. Max 90 days from now. Optional
                ExpirationDuration:
                  type: integer
                  description: Number of seconds after which this link is no longer accessible. Maximum 90 days. Optional
                Name:
                  type: string
                  description: "PGP encrypted name. The name is encrypted with the user's address key. The name is only for user convenience."
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      ShareURL:
                        type: object
  /drive/shares/{shareID}/urls/delete_multiple:
    post:
      tags: [Drive]
      summary: Delete multiple Share URLs
      operationId: postDriveSharesByShareIDUrlsDelete_multiple
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ShareURLIDs
              properties:
                ShareURLIDs:
                  type: array
                  items: {}
                  description: List of ShareURL ids to delete.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/shares/{shareID}/urls/{urlID}:
    delete:
      tags: [Drive]
      summary: Delete a Share URL
      operationId: deleteDriveSharesByShareIDUrlsByUrlID
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: urlID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update a Share URL
      operationId: putDriveSharesByShareIDUrlsByUrlID
      description: Only values which are set in the request are updated. When the password is updated, the password, SharePassphraseKeyPacket and SRPVerifier must be updated together.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: urlID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ExpirationTime
                - Permissions
                - UrlPasswordSalt
                - SharePasswordSalt
                - SRPVerifier
                - SRPModulusID
                - Flags
                - SharePassphraseKeyPacket
                - Password
                - MaxAccesses
              properties:
                ExpirationTime:
                  type: integer
                  description: UNIX timestamp (in seconds) after which this link is no longer accessible. Use this or ExpirationDuration for a relative expiration period. Max 90 days from now.
                ExpirationDuration:
                  type: integer
                  description: Number of seconds after which this link is no longer accessible. Maximum 90 days.
                Name:
                  type: string
                  description: "PGP encrypted name. The name is encrypted with the user's address key. The name is only for user convenience."
                Permissions:
                  type: integer
                  description: "Permission bitfield, cannot exceed the owner's permissions. Valid permissions: - 4: read access - 6: read + write access"
                UrlPasswordSalt:
                  type: string
                SharePasswordSalt:
                  type: string
                SRPVerifier:
                  type: string
                SRPModulusID:
                  type: string
                Flags:
                  type: integer
                  description: "Bitmap: 1 = custom password set, 2 = random password set"
                SharePassphraseKeyPacket:
                  type: string
                Password:
                  type: string
                  description: "PGP encrypted password. The password is encrypted with the user's address key."
                MaxAccesses:
                  type: integer
                  description: Maximum number of times this link can be accessed. 0 for infinite
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      ShareURL:
                        type: object
      x-expected-errors: [API_CUSTOM_ERROR_CODES.MAX_PUBLIC_EDIT_MODE_FOR_FREE_USER]
  /drive/unauth/blocks:
    post:
      tags: [Drive]
      summary: Request block upload
      operationId: postDriveUnauthBlocks
      description: See /drive/blocks for full documentation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkID
                - RevisionID
                - VolumeID
                - ShareID
                - Thumbnail
                - ThumbnailHash
                - ThumbnailSize
                - BlockList
                - ThumbnailList
              properties:
                LinkID:
                  type: string
                RevisionID:
                  type: string
                AddressID:
                  type: string
                VolumeID:
                  type: string
                ShareID:
                  type: string
                  description: Deprecated, pass VolumeID instead
                Thumbnail:
                  type: integer
                  description: Request for thumbnail upload
                ThumbnailHash:
                  type: string
                  description: sha256 hash of thumbnail contents
                ThumbnailSize:
                  type: integer
                  description: Size of thumbnail contents
                BlockList:
                  type: array
                  items: {}
                ThumbnailList:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      UploadLinks:
                        type: array
                        items: {}
                      ThumbnailLink:
                        type: object
                      ThumbnailLinks:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/report/share:
    post:
      tags: [Drive]
      summary: Report a Share for abuse
      operationId: postDriveUnauthReportShare
      description: See /drive/report/share for full documentation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SharePassphrase
                - AbuseCategory
                - ReporterMessage
                - ReporterEmail
                - ShareURL
                - ShareURLPassword
                - ShareID
                - LinkID
                - RevisionID
                - BonaFide
              properties:
                SharePassphrase:
                  type: string
                  description: "Passphrase for reported Share's Share key, unencrypted, as a base64 encoded string"
                MemberSessionKey:
                  type: string
                  description: Session-key of the membership, or invitation. Required for reporting direct Shares
                AbuseCategory:
                  type: string
                ReporterMessage:
                  type: string
                  description: User message about the report. Required for copyright or leak reports.
                ReporterEmail:
                  type: string
                  description: "Format: email"
                ShareURL:
                  type: string
                  description: For reporting ShareURLs, complete including fragment
                ShareURLPassword:
                  type: string
                  description: Full ShareURL password, including custom part, as string, escaped for JSON; Required when reporting ShareURLs
                ShareID:
                  type: string
                LinkID:
                  type: string
                  description: Nullable; A Link in the reported Share, can be used to report only a single Link in the Share
                RevisionID:
                  type: string
                  description: Nullable; To report only a particular Revision of a Link in the reported Share
                BonaFide:
                  type: boolean
                  description: The user declares the report is submitted in good-faith (bona fide); Must always be true, but requires specific user-action (opt-in)
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/delete_multiple:
    post:
      tags: [Drive]
      summary: Delete drafts
      operationId: postDriveUnauthV2VolumesByVolumeIDDelete_multiple
      description: "See /drive/v2/volumes/{volumeID}/delete_multiple for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/unauth/v2/volumes/{volumeID}/documents:
    post:
      tags: [Drive]
      summary: Create document
      operationId: postDriveUnauthV2VolumesByVolumeIDDocuments
      description: "See /drive/v2/volumes/{volumeID}/documents for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ContentKeyPacket
                - ManifestSignature
                - ContentKeyPacketSignature
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                ContentKeyPacket:
                  type: string
                ManifestSignature:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                DocumentType:
                  type: integer
                  description: Document=1, Sheet=2
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Document:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/files:
    post:
      tags: [Drive]
      summary: Create a new draft file
      operationId: postDriveUnauthV2VolumesByVolumeIDFiles
      description: "See /drive/v2/volumes/{volumeID}/files for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MIMEType
                - ContentKeyPacket
                - ContentKeyPacketSignature
                - ClientUID
                - IntendedUploadSize
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                MIMEType:
                  type: string
                ContentKeyPacket:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      File:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/files/small:
    post:
      tags: [Drive]
      summary: Upload small file
      operationId: postDriveUnauthV2VolumesByVolumeIDFilesSmall
      description: "See /drive/v2/volumes/{volumeID}/files/small for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      RevisionID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/files/{linkID}/revisions:
    post:
      tags: [Drive]
      summary: Create revision
      operationId: postDriveUnauthV2VolumesByVolumeIDFilesByLinkIDRevisions
      description: "See /drive/v2/volumes/{volumeID}/files/{linkID}/revisions for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CurrentRevisionID
                - ClientUID
                - IntendedUploadSize
              properties:
                CurrentRevisionID:
                  type: string
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revision:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/files/{linkID}/revisions/small:
    post:
      tags: [Drive]
      summary: Upload small revision
      operationId: postDriveUnauthV2VolumesByVolumeIDFilesByLinkIDRevisionsSmall
      description: "See /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/small for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      RevisionID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/files/{linkID}/revisions/{revisionID}:
    delete:
      tags: [Drive]
      summary: Delete an obsolete/draft revision
      operationId: deleteDriveUnauthV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: "See /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/{revisionID} for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    get:
      tags: [Drive]
      summary: Get revision
      operationId: getDriveUnauthV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: "See /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/{revisionID} for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
          description: Number of blocks
        - name: FromBlockIndex
          in: query
          schema:
            type: integer
          description: Block index from which to fetch block list
        - name: NoBlockUrls
          in: query
          schema:
            type: boolean
          description: Do not generate download URLs for blocks
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Drive]
      summary: Commit a revision
      operationId: putDriveUnauthV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: "See /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/{revisionID} for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ManifestSignature
                - SignatureAddress
                - BlockNumber
                - XAttr
                - Photo
                - BlockList
                - ThumbnailToken
                - State
                - ChecksumVerified
              properties:
                ManifestSignature:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
                BlockNumber:
                  type: integer
                  description: Unused. Was meant for shorter partial revisions.
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
                Photo:
                  type: object
                BlockList:
                  type: array
                  items: {}
                  description: Ignored entirely by API. Field can be removed from request by client.
                ThumbnailToken:
                  type: string
                State:
                  type: integer
                  description: Ignored entirely by API, revision will always be committed (made active)
                ChecksumVerified:
                  type: boolean
                  description: Whether the checksum in xattr of the revision content was verified by the client during upload
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/folders:
    post:
      tags: [Drive]
      summary: Create a folder
      operationId: postDriveUnauthV2VolumesByVolumeIDFolders
      description: "See /drive/v2/volumes/{volumeID}/folders for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NodeHashKey
                - XAttr
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                NodeHashKey:
                  type: string
                  description: Node hash key (random bytes encoded in base64 format), encrypted and signed.
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/folders/{linkID}/children:
    get:
      tags: [Drive]
      summary: List folder children (v2)
      operationId: getDriveUnauthV2VolumesByVolumeIDFoldersByLinkIDChildren
      description: "See /drive/v2/volumes/{volumeID}/folders/{linkID}/children for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
        - name: FoldersOnly
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkIDs:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                        description: Used for pagination, pass to the next call to get the next page of results
                      More:
                        type: boolean
                        description: Indicates if there is a next page of results
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/links:
    post:
      tags: [Drive]
      summary: Load links details
      operationId: postDriveUnauthV2VolumesByVolumeIDLinks
      description: "See /drive/v2/volumes/{volumeID}/links for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/links/{linkID}/checkAvailableHashes:
    post:
      tags: [Drive]
      summary: Check available hashes
      operationId: postDriveUnauthV2VolumesByVolumeIDLinksByLinkIDCheckAvailableHashes
      description: "See /drive/v2/volumes/{volumeID}/links/{linkID}/checkAvailableHashes for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Hashes
                - ClientUID
              properties:
                Hashes:
                  type: array
                  items: {}
                ClientUID:
                  type: array
                  items: {}
                  description: Client UID list to filter pending drafts with. If not provided, all conflicting draft hashes will be returned in `PendingHashes`
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      AvailableHashes:
                        type: array
                        items: {}
                      PendingHashes:
                        type: array
                        items: {}
                        description: Hashes of existing drafts excluding the ones of provided ClientUIDs
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/links/{linkID}/rename:
    put:
      tags: [Drive]
      summary: Rename link
      operationId: putDriveUnauthV2VolumesByVolumeIDLinksByLinkIDRename
      description: "See /drive/v2/volumes/{volumeID}/links/{linkID}/rename for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - NameSignatureEmail
                - SignatureAddress
                - OriginalHash
                - MIMEType
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash; ignored/nullable for root-links
                NameSignatureEmail:
                  type: string
                  description: "Format: email"
                SignatureAddress:
                  type: string
                  description: "Format: email"
                OriginalHash:
                  type: string
                  description: Current name hash before move operation. Used to prevent race conditions.
                MIMEType:
                  type: string
                  description: MIME type, optional, only on files.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/unauth/v2/volumes/{volumeID}/links/{linkID}/revisions/{revisionID}/verification:
    get:
      tags: [Drive]
      summary: Get verification data.
      operationId: getDriveUnauthV2VolumesByVolumeIDLinksByLinkIDRevisionsByRevisionIDVerification
      description: "See /drive/v2/volumes/{volumeID}/links/{linkID}/revisions/{revisionID}/verification for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      VerificationCode:
                        type: string
                      ContentKeyPacket:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/unauth/v2/volumes/{volumeID}/remove-mine:
    post:
      tags: [Drive]
      summary: Remove my nodes skipping trash
      operationId: postDriveUnauthV2VolumesByVolumeIDRemoveMine
      description: "See /drive/v2/volumes/{volumeID}/remove-mine for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/unauth/volumes/{volumeID}/thumbnails:
    post:
      tags: [Drive]
      summary: Fetch thumbnails by IDs.
      operationId: postDriveUnauthVolumesByVolumeIDThumbnails
      description: "See /drive/volumes/{volumeID}/thumbnails for full documentation"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ThumbnailIDs
              properties:
                ThumbnailIDs:
                  type: array
                  items: {}
                  description: List of encrypted ThumbnailIDs. Maximum 30.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Thumbnails:
                        type: array
                        items: {}
                      Errors:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/urls/{token}:
    get:
      tags: [Drive]
      summary: Get Shared File Information.
      operationId: getDriveUrlsByToken
      description: ErrorCode
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Token:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/urls/{token}/auth:
    post:
      tags: [Drive]
      summary: Authenticate on a public Share URL
      operationId: postDriveUrlsByTokenAuth
      description: Client proves to know the URL password and receives session information
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ClientEphemeral
                - ClientProof
                - SRPSession
              properties:
                ClientEphemeral:
                  type: string
                ClientProof:
                  type: string
                SRPSession:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      UID:
                        type: string
                        description: Session UID
                      ServerProof:
                        type: string
                      Share:
                        type: object
                      AccessToken:
                        type: string
                        description: Session Access token (present if new session)
                      ExpiresIn:
                        type: integer
                        description: Duration of the session in seconds (present if new session)
                      TokenType:
                        type: string
                        description: Type of token (present if new session)
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/urls/{token}/documents:
    post:
      tags: [Drive]
      summary: Create anonymous document.
      operationId: postDriveUrlsByTokenDocuments
      description: Create a new anonymous proton document.
      security: []
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ContentKeyPacket
                - ManifestSignature
                - ContentKeyPacketSignature
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                ContentKeyPacket:
                  type: string
                ManifestSignature:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                DocumentType:
                  type: integer
                  description: Document=1, Sheet=2
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Document:
                        type: object
                      AuthorizationToken:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/urls/{token}/folders:
    post:
      tags: [Drive]
      summary: Query Public Create Folder
      operationId: queryPublicCreateFolder
      description: Public
      security: []
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - NodeHashKey
              properties:
                Name:
                  type: string
                XAttr:
                  type: string
                Hash:
                  type: string
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                NodeHashKey:
                  type: string
                SignatureEmail:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/urls/{token}/folders/{parentLinkId}/delete_multiple:
    post:
      tags: [Drive]
      summary: Query Public Delete Children Links
      operationId: queryPublicDeleteChildrenLinks
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
        - name: parentLinkId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/urls/{token}/info:
    get:
      tags: [Drive]
      summary: Initiate shared by URL session with SRP
      operationId: getDriveUrlsByTokenInfo
      description: ErrorCode
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Modulus:
                        type: string
                      ServerEphemeral:
                        type: string
                      UrlPasswordSalt:
                        type: string
                      SRPSession:
                        type: string
                      Version:
                        type: integer
                      Flags:
                        type: integer
                      IsDoc:
                        type: boolean
                      VendorType:
                        type: integer
                      DirectAccess:
                        type: object
                        description: Only set if the user is authenticated AND has direct access to the share already
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/urls/{token}/links/fetch_metadata:
    post:
      tags: [Drive]
      summary: Fetch links metadata using token
      operationId: postDriveUrlsByTokenLinksFetch_metadata
      description: "This endpoint is a sibling of /drive/volumes/{volumeID}/links/fetch_metadata, but using token instead of volumeID. Is meant to be used in public sharing."
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/urls/{token}/links/{linkID}/path:
    get:
      tags: [Drive]
      summary: Fetch link parentIDs by token
      operationId: getDriveUrlsByTokenLinksByLinkIDPath
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ParentLinkIDs:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/urls/{token}/links/{linkID}/rename:
    put:
      tags: [Drive]
      summary: Rename entry
      operationId: putDriveUrlsByTokenLinksByLinkIDRename
      description: Rename a file or folder. Client must provide new values for fields linked to name. Clients renaming a file or folder MUST reuse the existing session key for the name as it is also used by shares pointing to the link.
      security: []
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Hash
                - OriginalHash
                - NameSignatureEmail
                - MIMEType
                - AuthorizationToken
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash
                OriginalHash:
                  type: string
                  description: Current name hash before move operation. Used to prevent race conditions.
                NameSignatureEmail:
                  type: string
                  description: "Format: email"
                MIMEType:
                  type: string
                  description: MIME type, optional, only on files.
                AuthorizationToken:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /drive/urls/{token}/security:
    post:
      tags: [Drive]
      summary: Scan for malware (public share URL)
      operationId: postDriveUrlsByTokenSecurity
      description: "Performs virus checks on hashes of files received in the request payload. See https://drive.gitlab-pages.protontech.ch/documentation/specifications/data/virus-scanning/"
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Hashes
              properties:
                Hashes:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Results:
                        type: array
                        items: {}
                      Errors:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [all]
  /drive/v2/checklist/get-started:
    get:
      tags: [Drive]
      summary: Get onboarding checklist
      operationId: getDriveV2ChecklistGetStarted
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Items:
                        type: array
                        items: {}
                        description: Array of completed checklist items
                      CreatedAt:
                        type: integer
                      ExpiresAt:
                        type: integer
                      UserWasRewarded:
                        type: boolean
                        description: User already has reward quota
                      Seen:
                        type: boolean
                        description: Client has displayed completed checklist
                      Completed:
                        type: boolean
                        description: Client has completed checklist
                      RewardInGB:
                        type: integer
                        description: "Format: float"
                      Visible:
                        type: boolean
                        description: Checklist should be visible to user
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/checklist/get-started/seen-completed-list:
    post:
      tags: [Drive]
      summary: Mark completed checklist as seen
      operationId: postDriveV2ChecklistGetStartedSeenCompletedList
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/checklist/{checklistId}:
    get:
      tags: [Drive]
      summary: Get Drive Checklist
      operationId: getDriveChecklist
      parameters:
        - name: checklistId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/v2/checklist/{checklistId}/seen-completed-list:
    post:
      tags: [Drive]
      summary: Seen Completed Drive Checklist
      operationId: seenCompletedDriveChecklist
      parameters:
        - name: checklistId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/v2/devices:
    get:
      tags: [Drive]
      summary: List devices (v2)
      operationId: getDriveV2Devices
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Devices:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/onboarding:
    get:
      tags: [Drive]
      summary: Get Drive V2 Onboarding
      operationId: getDriveV2Onboarding
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      HasPendingInvitations:
                        type: boolean
                        description: "`true` if the user has pending/rejected invitations or user_registered external invitation"
                      IsFreshAccount:
                        type: boolean
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/onboarding/fresh-account:
    get:
      tags: [Drive]
      summary: Get Drive V2 Onboarding Fresh Account
      operationId: getDriveV2OnboardingFreshAccount
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      EndTime:
                        type: integer
                      Quota:
                        type: integer
                        description: Maximum available space for the free upload timer, in bytes (API allows going 10% over limit for zero-rating)
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Post Drive V2 Onboarding Fresh Account
      operationId: postDriveV2OnboardingFreshAccount
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      EndTime:
                        type: integer
                      Quota:
                        type: integer
                        description: Maximum available space for the free upload timer, in bytes (API allows going 10% over limit for zero-rating)
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shared-bookmarks:
    get:
      tags: [Drive]
      summary: List all Bookmarks
      operationId: getDriveV2SharedBookmarks
      description: This endpoint would only show active bookmarks from the user doing the request
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Bookmarks:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/sharedwithme:
    get:
      tags: [Drive]
      summary: Shared with me
      operationId: getDriveV2Sharedwithme
      description: List Collaborative Shares the user has access to as a non-owner
      parameters:
        - name: AnchorID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                        description: Used for pagination, pass to the next call to get the next page of results
                      More:
                        type: boolean
                        description: Indicates if there is a next page of results
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/external-invitations:
    get:
      tags: [Drive]
      summary: List external invitations of a user
      operationId: getDriveV2SharesExternalInvitations
      description: List the UserRegistered external invitations where the current user is the invitee.
      parameters:
        - name: AnchorID
          in: query
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ExternalInvitations:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                        description: Used for pagination, pass to the next call to get the next page of results
                      More:
                        type: boolean
                        description: Indicates if there is a next page of results
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/invitations:
    get:
      tags: [Drive]
      summary: List invitations of a user
      operationId: getDriveV2SharesInvitations
      description: List the pending invitations where the current user is the invitee.
      parameters:
        - name: AnchorID
          in: query
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: ShareTargetTypes
          in: query
          schema:
            type: array
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Invitations:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                        description: Used for pagination, pass to the next call to get the next page of results
                      More:
                        type: boolean
                        description: Indicates if there is a next page of results
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/invitations/{invitationID}:
    get:
      tags: [Drive]
      summary: Return invitation information
      operationId: getDriveV2SharesInvitationsByInvitationID
      description: Get the information about a pending invitation where the current user is the invitee.
      parameters:
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Invitation:
                        type: object
                      Share:
                        type: object
                      Link:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
      x-expected-errors: [API_CUSTOM_ERROR_CODES.NOT_FOUND]
  /drive/v2/shares/invitations/{invitationID}/accept:
    post:
      tags: [Drive]
      summary: Accept an invitation
      operationId: postDriveV2SharesInvitationsByInvitationIDAccept
      description: "Potential codes and their meaning: - 2501: the share or the invitation was not found or was not pending - 2011: the invitee email doesn't belong to the current user - 2032: sharing is temporarily disabled. - 200602: The user has joined too many shares already. - 200201: the user is already member of a share in this volume with another address - 200502: session key signature is invalid - 2000: the address or address key couldn't be found to the invitee email address and user"
      parameters:
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SessionKeySignature
              properties:
                SessionKeySignature:
                  type: string
                  description: "Signature of the share passphrase's session key with the private key of the user (invitee) and the signature context `drive.share-member.member`, base64 encoded"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/invitations/{invitationID}/reject:
    post:
      tags: [Drive]
      summary: Reject an invitation
      operationId: postDriveV2SharesInvitationsByInvitationIDReject
      description: "Potential codes and their meaning: - 2501: the invitation does not exist or is not pending - 2011: the invitee email doesn't belong to the current user"
      parameters:
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/my-files:
    get:
      tags: [Drive]
      summary: Bootstrap my files
      operationId: getDriveV2SharesMyFiles
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volume:
                        type: object
                      Share:
                        type: object
                      Link:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/photos:
    get:
      tags: [Drive]
      summary: Bootstrap photos section
      operationId: getDriveV2SharesPhotos
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volume:
                        type: object
                      Share:
                        type: object
                      Link:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/external-invitations:
    get:
      tags: [Drive]
      summary: List external invitations in a share
      operationId: getDriveV2SharesByShareIDExternalInvitations
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ExternalInvitations:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Invite an external user to a share
      operationId: postDriveV2SharesByShareIDExternalInvitations
      description: The current user must have admin permission on the share. The share can be Standard or the RootShare of an Org. Volume (Organization Share)
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ExternalInvitation
                - EmailDetails
              properties:
                ExternalInvitation:
                  type: object
                EmailDetails:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ExternalInvitation:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/external-invitations/{invitationID}:
    delete:
      tags: [Drive]
      summary: Delete an external invitation
      operationId: deleteDriveV2SharesByShareIDExternalInvitationsByInvitationID
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update an external invitation
      operationId: putDriveV2SharesByShareIDExternalInvitationsByInvitationID
      description: "Only permissions can be changed. They can be changed when the external invitation is pending or accepted. After the external invitation has been accepted, the invitation's permissions can be edited. The current user must have admin permission on the share."
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Permissions
              properties:
                Permissions:
                  type: integer
                  description: "Permission bitfield, valid permissions: - 4: read access - 6: read + write access - 22: read + write + admin access"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/external-invitations/{invitationID}/sendemail:
    post:
      tags: [Drive]
      summary: Send the external invitation email to the invitee
      operationId: postDriveV2SharesByShareIDExternalInvitationsByInvitationIDSendemail
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/invitations:
    get:
      tags: [Drive]
      summary: List invitations in a share
      operationId: getDriveV2SharesByShareIDInvitations
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Invitations:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Invite a Proton user to a share
      operationId: postDriveV2SharesByShareIDInvitations
      description: The current user must have admin permission on the share. The share can be Standard or the RootShare of an Org. Volume (Organization Share)
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Invitation
                - EmailDetails
              properties:
                Invitation:
                  type: object
                EmailDetails:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Invitation:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/invitations/{invitationID}:
    delete:
      tags: [Drive]
      summary: Delete an invitation
      operationId: deleteDriveV2SharesByShareIDInvitationsByInvitationID
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update an invitation
      operationId: putDriveV2SharesByShareIDInvitationsByInvitationID
      description: Only permissions can be changed. They can be changed when the invitation is pending and when it has been rejected. The owner should not be aware of rejection. After the invitation has been accepted, membership permissions can be edited. The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Permissions
              properties:
                Permissions:
                  type: integer
                  description: "Permission bitfield, valid permissions: - 4: read access - 6: read + write access - 22: read + write + admin access"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/invitations/{invitationID}/sendemail:
    post:
      tags: [Drive]
      summary: Send the invitation email to the invitee
      operationId: postDriveV2SharesByShareIDInvitationsByInvitationIDSendemail
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: invitationID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/members:
    get:
      tags: [Drive]
      summary: List members in a share
      operationId: getDriveV2SharesByShareIDMembers
      description: The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Members:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/members/{memberID}:
    delete:
      tags: [Drive]
      summary: Remove a share member
      operationId: deleteDriveV2SharesByShareIDMembersByMemberID
      description: If the current user is an admin of the share they can remove other members. If the current user is not an admin they can only remove themselves.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Update a member
      operationId: putDriveV2SharesByShareIDMembersByMemberID
      description: Only permissions can be changed. They can be changed when the member is active. The current user must have admin permission on the share.
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Permissions
              properties:
                Permissions:
                  type: integer
                  description: "Permission bitfield, cannot exceed the current user's permissions. Valid permissions: - 4: read access - 6: read + write access - 22: read + write + admin access"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/shares/{shareID}/security:
    post:
      tags: [Drive]
      summary: Scan for malware (direct sharing)
      operationId: postDriveV2SharesByShareIDSecurity
      description: "Performs virus checks on hashes of files received in the request payload. See https://drive.gitlab-pages.protontech.ch/documentation/specifications/data/virus-scanning/"
      parameters:
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Hashes
              properties:
                Hashes:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Results:
                        type: array
                        items: {}
                      Errors:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/urls/{token}/bookmark:
    delete:
      tags: [Drive]
      summary: Delete ShareURL Bookmark
      operationId: deleteDriveV2UrlsByTokenBookmark
      description: It soft deletes the bookmark share url, that would be GC later. The user should be the owner of the bookmark.
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create ShareURL Bookmark
      operationId: postDriveV2UrlsByTokenBookmark
      description: It creates a bookmark for the user in an already existing ShareURL. The bookmark would be stored for the current user if the password is encrypted with his/her addressKey
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - BookmarkShareURL
              properties:
                BookmarkShareURL:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      BookmarkShareURL:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/user-link-access:
    get:
      tags: [Drive]
      summary: List link accesses for a share url.
      operationId: getDriveV2UserLinkAccess
      description: "RFC: https://drive.gitlab-pages.protontech.ch/documentation/rfcs/0031-share-resolution-from-copied-url/"
      parameters:
        - name: LinkID
          in: query
          schema:
            type: string
        - name: VolumeID
          in: query
          schema:
            type: string
        - name: ShareID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ContextShare:
                        type: object
                      Invitations:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/delete_multiple:
    post:
      tags: [Drive]
      summary: Delete drafts
      operationId: postDriveV2VolumesByVolumeIDDelete_multiple
      description: Permanently delete files, skipping trash. Can only be done for draft links.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/v2/volumes/{volumeID}/documents:
    post:
      tags: [Drive]
      summary: Create a document/sheet
      operationId: postDriveV2VolumesByVolumeIDDocuments
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ContentKeyPacket
                - ManifestSignature
                - ContentKeyPacketSignature
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                ContentKeyPacket:
                  type: string
                ManifestSignature:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                DocumentType:
                  type: integer
                  description: Document=1, Sheet=2
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Document:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/events/{eventID}:
    get:
      tags: [Drive]
      summary: List volume events (v2)
      operationId: getDriveV2VolumesByVolumeIDEventsByEventID
      description: "Get new events for given volume since eventID. RFC: https://drive.gitlab-pages.protontech.ch/documentation/rfcs/0054-light-events/"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Events:
                        type: array
                        items: {}
                      ConvertibleExternalInvitations:
                        type: array
                        items: {}
                      EventID:
                        type: string
                        description: Last event ID that can be used on the next call. Will be latest/newest-event-id if requested last-event-id does not exist.
                      More:
                        type: boolean
                        description: true if there is more to pull, i.e. there are more events than returned in one call
                      Refresh:
                        type: boolean
                        description: true if client needs to refresh from scratch as their provided event does not exist anymore, i.e. too much time passed since the last event sync
                      DisableSdkQuotaChecks:
                        type: boolean
                        description: true if client should skip SDK-side quota checks (e.g. user has an active free upload timer)
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/files:
    post:
      tags: [Drive]
      summary: Create a new draft file
      operationId: postDriveV2VolumesByVolumeIDFiles
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MIMEType
                - ContentKeyPacket
                - ContentKeyPacketSignature
                - ClientUID
                - IntendedUploadSize
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                MIMEType:
                  type: string
                ContentKeyPacket:
                  type: string
                ContentKeyPacketSignature:
                  type: string
                  description: Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      File:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/files/small:
    post:
      tags: [Drive]
      summary: Upload small file
      operationId: postDriveV2VolumesByVolumeIDFilesSmall
      description: "Potential codes and their meaning: - 2501: The parent link does not exist or is trashed - 2011: The user does not have write permission on the link - 200003: Small file upload can only be used for revisions up to 128 KiB in size (encrypted content + thumbnails) - 200002: Storage quota exceeded - 2001: PGP data is not correct - 200701: A document type cannot create a revision - 2511: A photo link is missing photo metadata - 200300: max folder size reached"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - Metadata
              properties:
                Metadata:
                  type: object
                ContentBlock:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_1:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_2:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_3:
                  type: string
                  description: "Format: binary"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      RevisionID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/files/{linkID}/revisions:
    get:
      tags: [Drive]
      summary: List revisions
      operationId: getDriveV2VolumesByVolumeIDFilesByLinkIDRevisions
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revisions:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create revision
      operationId: postDriveV2VolumesByVolumeIDFilesByLinkIDRevisions
      description: Create a new revision on an existing link. Only one draft can be created at a time. A draft can be deleted using the DELETE revision endpoint if the new draft should be created regardless. The error code indicates the reason for failure. Client unique ID can be used to track revision ownership to improve concurrency control. It can be a single persistent client ID generated by the client and stored locally, or it can be specific to the revision. The client can use it to identify revisions in case it failed to receive the confirmation of the revision creation.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CurrentRevisionID
                - ClientUID
                - IntendedUploadSize
              properties:
                CurrentRevisionID:
                  type: string
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revision:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/small:
    post:
      tags: [Drive]
      summary: Upload small revision
      operationId: postDriveV2VolumesByVolumeIDFilesByLinkIDRevisionsSmall
      description: "Potential codes and their meaning: - 2501: The link does not exist or is trashed - 2011: The user does not have write permission on the link - 200003: Small file upload can only be used for revisions up to 128 KiB in size (encrypted content + thumbnails) - 200002: Storage quota exceeded - 2001: PGP data is not correct - 200700: A document type cannot create a revision - 2511: A photo link cannot have multiple revisions"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - Metadata
              properties:
                Metadata:
                  type: object
                ContentBlock:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_1:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_2:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_3:
                  type: string
                  description: "Format: binary"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      RevisionID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/{revisionID}:
    delete:
      tags: [Drive]
      summary: Delete an obsolete/draft revision
      operationId: deleteDriveV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: Only the volume owner can delete obsolete revisions. Members with write permission can only delete drafts. This will return an error code 2511 INCOMPATIBLE_STATE if the revision is active. Create or revert to another revision first. You cannot delete a draft revision for a draft link. Delete the link instead.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    get:
      tags: [Drive]
      summary: Get revision
      operationId: getDriveV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: Get detailed revision information.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
          description: Number of blocks
        - name: FromBlockIndex
          in: query
          schema:
            type: integer
          description: Block index from which to fetch block list
        - name: NoBlockUrls
          in: query
          schema:
            type: boolean
          description: Do not generate download URLs for blocks
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Revision:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
    put:
      tags: [Drive]
      summary: Commit a revision
      operationId: putDriveV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: The revision becomes the current active one and the updated file content become available for reading.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ManifestSignature
                - SignatureAddress
                - BlockNumber
                - XAttr
                - Photo
                - BlockList
                - ThumbnailToken
                - State
                - ChecksumVerified
              properties:
                ManifestSignature:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
                BlockNumber:
                  type: integer
                  description: Unused. Was meant for shorter partial revisions.
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
                Photo:
                  type: object
                BlockList:
                  type: array
                  items: {}
                  description: Ignored entirely by API. Field can be removed from request by client.
                ThumbnailToken:
                  type: string
                State:
                  type: integer
                  description: Ignored entirely by API, revision will always be committed (made active)
                ChecksumVerified:
                  type: boolean
                  description: Whether the checksum in xattr of the revision content was verified by the client during upload
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/files/{linkID}/revisions/{revisionID}/restore:
    post:
      tags: [Drive]
      summary: Restore a revision
      operationId: postDriveV2VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionIDRestore
      description: ErrorCode
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/folders:
    post:
      tags: [Drive]
      summary: Create a folder
      operationId: postDriveV2VolumesByVolumeIDFolders
      description: Create a new folder under a given parent folder.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NodeHashKey
                - XAttr
                - Name
                - Hash
                - ParentLinkID
                - NodePassphrase
                - NodePassphraseSignature
                - NodeKey
                - SignatureAddress
              properties:
                NodeHashKey:
                  type: string
                  description: Node hash key (random bytes encoded in base64 format), encrypted and signed.
                XAttr:
                  type: string
                  description: Extended attributes encrypted with link key
                Name:
                  type: string
                Hash:
                  type: string
                  description: File/folder name hash
                ParentLinkID:
                  type: string
                NodePassphrase:
                  type: string
                NodePassphraseSignature:
                  type: string
                NodeKey:
                  type: string
                SignatureAddress:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/folders/{linkID}/children:
    get:
      tags: [Drive]
      summary: List folder children (v2)
      operationId: getDriveV2VolumesByVolumeIDFoldersByLinkIDChildren
      description: List children IDs of a given folder.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
          description: Link ID use to indicate where to start the next page
        - name: FoldersOnly
          in: query
          schema:
            type: integer
          description: Show folders only
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkIDs:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                        description: Used for pagination, pass to the next call to get the next page of results
                      More:
                        type: boolean
                        description: Indicates if there is a next page of results
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/links:
    post:
      tags: [Drive]
      summary: Load links details
      operationId: postDriveV2VolumesByVolumeIDLinks
      description: Usage on Photo Volumes of this endpoint is DEPRECATED
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/links/{linkID}/checkAvailableHashes:
    post:
      tags: [Drive]
      summary: Check available hashes
      operationId: postDriveV2VolumesByVolumeIDLinksByLinkIDCheckAvailableHashes
      description: Filter unavailable hashes out of a list of hashes under a given parent folder. Pending hashes from drafts are also listed. They can be filtered with a list of ClientUID.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Hashes
                - ClientUID
              properties:
                Hashes:
                  type: array
                  items: {}
                ClientUID:
                  type: array
                  items: {}
                  description: Client UID list to filter pending drafts with. If not provided, all conflicting draft hashes will be returned in `PendingHashes`
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      AvailableHashes:
                        type: array
                        items: {}
                      PendingHashes:
                        type: array
                        items: {}
                        description: Hashes of existing drafts excluding the ones of provided ClientUIDs
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/links/{linkID}/move:
    put:
      tags: [Drive]
      summary: Move link (v2)
      operationId: putDriveV2VolumesByVolumeIDLinksByLinkIDMove
      description: Move a file or folder. Client must provide new values for fields encrypted with parent NodeKey. Clients moving a file or folder MUST reuse the existing session keys for the name and passphrase as these are also used by shares pointing to the link. The passphrase should NOT be changed,reusing same session key as previously
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - NodePassphrase
                - Hash
                - ParentLinkID
                - OriginalHash
                - NameSignatureEmail
                - ContentHash
                - NodePassphraseSignature
                - SignatureEmail
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                NodePassphrase:
                  type: string
                  description: Node passphrase, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash
                ParentLinkID:
                  type: string
                OriginalHash:
                  type: string
                  description: Current name hash before move operation. Used to prevent race conditions.
                NameSignatureEmail:
                  type: string
                  description: Signature email address used for signing name
                ContentHash:
                  type: string
                  description: "Optional, except when moving a Photo-Link. Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ lower_hex(hmacSha256(folder hash key, lower_hex(sha1(plain content)))) ]"
                NodePassphraseSignature:
                  type: string
                  description: Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address.
                SignatureEmail:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /drive/v2/volumes/{volumeID}/links/{linkID}/rename:
    put:
      tags: [Drive]
      summary: Rename link
      operationId: putDriveV2VolumesByVolumeIDLinksByLinkIDRename
      description: "Rename a file or folder. Client must provide new values for fields linked to name. Clients renaming a file or folder MUST reuse the existing session key for the name as it is also used by shares pointing to the link. Users with access only through a public sharing URL (no editor membership) are limited to renaming their own files and folders: - Unauthenticated users must have created them in their session - Authenticated users' email must match the signature email on the node for folders or active revision for files"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - NameSignatureEmail
                - SignatureAddress
                - OriginalHash
                - MIMEType
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash; ignored/nullable for root-links
                NameSignatureEmail:
                  type: string
                  description: "Format: email"
                SignatureAddress:
                  type: string
                  description: "Format: email"
                OriginalHash:
                  type: string
                  description: Current name hash before move operation. Used to prevent race conditions.
                MIMEType:
                  type: string
                  description: MIME type, optional, only on files.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /drive/v2/volumes/{volumeID}/links/{linkID}/revisions/{revisionID}/verification:
    get:
      tags: [Drive]
      summary: Get verification data.
      operationId: getDriveV2VolumesByVolumeIDLinksByLinkIDRevisionsByRevisionIDVerification
      description: Get data to verify encryption of the revision before committing.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      VerificationCode:
                        type: string
                      ContentKeyPacket:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/remove-mine:
    post:
      tags: [Drive]
      summary: Remove my nodes skipping trash
      operationId: postDriveV2VolumesByVolumeIDRemoveMine
      description: "This is called by Web SDK on public sharing to remove active nodes created by the same user as a way to delete wrongly uploaded files without going to trash. It's supported on the following conditions: - anonymous users must have created the node in their own session - for authenticated users the signature email must match - file/folder must have been created within the last 1 hour - folders must be empty - files must have all revisions created by this user"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/v2/volumes/{volumeID}/shares:
    get:
      tags: [Drive]
      summary: Shared by me
      operationId: getDriveV2VolumesByVolumeIDShares
      description: List Collaborative Shares in the given volume that are not abandoned, i.e. they either have members, invitations or URLs attached.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      AnchorID:
                        type: string
                        description: Used for pagination, pass to the next call to get the next page of results
                      More:
                        type: boolean
                        description: Indicates if there is a next page of results
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/trash:
    get:
      tags: [Drive]
      summary: List volume trash (v2)
      operationId: getDriveV2VolumesByVolumeIDTrash
      description: In personal regular and photo volumes, you need to be the volume owner to access trash. In organization volumes, users can access trash of any files they have write-permission on.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      TrashedLinkIDs:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v2/volumes/{volumeID}/trash/delete_multiple:
    post:
      tags: [Drive]
      summary: Delete items from trash
      operationId: postDriveV2VolumesByVolumeIDTrashDelete_multiple
      description: Permanently delete a list of links from trash in a given volume. The user must be the owner of the volume or admin of the organization.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/v2/volumes/{volumeID}/trash/restore_multiple:
    put:
      tags: [Drive]
      summary: Restore items from trash
      operationId: putDriveV2VolumesByVolumeIDTrashRestore_multiple
      description: Restore list of links from trash to original location. In personal regular and photo volumes, you need to be the volume owner to restore from trash. In organization volumes, users can restore files from trash that they have write-permission on.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/v2/volumes/{volumeID}/trash_multiple:
    post:
      tags: [Drive]
      summary: Trash multiple (v2)
      operationId: postDriveV2VolumesByVolumeIDTrash_multiple
      description: Send multiple links to the trash
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LinkIDs
              properties:
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/v3/photos/volumes/{volumeID}/albums:
    post:
      tags: [Drive]
      summary: Create an album
      operationId: postDriveV3PhotosVolumesByVolumeIDAlbums
      description: "Potential codes and their meaning: - 200300: Limit of albums per volume reached - 2501: Volume does not exist, or is not photo volume - 2011: Insufficient permissions, not volume owner"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - XAttr
                - ParentLinkID
                - NodeKey
                - Name
                - NameHash
              properties:
                XAttr:
                  type: string
                ParentLinkID:
                  type: string
                NodeKey:
                  type: string
                Name:
                  type: string
                NameHash:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Album:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v3/volumes/{volumeID}/documents:
    post:
      tags: [Drive]
      summary: Create a document/sheet
      operationId: postDriveV3VolumesByVolumeIDDocuments
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentLinkID
                - NodeKey
                - Name
                - NameHash
              properties:
                DocumentType:
                  type: integer
                  description: Document=1, Sheet=2
                ParentLinkID:
                  type: string
                NodeKey:
                  type: string
                Name:
                  type: string
                NameHash:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Document:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v3/volumes/{volumeID}/files:
    post:
      tags: [Drive]
      summary: Create a new draft file
      operationId: postDriveV3VolumesByVolumeIDFiles
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MIMEType
                - ClientUID
                - IntendedUploadSize
                - ParentLinkID
                - NodeKey
                - Name
                - NameHash
              properties:
                MIMEType:
                  type: string
                ClientUID:
                  type: string
                  description: "Client unique ID. Useful for marking client's drafts - in case of failure client can recognise its own draft and continue upload."
                IntendedUploadSize:
                  type: integer
                  description: Intended upload file size, future BE size validation
                ParentLinkID:
                  type: string
                NodeKey:
                  type: string
                Name:
                  type: string
                NameHash:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      File:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v3/volumes/{volumeID}/files/small:
    post:
      tags: [Drive]
      summary: Upload small file
      operationId: postDriveV3VolumesByVolumeIDFilesSmall
      description: "Potential codes and their meaning: - 2501: The parent link does not exist or is trashed - 2011: The user does not have write permission on the link - 2032: crypto v2 disabled. - 200003: Small file upload can only be used for revisions up to 128 KiB in size (encrypted content + thumbnails) - 200002: Storage quota exceeded - 200701: A document type cannot create a revision - 2511: A photo link is missing photo metadata - 200300: max folder size reached"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - Metadata
              properties:
                Metadata:
                  type: object
                ContentBlock:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_1:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_2:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_3:
                  type: string
                  description: "Format: binary"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      RevisionID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v3/volumes/{volumeID}/files/{linkID}/revisions/small:
    post:
      tags: [Drive]
      summary: Upload small revision
      operationId: postDriveV3VolumesByVolumeIDFilesByLinkIDRevisionsSmall
      description: "Potential codes and their meaning: - 2501: The link does not exist or is trashed - 2011: The user does not have write permission on the link - 2032: crypto v2 disabled. - 200003: Small file upload can only be used for revisions up to 128 KiB in size (encrypted content + thumbnails) - 200002: Storage quota exceeded - 200700: A document type cannot create a revision - 2511: A photo link cannot have multiple revisions"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - Metadata
              properties:
                Metadata:
                  type: object
                ContentBlock:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_1:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_2:
                  type: string
                  description: "Format: binary"
                ThumbnailBlockType_3:
                  type: string
                  description: "Format: binary"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      RevisionID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v3/volumes/{volumeID}/files/{linkID}/revisions/{revisionID}:
    put:
      tags: [Drive]
      summary: Commit a revision
      operationId: putDriveV3VolumesByVolumeIDFilesByLinkIDRevisionsByRevisionID
      description: The revision becomes the current active one and the updated file content become available for reading.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
        - name: revisionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ManifestHash
                - SignatureEmail
                - ManifestSignature
                - Salt
                - XAttr
                - Photo
                - ChecksumVerified
              properties:
                ManifestHash:
                  type: string
                SignatureEmail:
                  type: string
                  description: "Format: email"
                ManifestSignature:
                  type: string
                Salt:
                  type: string
                XAttr:
                  type: string
                Photo:
                  type: object
                ChecksumVerified:
                  type: boolean
                  description: Whether the checksum in xattr of the revision content was verified by the client during upload
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/v3/volumes/{volumeID}/folders:
    post:
      tags: [Drive]
      summary: Create a folder
      operationId: postDriveV3VolumesByVolumeIDFolders
      description: Create a new folder under a given parent folder.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - XAttr
                - ParentLinkID
                - NodeKey
                - Name
                - NameHash
              properties:
                XAttr:
                  type: string
                ParentLinkID:
                  type: string
                NodeKey:
                  type: string
                Name:
                  type: string
                NameHash:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes:
    get:
      tags: [Drive]
      summary: List volumes
      operationId: getDriveVolumes
      description: "List all volumes owned by the current user - can be between zero and two: none, regular and/or photo. It can also return volumes in locked state, which are - upon creation of new volumes - re-activated with new root shares. The pagination params Page and PageSize are deprecated."
      parameters:
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volumes:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
    post:
      tags: [Drive]
      summary: Create volume
      operationId: postDriveVolumes
      description: "Creating a new volume also creates : + root folder for the new Volume + Main share for the new Volume + Adds ShareMember with given Address ID If the user already has a locked volume, then this locked volume is re-activated with a new root share and folder instead of creating a new volume."
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - ShareKey
                - SharePassphrase
                - SharePassphraseSignature
                - FolderName
                - FolderKey
                - FolderPassphrase
                - FolderPassphraseSignature
                - FolderHashKey
                - VolumeName
                - ShareName
              properties:
                AddressID:
                  type: string
                ShareKey:
                  type: string
                SharePassphrase:
                  type: string
                SharePassphraseSignature:
                  type: string
                FolderName:
                  type: string
                FolderKey:
                  type: string
                FolderPassphrase:
                  type: string
                FolderPassphraseSignature:
                  type: string
                FolderHashKey:
                  type: string
                AddressKeyID:
                  type: string
                  description: "User's encrypted AddressKeyID. Must be the primary key from the AddressID"
                VolumeName:
                  type: string
                ShareName:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volume:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}:
    get:
      tags: [Drive]
      summary: Get volume
      operationId: getDriveVolumesByVolumeID
      description: Return the attributes of a specific volume.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Volume:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/delete_locked:
    put:
      tags: [Drive]
      summary: Delete the locked root shares in the volume.
      operationId: putDriveVolumesByVolumeIDDelete_locked
      description: Web client calls this endpoint when the user decides to delete their locked data and not recover it.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/events/latest:
    get:
      tags: [Drive]
      summary: Get latest volume event
      operationId: getDriveVolumesByVolumeIDEventsLatest
      description: Get latest EventID for a given volume.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      EventID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/events/{eventID}:
    get:
      tags: [Drive]
      summary: List volume events
      operationId: getDriveVolumesByVolumeIDEventsByEventID
      description: Get new events for given volume since eventID.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Events:
                        type: array
                        items: {}
                      EventID:
                        type: string
                        description: Last event ID that can be used on the next call. Will be latest/newest-event-id if requested last-event-id does not exist.
                      More:
                        type: integer
                        description: 1 if there is more to pull, i.e. there are more events than returned in one call
                      Refresh:
                        type: integer
                        description: 1 if client needs to refresh from scratch as their provided event does not exist anymore, i.e. too much time passed since the last event sync
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/folders/{linkID}/calculate-descendents-size:
    get:
      tags: [Drive]
      summary: Calculate size of folder
      operationId: getDriveVolumesByVolumeIDFoldersByLinkIDCalculateDescendentsSize
      description: Calculates the size of a folder, includes all active AND trashed nodes
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      VolumeID:
                        type: string
                        description: VolumeID of the link
                      LinkID:
                        type: string
                        description: LinkID whose descendents size is calculated
                      DescendentsSize:
                        type: integer
                        description: Sum of sizes of all descendents of the link in bytes visible to the user (active and trash)
                      DescendentsCount:
                        type: integer
                        description: Number of descendents (files AND folders) of the link visible to the user (active and trash)
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/links/fetch_metadata:
    post:
      tags: [Drive]
      summary: Fetch links in volume
      operationId: postDriveVolumesByVolumeIDLinksFetch_metadata
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Thumbnails
                - LinkIDs
              properties:
                Thumbnails:
                  type: integer
                  description: Get thumbnail download URLs
                LinkIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Links:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/links/move-multiple:
    put:
      tags: [Drive]
      summary: Move a batch of files, folders or photos.
      operationId: putDriveVolumesByVolumeIDLinksMoveMultiple
      description: "Potential codes and their meaning: - 2501: The volume does not exist. - 2511: cannot move favorite photos from a share - 2000: All main photos have to be sent with related photos."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentLinkID
                - Links
                - NameSignatureEmail
                - SignatureEmail
              properties:
                ParentLinkID:
                  type: string
                Links:
                  type: array
                  items: {}
                NameSignatureEmail:
                  type: string
                  description: Signature email address used for signing name
                SignatureEmail:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/volumes/{volumeID}/links/transfer-multiple:
    put:
      tags: [Drive]
      summary: Transfer photos from and to albums
      operationId: putDriveVolumesByVolumeIDLinksTransferMultiple
      description: "Potential codes and their meaning: - 2501: The volume does not exist. - 2511: cannot move favorite photos from a share - 2000: All main photos have to be sent with related photos."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ParentLinkID
                - Links
                - NameSignatureEmail
                - SignatureEmail
              properties:
                ParentLinkID:
                  type: string
                Links:
                  type: array
                  items: {}
                NameSignatureEmail:
                  type: string
                  description: Signature email address used for signing name
                SignatureEmail:
                  type: string
                  description: "Format: email"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Responses:
                        type: array
                        items: {}
  /drive/volumes/{volumeID}/links/{linkID}/context:
    get:
      tags: [Drive]
      summary: Get context share
      operationId: getDriveVolumesByVolumeIDLinksByLinkIDContext
      description: Gets the highest share, meaning closest to the root, for a link
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ContextShareID:
                        type: string
                        description: Context shareID of the highest level that the user is granted permission
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/links/{linkID}/copy:
    post:
      tags: [Drive]
      summary: Copy a node to a volume
      operationId: postDriveVolumesByVolumeIDLinksByLinkIDCopy
      description: Copy a single file to a volume, providing the new parent link ID.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: linkID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - NodePassphrase
                - Hash
                - TargetVolumeID
                - TargetParentLinkID
                - NameSignatureEmail
                - NodePassphraseSignature
                - SignatureEmail
                - Photos
                - ContentKeyPacketSignature
                - NodeHashKey
              properties:
                Name:
                  type: string
                  description: Name, reusing same session key as previously.
                NodePassphrase:
                  type: string
                  description: Node passphrase, reusing same session key as previously.
                Hash:
                  type: string
                  description: Name hash
                TargetVolumeID:
                  type: string
                  description: Volume ID to copy to.
                TargetParentLinkID:
                  type: string
                  description: New parent link ID to copy to.
                NameSignatureEmail:
                  type: string
                  description: "Format: email"
                NodePassphraseSignature:
                  type: string
                  description: Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address.
                SignatureEmail:
                  type: string
                  description: "Format: email"
                Photos:
                  type: object
                  description: Optional, except when moving a Photo-Link.
                ContentKeyPacketSignature:
                  type: string
                  description: Only for legacy files (signed by the user). Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
                NodeHashKey:
                  type: string
                  description: Only for legacy folders (signed by the user). Node hash key should be unchanged, just re-signed with the NodeKey.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      LinkID:
                        type: string
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/photos:
    get:
      tags: [Drive]
      summary: List photos sorted by capture time
      operationId: getDriveVolumesByVolumeIDPhotos
      description: When paginating to secondary pages, the PreviousPageLastLinkID must be provided.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: Desc
          in: query
          schema:
            type: boolean
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: PreviousPageLastLinkID
          in: query
          schema:
            type: string
          description: The link ID of the last photo from the previous page when requesting secondary pages
        - name: MinimumCaptureTime
          in: query
          schema:
            type: integer
          description: The minimum capture time of photos as UNIX timestamp (in seconds; to filter out older photos)
        - name: Tag
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Photos:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/photos/duplicates:
    post:
      tags: [Drive]
      summary: Find duplicates
      operationId: postDriveVolumesByVolumeIDPhotosDuplicates
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NameHashes
              properties:
                NameHashes:
                  type: array
                  items: {}
                  description: List of Name HMACs to check
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      DuplicateHashes:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/photos/share:
    post:
      tags: [Drive]
      summary: "DEPRECATED: Create photo share"
      operationId: postDriveVolumesByVolumeIDPhotosShare
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /drive/volumes/{volumeID}/photos/share/{shareID}:
    delete:
      tags: [Drive]
      summary: Delete empty photo share
      operationId: deleteDriveVolumesByVolumeIDPhotosShareByShareID
      description: Can only delete Photo Shares that are empty.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: shareID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/restore:
    put:
      tags: [Drive]
      summary: Restore locked data in volume.
      operationId: putDriveVolumesByVolumeIDRestore
      description: "The locked root shares in the volume can be recovered by providing the new encryption material for each share. This operation used to be heavy and processed async. But now it's quick and done synchronously."
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SignatureAddress
                - MainShares
                - Devices
                - PhotoShares
              properties:
                SignatureAddress:
                  type: string
                MainShares:
                  type: array
                  items: {}
                Devices:
                  type: array
                  items: {}
                PhotoShares:
                  type: array
                  items: {}
                AddressKeyID:
                  type: string
                  description: "User's encrypted AddressKeyID. Must be the primary key from the signatureAddress"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/shares:
    post:
      tags: [Drive]
      summary: Create a standard share
      operationId: postDriveVolumesByVolumeIDShares
      description: Cannot create two shares on the same link. Throws 422 with code 2500 in case a share already exists.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - RootLinkID
                - ShareKey
                - SharePassphrase
                - SharePassphraseSignature
                - PassphraseKeyPacket
                - NameKeyPacket
                - Name
              properties:
                AddressID:
                  type: string
                RootLinkID:
                  type: string
                ShareKey:
                  type: string
                SharePassphrase:
                  type: string
                  description: Full PGP message containing (optionally) PassphraseNodeKP and SharePassphrase-KP and data-packet (encrypted SharePassphrase) -> in this exact order
                SharePassphraseSignature:
                  type: string
                PassphraseKeyPacket:
                  type: string
                  description: "Key packet for passphrase of referenced link's node key passphrase"
                NameKeyPacket:
                  type: string
                Name:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Share:
                        type: object
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/thumbnails:
    post:
      tags: [Drive]
      summary: Fetch thumbnails by IDs.
      operationId: postDriveVolumesByVolumeIDThumbnails
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ThumbnailIDs
              properties:
                ThumbnailIDs:
                  type: array
                  items: {}
                  description: List of encrypted ThumbnailIDs. Maximum 30.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Thumbnails:
                        type: array
                        items: {}
                      Errors:
                        type: array
                        items: {}
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/trash:
    delete:
      tags: [Drive]
      summary: Empty volume trash
      operationId: deleteDriveVolumesByVolumeIDTrash
      description: When there are fewer items in trash than a certain threshold, trash will be deleted synchronously returning a 200 HTTP code. Otherwise, it will happen async returning a 202 HTTP code. The user must be the owner of the volume or admin of the organization.
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                        description: ProtonResponseCode
    get:
      tags: [Drive]
      summary: List volume trash
      operationId: getDriveVolumesByVolumeIDTrash
      description: "Requires the user to be the owner of the volume and thus does not work with org volumes. Deprecated: use GET /drive/v2/volumes/{volumeID}/trash instead"
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Trash:
                        type: array
                        items: {}
                        description: Trash per share
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /drive/volumes/{volumeID}/urls:
    get:
      tags: [Drive]
      summary: List ShareURLs in a volume
      operationId: getDriveVolumesByVolumeIDUrls
      parameters:
        - name: volumeID
          in: path
          required: true
          schema:
            type: string
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ShareURLContexts:
                        type: array
                        items: {}
                      More:
                        type: boolean
                        description: Indicates there may be more ShareURLs
                      Code:
                        type: integer
                        description: ProtonResponseCode
  /event-notifier/v1/connection/{encodeURIComponent(connectionID)}/loops:
    post:
      tags: [Event-notifier]
      summary: Subscribe To Event Notifier Loops
      operationId: subscribeToEventNotifierLoops
      parameters:
        - name: encodeURIComponent(connectionID)
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/calendar/importers/{importerID}:
    get:
      tags: [Importer]
      summary: Get Calendar Import Data
      operationId: getCalendarImportData
      parameters:
        - name: importerID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/contacts/importers/{importerID}:
    get:
      tags: [Importer]
      summary: Get Contacts Import Data
      operationId: getContactsImportData
      parameters:
        - name: importerID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/drive/importers/{importerID}:
    get:
      tags: [Importer]
      summary: Get Drive Import Data
      operationId: getDriveImportData
      parameters:
        - name: importerID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/importers:
    get:
      tags: [Importer]
      summary: Get Imports List
      operationId: getImportsList
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Importer]
      summary: Create Import
      operationId: createImport
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                TokenID:
                  type: string
                Source:
                  type: string
                Mail:
                  type: object
                Calendar:
                  type: object
                Contacts:
                  type: object
                Drive:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/importers/cancel:
    put:
      tags: [Importer]
      summary: Cancel Import
      operationId: cancelImport
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ImporterID
                - Features
              properties:
                ImporterID:
                  type: string
                Features:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/importers/resume:
    put:
      tags: [Importer]
      summary: Resume Import
      operationId: resumeImport
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ImporterID
                - Features
              properties:
                ImporterID:
                  type: string
                Features:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/importers/start:
    post:
      tags: [Importer]
      summary: Start Import Task
      operationId: startImportTask
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ImporterID
              properties:
                ImporterID:
                  type: string
                Mail:
                  type: object
                Calendar:
                  type: object
                Contacts:
                  type: object
                Drive:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/importers/{importerID}:
    get:
      tags: [Importer]
      summary: Get Import
      operationId: getImport
      parameters:
        - name: importerID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Importer]
      summary: Update Import
      operationId: updateImport
      parameters:
        - name: importerID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                TokenID:
                  type: string
                Source:
                  type: string
                Mail:
                  type: object
                Calendar:
                  type: object
                Contacts:
                  type: object
                Drive:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/mail/importers/authinfo:
    get:
      tags: [Importer]
      summary: Get Authentication Method
      operationId: getAuthenticationMethod
      parameters:
        - name: Email
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/mail/importers/start/all:
    post:
      tags: [Importer]
      summary: Start Easy Switch Signup Import Task
      operationId: startEasySwitchSignupImportTask
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Source
                - Account
                - Provider
                - AutomaticImport
              properties:
                Source:
                  type: string
                Account:
                  type: string
                Provider:
                  type: integer
                AutomaticImport:
                  type: boolean
                QuotaThresholdRatio:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/mail/importers/{importerID}:
    get:
      tags: [Importer]
      summary: Get Mail Import Data
      operationId: getMailImportData
      parameters:
        - name: importerID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/organizations:
    get:
      tags: [Importer]
      summary: Get Organization Importer
      operationId: getOrganizationImporter
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Importer]
      summary: Create Organization Importer
      operationId: createOrganizationImporter
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Provider
                - Products
                - ImportOrganizationSettings
              properties:
                Provider:
                  type: integer
                Products:
                  type: array
                  items: {}
                ImportOrganizationSettings:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/organizations/connection/status/{provider}:
    get:
      tags: [Importer]
      summary: Get Connection Status
      operationId: getConnectionStatus
      parameters:
        - name: provider
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/organizations/migrations:
    post:
      tags: [Importer]
      summary: Create Organization Importer Migration
      operationId: createOrganizationImporterMigration
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ImporterOrganizationId
                - AddressIds
              properties:
                ImporterOrganizationId:
                  type: string
                AddressIds:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/organizations/users:
    get:
      tags: [Importer]
      summary: Get Organization Users
      operationId: getOrganizationUsers
      parameters:
        - name: UseCachedData
          in: query
          schema:
            type: string
        - name: DomainName
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/organizations/{importerOrganizationId}:
    patch:
      tags: [Importer]
      summary: Patch Organization Importer
      operationId: patchOrganizationImporter
      parameters:
        - name: importerOrganizationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - State
              properties:
                State:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/organizations/{importerOrganizationId}/joining-link:
    get:
      tags: [Importer]
      summary: Get Joining Link
      operationId: getJoiningLink
      parameters:
        - name: importerOrganizationId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Importer]
      summary: Create Joining Link
      operationId: createJoiningLink
      parameters:
        - name: importerOrganizationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - EncryptedTempPassword
              properties:
                EncryptedTempPassword:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/reports:
    get:
      tags: [Importer]
      summary: Get Import Reports List
      operationId: getImportReportsList
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/reports/{reportID}/undo:
    post:
      tags: [Importer]
      summary: Rollback Import
      operationId: rollbackImport
      parameters:
        - name: reportID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/sync:
    get:
      tags: [Importer]
      summary: Get Sync List
      operationId: getSyncList
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Importer]
      summary: Create Sync
      operationId: createSync
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/sync/{syncId}:
    delete:
      tags: [Importer]
      summary: Delete Sync
      operationId: deleteSync
      parameters:
        - name: syncId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /importer/v1/sync/{syncId}/resume:
    put:
      tags: [Importer]
      summary: Resume Sync
      operationId: resumeSync
      parameters:
        - name: syncId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /keys/signedkeylist:
    get:
      tags: [Keys]
      summary: Get Signed Key List Route
      operationId: getSignedKeyListRoute
      parameters:
        - name: Revision
          in: query
          schema:
            type: integer
        - name: Identifier
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /logs/organization/auth:
    delete:
      tags: [Logs]
      summary: Delete Org Users Auth Logs
      operationId: deleteOrgUsersAuthLogs
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /lumo/v1/events/latest:
    get:
      tags: [Lumo]
      summary: Get Latest Lumo Event ID
      operationId: getLatestLumoEventID
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /lumo/v1/events/{eventID}:
    get:
      tags: [Lumo]
      summary: Get Lumo Events
      operationId: getLumoEvents
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /lumo/v1/invitation/remaining:
    get:
      tags: [Lumo]
      summary: Get Remaining Invitations
      operationId: getRemainingInvitations
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/attachments:
    post:
      tags: [Mail]
      summary: Upload Attachment
      operationId: uploadAttachment
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - Filename
                - MessageID
                - ContentID
                - MIMEType
                - KeyPackets
                - DataPacket
              properties:
                Filename:
                  type: string
                MessageID:
                  type: string
                ContentID:
                  type: string
                MIMEType:
                  type: string
                KeyPackets:
                  type: object
                DataPacket:
                  type: object
                Signature:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/attachments/{attachmentID}:
    delete:
      tags: [Mail]
      summary: Remove Attachment
      operationId: removeAttachment
      parameters:
        - name: attachmentID
          in: path
          required: true
          schema:
            type: string
        - name: MessageID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Mail]
      summary: Get Attachment
      operationId: getAttachment
      parameters:
        - name: attachmentID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /mail/v4/attachments/{attachmentID}/metadata:
    get:
      tags: [Mail]
      summary: Get Attachments Metadata
      operationId: getAttachmentsMetadata
      parameters:
        - name: attachmentID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/byoe-address:
    post:
      tags: [Mail]
      summary: Create BYOE Address
      operationId: createBYOEAddress
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
              properties:
                Email:
                  type: string
                OrganizationId:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/byoe-address/{addressID}/convert:
    post:
      tags: [Mail]
      summary: Convert To BYOE Address
      operationId: convertToBYOEAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/byoe-addresses/{addressID}/disconnection:
    put:
      tags: [Mail]
      summary: Disconnect BYOE Address
      operationId: disconnectBYOEAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Data
                - Signature
              properties:
                Data:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/byoe-addresses/{addressID}/reconnection:
    put:
      tags: [Mail]
      summary: Reconnect BYOE Address
      operationId: reconnectBYOEAddress
      parameters:
        - name: addressID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Data
                - Signature
              properties:
                Data:
                  type: string
                Signature:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations:
    get:
      tags: [Mail]
      summary: Query Conversations
      operationId: queryConversations
      parameters:
        - name: Location
          in: query
          schema:
            type: string
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Limit
          in: query
          schema:
            type: integer
        - name: LabelID
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
        - name: Desc
          in: query
          schema:
            type: integer
        - name: Begin
          in: query
          schema:
            type: integer
        - name: End
          in: query
          schema:
            type: integer
        - name: BeginID
          in: query
          schema:
            type: string
        - name: EndID
          in: query
          schema:
            type: string
        - name: Keyword
          in: query
          schema:
            type: string
        - name: Recipients
          in: query
          schema:
            type: string
        - name: From
          in: query
          schema:
            type: string
        - name: Subject
          in: query
          schema:
            type: string
        - name: Attachments
          in: query
          schema:
            type: integer
        - name: Starred
          in: query
          schema:
            type: integer
        - name: Unread
          in: query
          schema:
            type: integer
        - name: AddressID
          in: query
          schema:
            type: string
        - name: ID
          in: query
          schema:
            type: string
        - name: AutoWildcard
          in: query
          schema:
            type: integer
        - name: Anchor
          in: query
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/count:
    get:
      tags: [Mail]
      summary: Query Conversation Count
      operationId: queryConversationCount
      parameters:
        - name: AddressID
          in: query
          schema:
            type: string
        - name: OnlyInInboxForCategories
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/delete:
    put:
      tags: [Mail]
      summary: Delete Conversations
      operationId: deleteConversations
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/label:
    put:
      tags: [Mail]
      summary: Label Conversations
      operationId: labelConversations
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - IDs
              properties:
                LabelID:
                  type: string
                IDs:
                  type: array
                  items: {}
                SpamAction:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/read:
    put:
      tags: [Mail]
      summary: Mark Conversations As Read
      operationId: markConversationsAsRead
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/snooze:
    put:
      tags: [Mail]
      summary: Snooze Conversations
      operationId: snoozeConversations
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/unlabel:
    put:
      tags: [Mail]
      summary: Unlabel Conversations
      operationId: unlabelConversations
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - IDs
              properties:
                LabelID:
                  type: string
                IDs:
                  type: array
                  items: {}
                SpamAction:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/unread:
    put:
      tags: [Mail]
      summary: Mark Conversations As Unread
      operationId: markConversationsAsUnread
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/unsnooze:
    put:
      tags: [Mail]
      summary: Unsnooze Conversations
      operationId: unsnoozeConversations
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/conversations/{conversationID}:
    get:
      tags: [Mail]
      summary: Get Conversation
      operationId: getConversation
      parameters:
        - name: conversationID
          in: path
          required: true
          schema:
            type: string
        - name: MessageID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/eo/attachment/{attachmentId}:
    get:
      tags: [Mail]
      summary: Get EO Attachment
      operationId: getEOAttachment
      parameters:
        - name: attachmentId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /mail/v4/eo/message:
    get:
      tags: [Mail]
      summary: Get EO Message
      operationId: getEOMessage
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/eo/reply:
    post:
      tags: [Mail]
      summary: EO Reply
      operationId: EOReply
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - Body
                - ReplyBody
                - Filename[]
                - MIMEType[]
                - ContentID[]
                - KeyPackets[]
                - DataPacket[]
              properties:
                Body:
                  type: string
                ReplyBody:
                  type: string
                Filename[]:
                  type: array
                  items: {}
                MIMEType[]:
                  type: array
                  items: {}
                ContentID[]:
                  type: array
                  items: {}
                KeyPackets[]:
                  type: array
                  items: {}
                DataPacket[]:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/eo/token/{id}:
    get:
      tags: [Mail]
      summary: Get EO Token
      operationId: getEOToken
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/filters:
    get:
      tags: [Mail]
      summary: Query Filters
      operationId: queryFilters
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Add Tree Filter
      operationId: addTreeFilter
      parameters:
        - name: Source
          in: query
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Status
                - ID
                - Version
                - Simple
                - Tree
                - Sieve
              properties:
                Name:
                  type: string
                Status:
                  type: string
                ID:
                  type: string
                Version:
                  type: string
                Simple:
                  type: string
                Tree:
                  type: string
                Sieve:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/filters/check:
    put:
      tags: [Mail]
      summary: Check Sieve Filter
      operationId: checkSieveFilter
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Version:
                  type: string
                Sieve:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/filters/order:
    put:
      tags: [Mail]
      summary: Update Filter Order
      operationId: updateFilterOrder
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/filters/{filterID}/disable:
    put:
      tags: [Mail]
      summary: Disable Filter
      operationId: disableFilter
      parameters:
        - name: filterID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/filters/{filterID}/enable:
    put:
      tags: [Mail]
      summary: Enable Filter
      operationId: enableFilter
      parameters:
        - name: filterID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/filters/{id}:
    delete:
      tags: [Mail]
      summary: Delete Filter
      operationId: deleteFilter
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Mail]
      summary: Query Filter
      operationId: queryFilter
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Mail]
      summary: Update Filter
      operationId: updateFilter
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
                - Status
                - ID
                - Version
                - Simple
                - Tree
                - Sieve
              properties:
                Name:
                  type: string
                Status:
                  type: string
                ID:
                  type: string
                Version:
                  type: string
                Simple:
                  type: string
                Tree:
                  type: string
                Sieve:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings:
    post:
      tags: [Mail]
      summary: Setup Forwarding
      operationId: setupForwarding
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Type
                - ForwarderAddressID
                - ForwardeeEmail
                - Tree
                - Version
              properties:
                Type:
                  type: integer
                ForwarderAddressID:
                  type: string
                ForwardeeEmail:
                  type: string
                ForwardeePrivateKey:
                  type: string
                  description: Only for internal E2EE forwarding
                ActivationToken:
                  type: string
                  description: Only for internal E2EE forwarding
                ProxyInstances:
                  type: array
                  items: {}
                  description: Only for E2EE forwarding
                Tree:
                  type: array
                  items: {}
                Version:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/external/{jwt}:
    delete:
      tags: [Mail]
      summary: Reject External Forwarding
      operationId: rejectExternalForwarding
      parameters:
        - name: jwt
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Mail]
      summary: Get External Forwarding
      operationId: getExternalForwarding
      parameters:
        - name: jwt
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Mail]
      summary: Accept External Forwarding
      operationId: acceptExternalForwarding
      parameters:
        - name: jwt
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/incoming:
    get:
      tags: [Mail]
      summary: Query Incoming Forwardings
      operationId: queryIncomingForwardings
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: AddressID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/incoming/{id}:
    get:
      tags: [Mail]
      summary: Query Incoming Forwarding
      operationId: queryIncomingForwarding
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/outgoing:
    get:
      tags: [Mail]
      summary: Query Outgoing Forwardings
      operationId: queryOutgoingForwardings
      parameters:
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: AddressID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/outgoing/{id}:
    get:
      tags: [Mail]
      summary: Query Outgoing Forwarding
      operationId: queryOutgoingForwarding
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/{ID}:
    delete:
      tags: [Mail]
      summary: Delete Forwarding
      operationId: deleteForwarding
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Mail]
      summary: Update Forwarding
      operationId: updateForwarding
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ID
                - ForwardeePrivateKey
                - ActivationToken
                - ProxyInstances
              properties:
                ID:
                  type: string
                ForwardeePrivateKey:
                  type: string
                ActivationToken:
                  type: string
                ProxyInstances:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/{ID}/filter:
    put:
      tags: [Mail]
      summary: Update Forwarding Filter
      operationId: updateForwardingFilter
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/{ID}/pause:
    put:
      tags: [Mail]
      summary: Pause Forwarding
      operationId: pauseForwarding
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/{ID}/reinvite:
    put:
      tags: [Mail]
      summary: Resend Forwarding Invitation
      operationId: resendForwardingInvitation
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/forwardings/{ID}/resume:
    put:
      tags: [Mail]
      summary: Resume Forwarding
      operationId: resumeForwarding
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/incomingdefaults:
    get:
      tags: [Mail]
      summary: Get Incoming Defaults
      operationId: getIncomingDefaults
      parameters:
        - name: Location
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Keyword
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Add Incoming Default
      operationId: addIncomingDefault
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Location
              properties:
                Overwrite:
                  type: boolean
                  description: If email is already registered in incomingDefaults we overwrite the location Avoids to find the already exiting item ID
                Email:
                  type: string
                Domain:
                  type: string
                Location:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/incomingdefaults/delete:
    put:
      tags: [Mail]
      summary: Delete Incoming Defaults
      operationId: deleteIncomingDefaults
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/incomingdefaults/{incomingDefaultID}:
    put:
      tags: [Mail]
      summary: Update Incoming Default
      operationId: updateIncomingDefault
      parameters:
        - name: incomingDefaultID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Location
              properties:
                Email:
                  type: string
                Domain:
                  type: string
                Location:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages:
    get:
      tags: [Mail]
      summary: Query Message Metadata
      operationId: queryMessageMetadata
      parameters:
        - name: Location
          in: query
          schema:
            type: string
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Limit
          in: query
          schema:
            type: integer
        - name: LabelID
          in: query
          schema:
            type: string
        - name: Sort
          in: query
          schema:
            type: string
        - name: Desc
          in: query
          schema:
            type: integer
        - name: Begin
          in: query
          schema:
            type: integer
        - name: End
          in: query
          schema:
            type: integer
        - name: BeginID
          in: query
          schema:
            type: string
        - name: EndID
          in: query
          schema:
            type: string
        - name: Keyword
          in: query
          schema:
            type: string
        - name: Recipients
          in: query
          schema:
            type: string
        - name: From
          in: query
          schema:
            type: string
        - name: Subject
          in: query
          schema:
            type: string
        - name: Attachments
          in: query
          schema:
            type: integer
        - name: Starred
          in: query
          schema:
            type: integer
        - name: Unread
          in: query
          schema:
            type: integer
        - name: AddressID
          in: query
          schema:
            type: string
        - name: ID
          in: query
          schema:
            type: string
        - name: AutoWildcard
          in: query
          schema:
            type: integer
        - name: Anchor
          in: query
          schema:
            type: string
        - name: AnchorID
          in: query
          schema:
            type: string
        - name: NewsletterSubscriptionID
          in: query
          schema:
            type: array
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Create Draft
      operationId: createDraft
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Message
                - AttachmentKeyPackets
              properties:
                ParentID:
                  type: string
                Action:
                  type: integer
                Message:
                  type: object
                AttachmentKeyPackets:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/apply-filters:
    post:
      tags: [Mail]
      summary: Apply Filters
      operationId: applyFilters
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                SearchContext:
                  type: object
                Version:
                  type: string
                Sieve:
                  type: string
                AllFilters:
                  type: integer
                FilterIDs:
                  type: array
                  items: {}
                AllowList:
                  type: integer
                BlockList:
                  type: integer
                SpamList:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/batch/label:
    post:
      tags: [Mail]
      summary: Label All
      operationId: labelAll
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SearchContext
                - AddLabelIDs
                - RemoveLabelIDs
              properties:
                SearchContext:
                  type: object
                AddLabelIDs:
                  type: array
                  items: {}
                RemoveLabelIDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/batch/move:
    post:
      tags: [Mail]
      summary: Move All Batch
      operationId: moveAllBatch
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SearchContext
                - DestinationLabelID
              properties:
                SearchContext:
                  type: object
                DestinationLabelID:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/batch/read:
    post:
      tags: [Mail]
      summary: Mark All Messages As Read
      operationId: markAllMessagesAsRead
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SearchContext
              properties:
                SearchContext:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/batch/unread:
    post:
      tags: [Mail]
      summary: Mark All Messages As Unread
      operationId: markAllMessagesAsUnread
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SearchContext
              properties:
                SearchContext:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/count:
    get:
      tags: [Mail]
      summary: Query Message Count
      operationId: queryMessageCount
      parameters:
        - name: AddressID
          in: query
          schema:
            type: string
        - name: OnlyInInboxForCategories
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/delete:
    put:
      tags: [Mail]
      summary: Delete Messages
      operationId: deleteMessages
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/empty:
    delete:
      tags: [Mail]
      summary: Empty Label
      operationId: emptyLabel
      parameters:
        - name: LabelID
          in: query
          schema:
            type: string
        - name: AddressID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/expire:
    put:
      tags: [Mail]
      summary: Set Expiration
      operationId: setExpiration
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/label:
    put:
      tags: [Mail]
      summary: Label Messages
      operationId: labelMessages
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - IDs
              properties:
                LabelID:
                  type: string
                IDs:
                  type: array
                  items: {}
                SpamAction:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/mark/unsubscribed:
    put:
      tags: [Mail]
      summary: Mark As Unsubscribed
      operationId: markAsUnsubscribed
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/read:
    put:
      tags: [Mail]
      summary: Mark Message As Read
      operationId: markMessageAsRead
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/send/direct:
    post:
      tags: [Mail]
      summary: Send Message Direct
      operationId: sendMessageDirect
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Message
                - AttachmentKeys
                - AutoSaveContacts
                - Packages
              properties:
                Message:
                  type: object
                ParentID:
                  type: integer
                Action:
                  type: integer
                AttachmentKeys:
                  type: object
                ExpirationTime:
                  type: integer
                ExpiresIn:
                  type: integer
                AutoSaveContacts:
                  type: integer
                Packages:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/unlabel:
    put:
      tags: [Mail]
      summary: Unlabel Messages
      operationId: unlabelMessages
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LabelID
                - IDs
              properties:
                LabelID:
                  type: string
                IDs:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/unread:
    put:
      tags: [Mail]
      summary: Mark Message As Unread
      operationId: markMessageAsUnread
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/{ID}/unsubscribe:
    post:
      tags: [Mail]
      summary: One Click Unsubscribe
      operationId: oneClickUnsubscribe
      parameters:
        - name: ID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/{messageID}:
    get:
      tags: [Mail]
      summary: Get Message
      operationId: getMessage
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Send Message Form
      operationId: sendMessageForm
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
        - name: Source
          in: query
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Mail]
      summary: Update Draft
      operationId: updateDraft
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Message
                - AttachmentKeyPackets
              properties:
                Message:
                  type: object
                AttachmentKeyPackets:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/{messageID}/cancel_send:
    post:
      tags: [Mail]
      summary: Cancel Send
      operationId: cancelSend
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/{messageID}/force_send:
    post:
      tags: [Mail]
      summary: Force Send
      operationId: forceSend
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/{messageID}/mark/ham:
    put:
      tags: [Mail]
      summary: Mark As Ham
      operationId: markAsHam
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/messages/{messageID}/receipt:
    post:
      tags: [Mail]
      summary: Read Receipt
      operationId: readReceipt
      parameters:
        - name: messageID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/newsletter-subscriptions/{subscriptionID}:
    delete:
      tags: [Mail]
      summary: Delete Newsletter Subscription By ID
      operationId: deleteNewsletterSubscriptionByID
      parameters:
        - name: subscriptionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Update Newsletter Subscription
      operationId: updateNewsletterSubscription
      parameters:
        - name: subscriptionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Unsubscribed:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/newsletter-subscriptions/{subscriptionID}/filter:
    post:
      tags: [Mail]
      summary: Apply Newsletter Subscription Filter
      operationId: applyNewsletterSubscriptionFilter
      parameters:
        - name: subscriptionID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ApplyTo
              properties:
                ApplyTo:
                  type: string
                DestinationFolder:
                  type: string
                MarkAsRead:
                  type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/newsletter-subscriptions/{subscriptionID}/unsubscribe:
    post:
      tags: [Mail]
      summary: Unsubscribe Newsletter Subscription
      operationId: unsubscribeNewsletterSubscription
      parameters:
        - name: subscriptionID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/newsletter-subscriptions{paginationString :
    get:
      tags: [Mail]
      summary: Get Newsletter Subscription
      operationId: getNewsletterSubscription
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/orgincomingdefaults:
    get:
      tags: [Mail]
      summary: Get Org Incoming Defaults
      operationId: getOrgIncomingDefaults
      parameters:
        - name: Location
          in: query
          schema:
            type: integer
        - name: Page
          in: query
          schema:
            type: integer
        - name: PageSize
          in: query
          schema:
            type: integer
        - name: Keyword
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Add Org Incoming Default
      operationId: addOrgIncomingDefault
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Location
              properties:
                Overwrite:
                  type: boolean
                  description: If email is already registered in orgIncomingDefaults we overwrite the location Avoids to find the already exiting item ID
                Email:
                  type: string
                Domain:
                  type: string
                Location:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/orgincomingdefaults/delete:
    put:
      tags: [Mail]
      summary: Delete Org Incoming Defaults
      operationId: deleteOrgIncomingDefaults
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/orgincomingdefaults/{orgIncomingDefaultID}:
    put:
      tags: [Mail]
      summary: Update Org Incoming Default
      operationId: updateOrgIncomingDefault
      parameters:
        - name: orgIncomingDefaultID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Location
              properties:
                Email:
                  type: string
                Domain:
                  type: string
                Location:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings:
    get:
      tags: [Mail]
      summary: Get Mail Settings
      operationId: getMailSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/almost-all-mail:
    put:
      tags: [Mail]
      summary: Update Show Almost All Mail
      operationId: updateShowAlmostAllMail
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/attachpublic:
    put:
      tags: [Mail]
      summary: Update Attach Public Key
      operationId: updateAttachPublicKey
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/auto-delete-spam-and-trash-days:
    put:
      tags: [Mail]
      summary: Update Auto Delete
      operationId: updateAutoDelete
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/autocontacts:
    put:
      tags: [Mail]
      summary: Update Auto Save Contacts
      operationId: updateAutoSaveContacts
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/autoresponder:
    put:
      tags: [Mail]
      summary: Update Autoresponder
      operationId: updateAutoresponder
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - IsEnabled
                - Message
                - Repeat
                - DaysSelected
                - Zone
                - Subject
              properties:
                IsEnabled:
                  type: boolean
                Message:
                  type: string
                Repeat:
                  type: integer
                DaysSelected:
                  type: array
                  items: {}
                Zone:
                  type: string
                Subject:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/block-sender-confirmation:
    put:
      tags: [Mail]
      summary: Update Block Sender Confirmation
      operationId: updateBlockSenderConfirmation
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/composermode:
    put:
      tags: [Mail]
      summary: Update Composer Mode
      operationId: updateComposerMode
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/confirmlink:
    put:
      tags: [Mail]
      summary: Update Confirm Link
      operationId: updateConfirmLink
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/delaysend:
    put:
      tags: [Mail]
      summary: Update Delay Send
      operationId: updateDelaySend
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/drafttype:
    put:
      tags: [Mail]
      summary: Update Draft Type
      operationId: updateDraftType
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/enablefoldercolor:
    put:
      tags: [Mail]
      summary: Update Enable Folder Color
      operationId: updateEnableFolderColor
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/fontface:
    put:
      tags: [Mail]
      summary: Update Font Face
      operationId: updateFontFace
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/fontsize:
    put:
      tags: [Mail]
      summary: Update Font Size
      operationId: updateFontSize
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/hide-embedded-images:
    put:
      tags: [Mail]
      summary: Update Hide Embedded Images
      operationId: updateHideEmbeddedImages
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/hide-remote-images:
    put:
      tags: [Mail]
      summary: Update Hide Remote Images
      operationId: updateHideRemoteImages
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/hide-sender-images:
    put:
      tags: [Mail]
      summary: Update Hide Sender Images
      operationId: updateHideSenderImages
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/imageproxy:
    put:
      tags: [Mail]
      summary: Update Image Proxy
      operationId: updateImageProxy
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/inheritparentfoldercolor:
    put:
      tags: [Mail]
      summary: Update Inherit Parent Folder Color
      operationId: updateInheritParentFolderColor
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/kt:
    put:
      tags: [Mail]
      summary: Update KT
      operationId: updateKT
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/mail-category-view:
    put:
      tags: [Mail]
      summary: Update Mail Category View
      operationId: updateMailCategoryView
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/mail-category-view-counters-enabled:
    put:
      tags: [Mail]
      summary: Update Mail Category View Counters Enabled
      operationId: updateMailCategoryViewCountersEnabled
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/moved:
    put:
      tags: [Mail]
      summary: Update Show Moved
      operationId: updateShowMoved
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/next-message-on-move:
    put:
      tags: [Mail]
      summary: Update Next Message On Move
      operationId: updateNextMessageOnMove
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/pagesize:
    put:
      tags: [Mail]
      summary: Update Page Size
      operationId: updatePageSize
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/pgpscheme:
    put:
      tags: [Mail]
      summary: Update PGP Scheme
      operationId: updatePGPScheme
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/pmsignature:
    put:
      tags: [Mail]
      summary: Update PM Signature
      operationId: updatePMSignature
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/pmsignature-referral:
    put:
      tags: [Mail]
      summary: Update PM Signature Referral Link
      operationId: updatePMSignatureReferralLink
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/promptpin:
    put:
      tags: [Mail]
      summary: Update Prompt Pin
      operationId: updatePromptPin
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/remove-image-metadata:
    put:
      tags: [Mail]
      summary: Update Remove Image Metadata
      operationId: updateRemoveImageMetadata
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/righttoleft:
    put:
      tags: [Mail]
      summary: Update Right To Left
      operationId: updateRightToLeft
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/shortcuts:
    put:
      tags: [Mail]
      summary: Update Shortcuts
      operationId: updateShortcuts
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/sign:
    put:
      tags: [Mail]
      summary: Update Sign
      operationId: updateSign
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/spam-action:
    put:
      tags: [Mail]
      summary: Update Spam Action
      operationId: updateSpamAction
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/stickylabels:
    put:
      tags: [Mail]
      summary: Update Sticky Labels
      operationId: updateStickyLabels
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/swipeleft:
    put:
      tags: [Mail]
      summary: Update Swipe Left
      operationId: updateSwipeLeft
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/swiperight:
    put:
      tags: [Mail]
      summary: Update Swipe Right
      operationId: updateSwipeRight
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/unread-favicon:
    put:
      tags: [Mail]
      summary: Update Display Unread Favicon
      operationId: updateDisplayUnreadFavicon
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/viewlayout:
    put:
      tags: [Mail]
      summary: Update View Layout
      operationId: updateViewLayout
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/settings/viewmode:
    put:
      tags: [Mail]
      summary: Update View Mode
      operationId: updateViewMode
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/smtptokens:
    get:
      tags: [Mail]
      summary: Get Tokens
      operationId: getTokens
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Mail]
      summary: Create Token
      operationId: createToken
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/smtptokens/{tokenID}:
    delete:
      tags: [Mail]
      summary: Delete Token
      operationId: deleteToken
      parameters:
        - name: tokenID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v4/undoactions:
    post:
      tags: [Mail]
      summary: Undo Actions
      operationId: undoActions
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v6/events/latest:
    get:
      tags: [Mail]
      summary: Get Latest Mail Event IDV6
      operationId: getLatestMailEventIDV6
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /mail/v6/events/{eventID}:
    get:
      tags: [Mail]
      summary: Get Mail Events V6
      operationId: getMailEventsV6
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/events/latest:
    get:
      tags: [Meet]
      summary: Get Latest Meet Event ID
      operationId: getLatestMeetEventID
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/events/{eventID}:
    get:
      tags: [Meet]
      summary: Get Meet Events
      operationId: getMeetEvents
      parameters:
        - name: eventID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings:
    post:
      tags: [Meet]
      summary: Create Meeting Call
      operationId: createMeetingCall
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Password
                - Salt
                - SessionKey
                - SRPModulusID
                - SRPSalt
                - SRPVerifier
                - StartTime
                - EndTime
                - RRule
                - Timezone
                - Type
                - CustomPassword
              properties:
                AddressID:
                  type: string
                Name:
                  type: string
                Password:
                  type: string
                Salt:
                  type: string
                SessionKey:
                  type: string
                SRPModulusID:
                  type: string
                SRPSalt:
                  type: string
                SRPVerifier:
                  type: string
                StartTime:
                  type: string
                EndTime:
                  type: string
                RRule:
                  type: string
                Timezone:
                  type: string
                State:
                  type: integer
                Type:
                  type: integer
                CustomPassword:
                  type: integer
                ProtonCalendar:
                  type: integer
                WaitingRoom:
                  type: integer
                  description: // Make WaitingRoom mandatory when cleanup MeetWaitingRoom feature flag
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/by-link/{meetingId}:
    get:
      tags: [Meet]
      summary: Get Meeting By Link Name Call
      operationId: getMeetingByLinkNameCall
      parameters:
        - name: meetingId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}:
    get:
      tags: [Meet]
      summary: Query Meeting Info
      operationId: queryMeetingInfo
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/access-tokens:
    post:
      tags: [Meet]
      summary: Query Meet Access Token
      operationId: queryMeetAccessToken
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/auth:
    post:
      tags: [Meet]
      summary: Query Meet Auth
      operationId: queryMeetAuth
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/feedback:
    post:
      tags: [Meet]
      summary: Send Feedback
      operationId: sendFeedback
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Score
                - Feedback
              properties:
                Score:
                  type: integer
                Feedback:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/info:
    get:
      tags: [Meet]
      summary: Query Init Meet SRP Handshake
      operationId: queryInitMeetSRPHandshake
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/lock:
    post:
      tags: [Meet]
      summary: Lock Meeting Call
      operationId: lockMeetingCall
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AccessToken
              properties:
                AccessToken:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/participants:
    get:
      tags: [Meet]
      summary: Query Participants
      operationId: queryParticipants
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/participants/count:
    get:
      tags: [Meet]
      summary: Query Participants Count
      operationId: queryParticipantsCount
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/participants/{participantUuid}/permissions:
    put:
      tags: [Meet]
      summary: Update Participant Permissions
      operationId: updateParticipantPermissions
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
        - name: participantUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Publish
                - PublishData
                - Subscribe
                - Admin
                - AccessToken
              properties:
                Publish:
                  type: integer
                PublishData:
                  type: integer
                Subscribe:
                  type: integer
                Admin:
                  type: integer
                AccessToken:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/unlock:
    post:
      tags: [Meet]
      summary: Unlock Meeting Call
      operationId: unlockMeetingCall
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AccessToken
              properties:
                AccessToken:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/links/{meetingLinkName}/waiting-room:
    put:
      tags: [Meet]
      summary: Toggle Waiting Room
      operationId: toggleWaitingRoom
      parameters:
        - name: meetingLinkName
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - WaitingRoom
              properties:
                WaitingRoom:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/personal/rotate:
    post:
      tags: [Meet]
      summary: Rotate Personal Meeting Link
      operationId: rotatePersonalMeetingLink
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Password
                - Salt
                - SessionKey
                - SRPModulusID
                - SRPSalt
                - SRPVerifier
                - StartTime
                - EndTime
                - RRule
                - Timezone
                - Type
                - CustomPassword
              properties:
                AddressID:
                  type: string
                Name:
                  type: string
                Password:
                  type: string
                Salt:
                  type: string
                SessionKey:
                  type: string
                SRPModulusID:
                  type: string
                SRPSalt:
                  type: string
                SRPVerifier:
                  type: string
                StartTime:
                  type: string
                EndTime:
                  type: string
                RRule:
                  type: string
                Timezone:
                  type: string
                State:
                  type: integer
                Type:
                  type: integer
                CustomPassword:
                  type: integer
                ProtonCalendar:
                  type: integer
                WaitingRoom:
                  type: integer
                  description: // Make WaitingRoom mandatory when cleanup MeetWaitingRoom feature flag
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/{meetingId}:
    delete:
      tags: [Meet]
      summary: Delete Meeting Call
      operationId: deleteMeetingCall
      parameters:
        - name: meetingId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    get:
      tags: [Meet]
      summary: Get Meeting Query
      operationId: getMeetingQuery
      parameters:
        - name: meetingId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/{meetingId}/name:
    put:
      tags: [Meet]
      summary: Update Meeting Name Call
      operationId: updateMeetingNameCall
      parameters:
        - name: meetingId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Name
              properties:
                Name:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/meetings/{meetingId}/schedule:
    put:
      tags: [Meet]
      summary: Update Meeting Schedule Call
      operationId: updateMeetingScheduleCall
      parameters:
        - name: meetingId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - StartTime
                - EndTime
                - Timezone
                - RRule
              properties:
                StartTime:
                  type: string
                EndTime:
                  type: string
                Timezone:
                  type: string
                RRule:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /meet/v1/user-settings:
    put:
      tags: [Meet]
      summary: Update Meet User Settings Call
      operationId: updateMeetUserSettingsCall
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MeetingID
                - AddressID
              properties:
                MeetingID:
                  type: string
                AddressID:
                  type: string
                CaptionLanguage:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /members/{MemberID}/keys:
    post:
      tags: [Members]
      summary: Create Member Key Route
      operationId: createMemberKeyRoute
      parameters:
        - name: MemberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MemberID
                - Token
                - AddressID
                - Primary
                - SignedKeyList
              properties:
                MemberID:
                  type: string
                Token:
                  type: string
                AddressID:
                  type: string
                Primary:
                  type: integer
                SignedKeyList:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /members/{MemberID}/keys/migrate:
    post:
      tags: [Members]
      summary: Migrate Members Address Keys Route
      operationId: migrateMembersAddressKeysRoute
      parameters:
        - name: MemberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MemberID
                - AddressKeys
                - SignedKeyLists
              properties:
                MemberID:
                  type: string
                AddressKeys:
                  type: array
                  items: {}
                SignedKeyLists:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /members/{MemberID}/keys/setup:
    post:
      tags: [Members]
      summary: Setup Member Key Route
      operationId: setupMemberKeyRoute
      parameters:
        - name: MemberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MemberID
                - AddressKeys
                - KeySalt
              properties:
                MemberID:
                  type: string
                AddressKeys:
                  type: string
                KeySalt:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /members/{memberID}/sessions:
    delete:
      tags: [Members]
      summary: Revoke Sessions
      operationId: revokeSessions
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /metrics:
    post:
      tags: [Metrics]
      summary: Metrics
      operationId: metrics
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Log
              properties:
                Log:
                  type: integer
                Title:
                  type: string
                Data:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth-token/v1/tokens:
    get:
      tags: [Oauth-token]
      summary: Get Tokens
      operationId: getTokens
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [Oauth-token]
      summary: Create Token
      operationId: createToken
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Code
                - Provider
                - RedirectUri
                - Features
                - Source
              properties:
                Code:
                  type: string
                Provider:
                  type: integer
                RedirectUri:
                  type: string
                Features:
                  type: array
                  items: {}
                Source:
                  type: integer
                Account:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth-token/v1/tokens/external:
    post:
      tags: [Oauth-token]
      summary: Create Signup O Auth Token
      operationId: createSignupOAuthToken
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Code
                - Provider
                - RedirectUri
                - Features
                - Source
              properties:
                Code:
                  type: string
                Provider:
                  type: integer
                RedirectUri:
                  type: string
                Features:
                  type: array
                  items: {}
                Source:
                  type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth-token/v1/tokens/features:
    get:
      tags: [Oauth-token]
      summary: Get Tokens By Feature
      operationId: getTokensByFeature
      parameters:
        - name: Account
          in: query
          schema:
            type: string
        - name: Features
          in: query
          schema:
            type: array
        - name: Provider
          in: query
          schema:
            type: integer
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth-token/v1/tokens/{tokenId}:
    delete:
      tags: [Oauth-token]
      summary: Delete Token
      operationId: deleteToken
      parameters:
        - name: tokenId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth/v1/client/{clientID}:
    get:
      tags: [Oauth]
      summary: Get O Auth Client Info
      operationId: getOAuthClientInfo
      parameters:
        - name: clientID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth/v1/fork:
    post:
      tags: [Oauth]
      summary: Post O Auth Fork
      operationId: postOAuthFork
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ClientID
                - OaSession
              properties:
                ClientID:
                  type: string
                OaSession:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /oauth/v1/last_access:
    get:
      tags: [Oauth]
      summary: Get O Auth Last Access
      operationId: getOAuthLastAccess
      parameters:
        - name: ClientID
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /organizations/subsidiaries/{id}/delegated-managers/{memberId}:
    post:
      tags: [Organizations]
      summary: Assign Msp Subsidiary Manager
      operationId: assignMspSubsidiaryManager
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: memberId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - OrganizationKeyActivation
              properties:
                OrganizationKeyActivation:
                  type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /organizations/subsidiaries/{id}/members:
    get:
      tags: [Organizations]
      summary: Get Msp Subsidiary Managers
      operationId: getMspSubsidiaryManagers
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /organizations/subsidiaries/{id}/members/{memberId}:
    delete:
      tags: [Organizations]
      summary: Unassign Msp Subsidiary Manager
      operationId: unassignMspSubsidiaryManager
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: memberId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /partner/v1/domain:
    put:
      tags: [Partner]
      summary: Claim Orphan Domain
      operationId: claimOrphanDomain
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Token
              properties:
                Token:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /partner/v1/whitelist:
    post:
      tags: [Partner]
      summary: Partner Whitelist
      operationId: partnerWhitelist
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Token
              properties:
                Token:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/alias_sync/pending:
    get:
      tags: [pass]
      summary: Get Pass Alias Sync Pending
      operationId: getPassAliasSyncPending
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      PendingAliases:
                        type: object
  /pass/v1/alias_sync/share/{shareId}/create:
    post:
      tags: [pass]
      summary: Post Pass Alias Sync Share Create
      operationId: postPassAliasSyncShareCreate
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Items
              properties:
                Items:
                  type: array
                  items: {}
                  description: Pending aliases to be created. At most 100
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Revisions:
                        type: object
  /pass/v1/alias_sync/status:
    get:
      tags: [pass]
      summary: Get Pass Alias Sync Status
      operationId: getPassAliasSyncStatus
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      SyncStatus:
                        type: object
  /pass/v1/alias_sync/sync:
    post:
      tags: [pass]
      summary: Post Pass Alias Sync Sync
      operationId: postPassAliasSyncSync
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                DefaultShareID:
                  type: string
                  description: ShareID to store the alias when syncing
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/breach:
    get:
      tags: [pass]
      summary: Get Pass Breach
      operationId: getPassBreach
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Breaches:
                        type: object
  /pass/v1/breach/address/{addresId}/breaches:
    get:
      tags: [pass]
      summary: Get Pass Breach Address Breaches
      operationId: getPassBreachAddressBreaches
      parameters:
        - name: addresId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Breaches:
                        type: object
  /pass/v1/breach/address/{addresId}/monitor:
    put:
      tags: [pass]
      summary: Put Pass Breach Address Monitor
      operationId: putPassBreachAddressMonitor
      parameters:
        - name: addresId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Monitor
              properties:
                Monitor:
                  type: boolean
                  description: Define whether to monitor this address or not
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/breach/address/{addresId}/resolved:
    post:
      tags: [pass]
      summary: Post Pass Breach Address Resolved
      operationId: postPassBreachAddressResolved
      parameters:
        - name: addresId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/breach/custom_email:
    get:
      tags: [pass]
      summary: Get Pass Breach Custom Email
      operationId: getPassBreachCustomEmail
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Emails:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass Breach Custom Email
      operationId: postPassBreachCustomEmail
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
              properties:
                Email:
                  type: string
                  description: Email to create a breach monitor for
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Email:
                        type: object
  /pass/v1/breach/custom_email/{customemailId}:
    delete:
      tags: [pass]
      summary: Delete Pass Breach Custom Email
      operationId: deletePassBreachCustomEmail
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/breach/custom_email/{customemailId}/breaches:
    get:
      tags: [pass]
      summary: Get Pass Breach Custom Email Breaches
      operationId: getPassBreachCustomEmailBreaches
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Breaches:
                        type: object
  /pass/v1/breach/custom_email/{customemailId}/breaches/{breacheId}/resolve:
    put:
      tags: [pass]
      summary: Put Pass Breach Custom Email Breaches Resolve
      operationId: putPassBreachCustomEmailBreachesResolve
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
        - name: breacheId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/breach/custom_email/{customemailId}/monitor:
    put:
      tags: [pass]
      summary: Put Pass Breach Custom Email Monitor
      operationId: putPassBreachCustomEmailMonitor
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Monitor
              properties:
                Monitor:
                  type: boolean
                  description: Define whether to monitor this custom email or not
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Email:
                        type: object
  /pass/v1/breach/custom_email/{customemailId}/resend_verification:
    post:
      tags: [pass]
      summary: Post Pass Breach Custom Email Resend Verification
      operationId: postPassBreachCustomEmailResendVerification
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/breach/custom_email/{customemailId}/resolved:
    put:
      tags: [pass]
      summary: Put Pass Breach Custom Email Resolved
      operationId: putPassBreachCustomEmailResolved
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Email:
                        type: object
  /pass/v1/breach/custom_email/{customemailId}/verify:
    put:
      tags: [pass]
      summary: Put Pass Breach Custom Email Verify
      operationId: putPassBreachCustomEmailVerify
      parameters:
        - name: customemailId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Code
              properties:
                Code:
                  type: string
                  description: Code to validate
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Email:
                        type: object
  /pass/v1/file:
    post:
      tags: [pass]
      summary: Post Pass File
      operationId: postPassFile
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Metadata
                - ChunkCount
              properties:
                Metadata:
                  type: string
                  description: File metadata encrypted with an attachmentKey and encoded in Base64
                ChunkCount:
                  type: integer
                  description: Number of chunks this file will have
                EncryptionVersion:
                  type: integer
                  description: File encryption version. 1 for old, 2 for separate tags.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      File:
                        type: object
  /pass/v1/file/{fileId}/chunk:
    post:
      tags: [pass]
      summary: Post Pass File Chunk
      operationId: postPassFileChunk
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/file/{fileId}/metadata:
    put:
      tags: [pass]
      summary: Put Pass File Metadata
      operationId: putPassFileMetadata
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Metadata
              properties:
                Metadata:
                  type: string
                  description: File metadata encrypted with an attachmentKey and encoded in Base64
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      File:
                        type: object
  /pass/v1/invite:
    get:
      tags: [pass]
      summary: Get Pass Invite
      operationId: getPassInvite
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/invite/group:
    get:
      tags: [pass]
      summary: Get Pass Invite Group
      operationId: getPassInviteGroup
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Invites:
                        type: object
  /pass/v1/invite/group/{groupId}:
    delete:
      tags: [pass]
      summary: Delete Pass Invite Group
      operationId: deletePassInviteGroup
      parameters:
        - name: groupId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    post:
      tags: [pass]
      summary: Post Pass Invite Group
      operationId: postPassInviteGroup
      parameters:
        - name: groupId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Keys
              properties:
                Keys:
                  type: array
                  items: {}
                  description: Invite keys encrypted and signed with the User Key
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/invite/{inviteId}:
    delete:
      tags: [pass]
      summary: Delete Pass Invite
      operationId: deletePassInvite
      parameters:
        - name: inviteId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    post:
      tags: [pass]
      summary: Post Pass Invite
      operationId: postPassInvite
      parameters:
        - name: inviteId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Keys
              properties:
                Keys:
                  type: array
                  items: {}
                  description: Invite keys encrypted and signed with the User Key
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
  /pass/v1/notification:
    get:
      tags: [pass]
      summary: Get Pass Notification
      operationId: getPassNotification
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Notifications:
                        type: object
  /pass/v1/notification/{notificationId}:
    put:
      tags: [pass]
      summary: Put Pass Notification
      operationId: putPassNotification
      parameters:
        - name: notificationId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - State
              properties:
                State:
                  type: integer
                  description: Notification state. 0 = Unread, 1 = Read, 2 = Dismissed
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/organization:
    get:
      tags: [pass]
      summary: Get Pass Organization
      operationId: getPassOrganization
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Organization:
                        type: object
  /pass/v1/organization/report:
    get:
      tags: [pass]
      summary: Get Pass Organization Report
      operationId: getPassOrganizationReport
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Report:
                        type: object
  /pass/v1/organization/report/client_data:
    post:
      tags: [pass]
      summary: Post Pass Organization Report Client Data
      operationId: postPassOrganizationReportClientData
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ReusedPasswords
                - Inactive2FA
                - ExcludedItems
                - WeakPasswords
              properties:
                ReusedPasswords:
                  type: integer
                  description: Number of reused passwords
                Inactive2FA:
                  type: integer
                  description: Number of items with inactive 2FA
                ExcludedItems:
                  type: integer
                  description: Number of excluded items
                WeakPasswords:
                  type: integer
                  description: Number of weak passwords
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/organization/report/user_shares:
    get:
      tags: [pass]
      summary: Get Pass Organization Report User Shares
      operationId: getPassOrganizationReportUserShares
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Report:
                        type: object
                        description: Report on share usage for batch of users
                      Code:
                        type: integer
  /pass/v1/organization/settings:
    put:
      tags: [pass]
      summary: Put Pass Organization Settings
      operationId: putPassOrganizationSettings
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ShareMode:
                  type: integer
                  description: Allowed ways to share within the organization.
                ShareAcceptMode:
                  type: integer
                  description: Who is allowed to accept an invite from outside the organization.
                ItemShareMode:
                  type: integer
                  description: Is item sharing enabled.
                PublicLinkMode:
                  type: integer
                  description: Are secure links enabled.
                ForceLockSeconds:
                  type: integer
                  description: Force pass to lock after given seconds of time. 0 means disabled.
                ExportMode:
                  type: integer
                  description: Allowed ways of exporting the data owned by the org.
                VaultCreateMode:
                  type: integer
                  description: Who can create vaults in the organization.
                AliasCreateMode:
                  type: integer
                  description: If it is allowed to create aliases in the organization.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Organization:
                        type: object
  /pass/v1/organization/settings/password_policy:
    put:
      tags: [pass]
      summary: Put Pass Organization Settings Password Policy
      operationId: putPassOrganizationSettingsPasswordPolicy
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - RandomPasswordAllowed
                - MemorablePasswordAllowed
              properties:
                RandomPasswordAllowed:
                  type: boolean
                  description: Whether subusers are allowed to generate random passwords
                RandomPasswordMinLength:
                  type: integer
                  description: Minimum password length. Default limit if null.
                RandomPasswordMaxLength:
                  type: integer
                  description: Maximum password length. Default limit if null.
                RandomPasswordMustIncludeNumbers:
                  type: boolean
                  description: Whether the password must include numbers. If true, it must. If false, it must not. Cannot be changed if not null. Can be changed if null.
                RandomPasswordMustIncludeSymbols:
                  type: boolean
                  description: Whether the password must include symbols. If true, it must. If false, it must not. Cannot be changed if not null. Can be changed if null.
                RandomPasswordMustIncludeUppercase:
                  type: boolean
                  description: Whether the password must include uppercase characters. If true, it must. If false, it must not. Cannot be changed if not null. Can be changed if null.
                MemorablePasswordAllowed:
                  type: boolean
                  description: Whether subusers are allowed to generate memorable passwords
                MemorablePasswordMinWords:
                  type: integer
                  description: Minimum amount of words for the memorable passwords. Default limit if null.
                MemorablePasswordMaxWords:
                  type: integer
                  description: Maximum amount of words for the memorable passwords. Default limit if null.
                MemorablePasswordMustCapitalize:
                  type: boolean
                  description: Whether the password must capitalize words. If true, it must. If false, it must not. Cannot be changed if not null. Can be changed if null.
                MemorablePasswordMustIncludeNumbers:
                  type: boolean
                  description: Whether the password must include numbers. If true, it must. If false, it must not. Cannot be changed if not null. Can be changed if null.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Organization:
                        type: object
  /pass/v1/organization/urlpause:
    get:
      tags: [pass]
      summary: Get Pass Organization Urlpause
      operationId: getPassOrganizationUrlpause
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Entries:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass Organization Urlpause
      operationId: postPassOrganizationUrlpause
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Url
                - Values
              properties:
                Url:
                  type: string
                  description: Url of the entry
                Values:
                  type: object
                  description: Which properties are enabled for the entry
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Entry:
                        type: object
  /pass/v1/organization/urlpause/{urlpauseId}:
    delete:
      tags: [pass]
      summary: Delete Pass Organization Urlpause
      operationId: deletePassOrganizationUrlpause
      parameters:
        - name: urlpauseId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    put:
      tags: [pass]
      summary: Put Pass Organization Urlpause
      operationId: putPassOrganizationUrlpause
      parameters:
        - name: urlpauseId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AutofillEnabled
                - Autofill2faEnabled
                - AutofillAutosuggestEnabled
                - AutosaveEnabled
                - PasskeysEnabled
              properties:
                AutofillEnabled:
                  type: boolean
                  description: Whether Autofill is enabled or not
                Autofill2faEnabled:
                  type: boolean
                  description: Whether 2FA Autofill is enabled or not
                AutofillAutosuggestEnabled:
                  type: boolean
                  description: Whether Autofill autosuggestion is enabled or not
                AutosaveEnabled:
                  type: boolean
                  description: Whether Autosave is enabled or not
                PasskeysEnabled:
                  type: boolean
                  description: Whether Passkeys are enabled or not
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/pat/monitor:
    post:
      tags: [pass]
      summary: Post Pass Pat Monitor
      operationId: postPassPatMonitor
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Records
              properties:
                Records:
                  type: array
                  items: {}
                  description: Records to store
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/pat/monitor/{monitorId}:
    get:
      tags: [pass]
      summary: Get Pass Pat Monitor
      operationId: getPassPatMonitor
      parameters:
        - name: monitorId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Actions:
                        type: object
                        description: Actions made by this PAT
                      Code:
                        type: integer
  /pass/v1/personal-access-token/{personalaccesstokenId}/access:
    get:
      tags: [pass]
      summary: Get Pass Personal Access Token Access
      operationId: getPassPersonalAccessTokenAccess
      parameters:
        - name: personalaccesstokenId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Shares:
                        type: array
                        items: {}
                        description: List of shares
                      LastToken:
                        type: string
                        description: Token to pass for getting the next page. Null if there is none
                      Code:
                        type: integer
    post:
      tags: [pass]
      summary: Post Pass Personal Access Token Access
      operationId: postPassPersonalAccessTokenAccess
      parameters:
        - name: personalaccesstokenId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ShareID
                - TargetType
                - ShareRoleID
                - Keys
              properties:
                ShareID:
                  type: string
                  description: Share ID of the user granting access
                TargetID:
                  type: string
                  description: Target ID (for item, optional for vault)
                TargetType:
                  type: integer
                  description: Target type (1=vault, 2=item)
                ShareRoleID:
                  type: string
                  description: Share role ID
                Keys:
                  type: array
                  items: {}
                  description: Encrypted keys for the share
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Access:
                        type: object
                      Code:
                        type: integer
  /pass/v1/personal-access-token/{personalaccesstokenId}/access/{accesId}:
    delete:
      tags: [pass]
      summary: Delete Pass Personal Access Token Access
      operationId: deletePassPersonalAccessTokenAccess
      parameters:
        - name: personalaccesstokenId
          in: path
          required: true
          schema:
            type: string
        - name: accesId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/public_link:
    get:
      tags: [pass]
      summary: Get Pass Public Link
      operationId: getPassPublicLink
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      PublicLinks:
                        type: array
                        items: {}
  /pass/v1/public_link/content/{contentId}:
    get:
      tags: [pass]
      summary: Get Pass Public Link Content
      operationId: getPassPublicLinkContent
      parameters:
        - name: contentId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      PublicLinkContent:
                        type: object
  /pass/v1/public_link/files/{fileId}:
    get:
      tags: [pass]
      summary: Get Pass Public Link Files
      operationId: getPassPublicLinkFiles
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Files:
                        type: object
  /pass/v1/public_link/files/{fileId}/{stringId}/{stringId}:
    get:
      tags: [pass]
      summary: Get Pass Public Link Files
      operationId: getPassPublicLinkFiles
      parameters:
        - name: fileId
          in: path
          required: true
          schema:
            type: string
        - name: stringId
          in: path
          required: true
          schema:
            type: string
        - name: stringId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            text/plain:
              schema:
                type: string
  /pass/v1/public_link/inactive:
    delete:
      tags: [pass]
      summary: Delete Pass Public Link Inactive
      operationId: deletePassPublicLinkInactive
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/public_link/{publiclinkId}:
    delete:
      tags: [pass]
      summary: Delete Pass Public Link
      operationId: deletePassPublicLink
      parameters:
        - name: publiclinkId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share:
    get:
      tags: [pass]
      summary: Get Pass Share
      operationId: getPassShare
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/hide:
    put:
      tags: [pass]
      summary: Put Pass Share Hide
      operationId: putPassShareHide
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                SharesToHide:
                  type: array
                  items: {}
                  description: List of share IDs to hide
                SharesToUnhide:
                  type: array
                  items: {}
                  description: List of share IDs to unhide
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}:
    delete:
      tags: [pass]
      summary: Delete Pass Share
      operationId: deletePassShare
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass Share
      operationId: getPassShare
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
  /pass/v1/share/{shareId}/alias/bulk/get:
    post:
      tags: [pass]
      summary: Post Pass Share Alias Bulk Get
      operationId: postPassShareAliasBulkGet
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ItemIDs
              properties:
                ItemIDs:
                  type: array
                  items: {}
                  description: ItemsIDs to be retrieved. At most 100
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/alias/custom:
    post:
      tags: [pass]
      summary: Post Pass Share Alias Custom
      operationId: postPassShareAliasCustom
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Prefix
                - SignedSuffix
                - MailboxIDs
                - Item
              properties:
                Prefix:
                  type: string
                  description: Prefix for the alias to be created (prefix.xxx@domain.com)
                SignedSuffix:
                  type: string
                  description: Signed suffix for the alias to be created (xxx.asdaa3@domain.com.signature)
                MailboxIDs:
                  type: array
                  items: {}
                  description: IDs for the mailboxes that will receive emails sent to this alias
                AliasName:
                  type: string
                  description: Optionally, the alias name to be used for this alias
                Item:
                  type: object
                  description: Payload for the item creation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/alias/options:
    get:
      tags: [pass]
      summary: Get Pass Share Alias Options
      operationId: getPassShareAliasOptions
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Options:
                        type: object
  /pass/v1/share/{shareId}/alias/random:
    post:
      tags: [pass]
      summary: Post Pass Share Alias Random
      operationId: postPassShareAliasRandom
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - KeyRotation
                - ContentFormatVersion
                - Content
                - ItemKey
              properties:
                KeyRotation:
                  type: integer
                  description: Rotation of the VaultKey used to encrypt this item
                ContentFormatVersion:
                  type: integer
                  description: Version of the content format used to create the item
                Content:
                  type: string
                  description: Encrypted item content encoded in Base64
                ItemKey:
                  type: string
                  description: Item key encrypted with the VaultKey, contents encoded in base64
                FolderID:
                  type: string
                  description: FolderID under which to create the item
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}:
    get:
      tags: [pass]
      summary: Get Pass Share Alias
      operationId: getPassShareAlias
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Alias:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}/breaches:
    get:
      tags: [pass]
      summary: Get Pass Share Alias Breaches
      operationId: getPassShareAliasBreaches
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Breaches:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}/breaches/resolved:
    post:
      tags: [pass]
      summary: Post Pass Share Alias Breaches Resolved
      operationId: postPassShareAliasBreachesResolved
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/alias/{aliaId}/breaches/{breacheId}/resolve:
    post:
      tags: [pass]
      summary: Post Pass Share Alias Breaches Resolve
      operationId: postPassShareAliasBreachesResolve
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
        - name: breacheId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/alias/{aliaId}/contact:
    get:
      tags: [pass]
      summary: Get Pass Share Alias Contact
      operationId: getPassShareAliasContact
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [pass]
      summary: Post Pass Share Alias Contact
      operationId: postPassShareAliasContact
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
              properties:
                Email:
                  type: string
                  description: Email to send emails to via this alias
                Name:
                  type: string
                  description: Name to be shown for this contact
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Contact:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}/contact/{contactId}:
    delete:
      tags: [pass]
      summary: Delete Pass Share Alias Contact
      operationId: deletePassShareAliasContact
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
        - name: contactId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass Share Alias Contact
      operationId: getPassShareAliasContact
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
        - name: contactId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Contact:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}/contact/{contactId}/blocked:
    put:
      tags: [pass]
      summary: Put Pass Share Alias Contact Blocked
      operationId: putPassShareAliasContactBlocked
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
        - name: contactId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Blocked
              properties:
                Blocked:
                  type: boolean
                  description: Whether emails from this email address will be forwarded to the user
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Contact:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}/mailbox:
    post:
      tags: [pass]
      summary: Post Pass Share Alias Mailbox
      operationId: postPassShareAliasMailbox
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MailboxIDs
              properties:
                MailboxIDs:
                  type: array
                  items: {}
                  description: IDs for the mailboxes that will receive emails sent to this alias
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/alias/{aliaId}/name:
    put:
      tags: [pass]
      summary: Put Pass Share Alias Name
      operationId: putPassShareAliasName
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
                  description: Desired name for the alias
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/alias/{aliaId}/note:
    put:
      tags: [pass]
      summary: Put Pass Share Alias Note
      operationId: putPassShareAliasNote
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Note:
                  type: string
                  description: Desired note for the alias
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/alias/{aliaId}/status:
    put:
      tags: [pass]
      summary: Put Pass Share Alias Status
      operationId: putPassShareAliasStatus
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: aliaId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Enable
              properties:
                Enable:
                  type: boolean
                  description: Desired alias status
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/event:
    get:
      tags: [pass]
      summary: Get Pass Share Event
      operationId: getPassShareEvent
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/event/{eventId}:
    get:
      tags: [pass]
      summary: Get Pass Share Event
      operationId: getPassShareEvent
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: eventId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Events:
                        type: object
  /pass/v1/share/{shareId}/folder:
    delete:
      tags: [pass]
      summary: Delete Pass Share Folder
      operationId: deletePassShareFolder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - FolderIDs
              properties:
                FolderIDs:
                  type: array
                  items: {}
                  description: FolderIDs to be deleted
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass Share Folder
      operationId: getPassShareFolder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folders:
                        type: object
                        description: Folders accessible from this share
                      Code:
                        type: integer
    post:
      tags: [pass]
      summary: Post Pass Share Folder
      operationId: postPassShareFolder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ContentFormatVersion
                - Content
                - KeyRotation
                - FolderKey
              properties:
                ParentFolderID:
                  type: string
                  description: FolderID of the parent folder for this new folder. Use null for top folder.
                ContentFormatVersion:
                  type: integer
                  description: Content format version for folder contents
                Content:
                  type: string
                  description: Content encrypted with the folder key
                KeyRotation:
                  type: integer
                  description: Rotation value for this key
                FolderKey:
                  type: string
                  description: Encrypted folder key encoded in base64
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                        description: Alias to create
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/folder/{folderId}:
    get:
      tags: [pass]
      summary: Get Pass Share Folder
      operationId: getPassShareFolder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: folderId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                        description: Alias to create
                      Code:
                        type: integer
    put:
      tags: [pass]
      summary: Put Pass Share Folder
      operationId: putPassShareFolder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: folderId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Content:
                  type: object
                  description: If the content has to be updated this should contain the new content. Otherwise, null
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                        description: Alias to create
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/folder/{folderId}/move:
    put:
      tags: [pass]
      summary: Put Pass Share Folder Move
      operationId: putPassShareFolderMove
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: folderId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - FolderKeys
              properties:
                ParentFolderID:
                  type: string
                  description: Id of the parent folder under which this folder is moved to. Null if it will be a top folder
                FolderKeys:
                  type: array
                  items: {}
                  description: FolderKeys encrypted with the parent folder keys or vault keys if it is a top folder
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Folder:
                        type: object
                        description: Alias to create
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/hide:
    put:
      tags: [pass]
      summary: Put Pass Share Hide
      operationId: putPassShareHide
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
  /pass/v1/share/{shareId}/invite:
    get:
      tags: [pass]
      summary: Get Pass Share Invite
      operationId: getPassShareInvite
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [pass]
      summary: Post Pass Share Invite
      operationId: postPassShareInvite
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Keys
                - Email
                - TargetType
                - ShareRoleID
              properties:
                Keys:
                  type: array
                  items: {}
                  description: "List of keys encrypted for the other user's address key and signed with your address key"
                Email:
                  type: string
                  description: Email of the target user
                TargetType:
                  type: integer
                  description: Invite target type. 1 = Vault, 2 = Item, 3 = Folder
                ShareRoleID:
                  type: string
                  description: ShareRoleID for this invite. The values are in the top level Pass docs.
                SourceNewUserInviteID:
                  type: string
                  description: If this invite is generated from a new user invite. ID of the original new user invite
                ItemID:
                  type: string
                  description: Invite encrypted item ID (only in case the invite is of type Item)
                FolderID:
                  type: string
                  description: Invite encrypted folder ID (only in case the invite is of type Folder)
                Data:
                  type: string
                  description: Base64 encrypted invite message encrypted with the object key
                ExpirationTime:
                  type: integer
                  description: Expiration time for the share
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/batch:
    post:
      tags: [pass]
      summary: Post Pass Share Invite Batch
      operationId: postPassShareInviteBatch
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Invites
              properties:
                Invites:
                  type: array
                  items: {}
                  description: Invites for existing users
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/check_address:
    post:
      tags: [pass]
      summary: Post Pass Share Invite Check Address
      operationId: postPassShareInviteCheckAddress
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Emails
              properties:
                Emails:
                  type: array
                  items: {}
                  description: Addresses to check. At most 10 addresses are allowed
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/invite/new_user:
    post:
      tags: [pass]
      summary: Post Pass Share Invite New User
      operationId: postPassShareInviteNewUser
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
                - TargetType
                - Signature
                - ShareRoleID
              properties:
                Email:
                  type: string
                  description: Email of the target user
                TargetType:
                  type: integer
                  description: Invite target type. 1 = Vault, 2 = Item, 3 = Folder
                Signature:
                  type: string
                  description: "Base64 signature of \"inviteemail|base64(vaultKey)\" signed with the manager's address key"
                ShareRoleID:
                  type: string
                  description: ShareRoleID for this invite. The values are in the top level Pass docs.
                Data:
                  type: string
                  description: Base64 encrypted invite message encrypted with the object key
                ItemID:
                  type: string
                  description: Invite encrypted item ID (only in case the invite is of type Item)
                FolderID:
                  type: string
                  description: Invite encrypted folder ID (only in case the invite is of type Folder)
                ExpirationTime:
                  type: integer
                  description: Expiration time for the share
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/new_user/batch:
    post:
      tags: [pass]
      summary: Post Pass Share Invite New User Batch
      operationId: postPassShareInviteNewUserBatch
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NewUserInvites
              properties:
                NewUserInvites:
                  type: array
                  items: {}
                  description: New user invites
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/new_user/{newuserId}:
    delete:
      tags: [pass]
      summary: Delete Pass Share Invite New User
      operationId: deletePassShareInviteNewUser
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: newuserId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/new_user/{newuserId}/keys:
    post:
      tags: [pass]
      summary: Post Pass Share Invite New User Keys
      operationId: postPassShareInviteNewUserKeys
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: newuserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Keys
              properties:
                Keys:
                  type: array
                  items: {}
                  description: "List of keys encrypted for the other user's address key and signed with your address key"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/recommended_emails:
    get:
      tags: [pass]
      summary: Get Pass Share Invite Recommended Emails
      operationId: getPassShareInviteRecommendedEmails
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Recommendation:
                        type: object
  /pass/v1/share/{shareId}/invite/recommended_emails/organization:
    get:
      tags: [pass]
      summary: Get Pass Share Invite Recommended Emails Organization
      operationId: getPassShareInviteRecommendedEmailsOrganization
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Recommendation:
                        type: object
  /pass/v1/share/{shareId}/invite/recommended_emails/suggested:
    get:
      tags: [pass]
      summary: Get Pass Share Invite Recommended Emails Suggested
      operationId: getPassShareInviteRecommendedEmailsSuggested
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/invite/{inviteId}:
    delete:
      tags: [pass]
      summary: Delete Pass Share Invite
      operationId: deletePassShareInvite
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: inviteId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/invite/{inviteId}/reminder:
    post:
      tags: [pass]
      summary: Post Pass Share Invite Reminder
      operationId: postPassShareInviteReminder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: inviteId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/item:
    delete:
      tags: [pass]
      summary: Delete Pass Share Item
      operationId: deletePassShareItem
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Items
              properties:
                Items:
                  type: array
                  items: {}
                  description: ItemIDs with their current revision. At most 100 items.
                SkipTrash:
                  type: boolean
                  description: Skip checking that the items are in the trash. Allows to delete directly
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass Share Item
      operationId: getPassShareItem
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Items:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass Share Item
      operationId: postPassShareItem
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - KeyRotation
                - ContentFormatVersion
                - Content
                - ItemKey
              properties:
                KeyRotation:
                  type: integer
                  description: Rotation of the VaultKey used to encrypt this item
                ContentFormatVersion:
                  type: integer
                  description: Version of the content format used to create the item
                Content:
                  type: string
                  description: Encrypted item content encoded in Base64
                ItemKey:
                  type: string
                  description: Item key encrypted with the VaultKey, contents encoded in base64
                FolderID:
                  type: string
                  description: FolderID under which to create the item
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/item/folder:
    put:
      tags: [pass]
      summary: Put Pass Share Item Folder
      operationId: putPassShareItemFolder
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Items
              properties:
                FolderID:
                  type: string
                  description: FolderID to move the items into. Null to move to share root
                Items:
                  type: array
                  items: {}
                  description: List of items to move to specified folder
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Items:
                        type: array
                        items: {}
                        description: Items moved
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/item/import/batch:
    post:
      tags: [pass]
      summary: Post Pass Share Item Import Batch
      operationId: postPassShareItemImportBatch
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Items
              properties:
                Items:
                  type: array
                  items: {}
                  description: Items to be imported. At most 100
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Revisions:
                        type: object
  /pass/v1/share/{shareId}/item/read:
    put:
      tags: [pass]
      summary: Put Pass Share Item Read
      operationId: putPassShareItemRead
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ItemTimes
              properties:
                ItemTimes:
                  type: array
                  items: {}
                  description: List of items and times read for this vault
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/share/{shareId}/item/share:
    put:
      tags: [pass]
      summary: Put Pass Share Item Share
      operationId: putPassShareItemShare
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ShareID
                - Items
              properties:
                ShareID:
                  type: string
                  description: Encrypted ID of the destination share
                Items:
                  type: array
                  items: {}
                  description: Items to move to the destination share
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/item/trash:
    post:
      tags: [pass]
      summary: Post Pass Share Item Trash
      operationId: postPassShareItemTrash
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/item/untrash:
    post:
      tags: [pass]
      summary: Post Pass Share Item Untrash
      operationId: postPassShareItemUntrash
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Items
              properties:
                Items:
                  type: array
                  items: {}
                  description: Pairs of item IDs with the latest revision. At most 100.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/item/with_alias:
    post:
      tags: [pass]
      summary: Post Pass Share Item With Alias
      operationId: postPassShareItemWithAlias
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Alias
                - Item
              properties:
                Alias:
                  type: object
                  description: Alias to create
                Item:
                  type: object
                  description: Item to create
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Bundle:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}:
    get:
      tags: [pass]
      summary: Get Pass Share Item
      operationId: getPassShareItem
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
    put:
      tags: [pass]
      summary: Put Pass Share Item
      operationId: putPassShareItem
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - KeyRotation
                - LastRevision
                - Content
                - ContentFormatVersion
              properties:
                KeyRotation:
                  type: integer
                LastRevision:
                  type: integer
                  description: Last item revision existing when the item was created
                Content:
                  type: string
                  description: Encrypted item content encoded in Base64
                ContentFormatVersion:
                  type: integer
                  description: Version of the content format used to create the item
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/file/restore:
    post:
      tags: [pass]
      summary: Post Pass Share Item File Restore
      operationId: postPassShareItemFileRestore
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - FilesToRestore
                - ItemKeyRotation
              properties:
                FilesToRestore:
                  type: array
                  items: {}
                  description: Files to restore
                ItemKeyRotation:
                  type: integer
                  description: ItemKeyRotation used to encrypt the files keys
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Result:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/file/{fileId}/chunk/{chunkId}:
    get:
      tags: [pass]
      summary: Get Pass Share Item File Chunk
      operationId: getPassShareItemFileChunk
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
        - name: fileId
          in: path
          required: true
          schema:
            type: string
        - name: chunkId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            text/plain:
              schema:
                type: string
  /pass/v1/share/{shareId}/item/{itemId}/file/{fileId}/metadata:
    put:
      tags: [pass]
      summary: Put Pass Share Item File Metadata
      operationId: putPassShareItemFileMetadata
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Metadata
              properties:
                Metadata:
                  type: string
                  description: New file metadata encrypted with the file key, encoded in Base64
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      File:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/file/{fileId}/restore:
    post:
      tags: [pass]
      summary: Post Pass Share Item File Restore
      operationId: postPassShareItemFileRestore
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - FileKey
                - ItemKeyRotation
              properties:
                FileKey:
                  type: string
                  description: FileKey encrypted with the ItemKey, encoded in Base64
                ItemKeyRotation:
                  type: integer
                  description: ItemKeyRotation used to encrypt the file key
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Result:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/files:
    get:
      tags: [pass]
      summary: Get Pass Share Item Files
      operationId: getPassShareItemFiles
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Files:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/flags:
    put:
      tags: [pass]
      summary: Put Pass Share Item Flags
      operationId: putPassShareItemFlags
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                SkipHealthCheck:
                  type: boolean
                  description: Whether to skip the security health checks. Null means leave it as it is now.
                SkipWeakPasswordCheck:
                  type: boolean
                  description: Whether to skip the weak password check. Null means leave it as it is now.
                SkipCompromisedPasswordCheck:
                  type: boolean
                  description: Whether to skip the compromised password check. Null means leave it as it is now.
                SkipReusedPasswordCheck:
                  type: boolean
                  description: Whether to skip the reused password check. Null means leave it as it is now.
                Skip2FACheck:
                  type: boolean
                  description: Whether to skip the 2FA check. Null means leave it as it is now.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/key:
    get:
      tags: [pass]
      summary: Get Pass Share Item Key
      operationId: getPassShareItemKey
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Keys:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/key/latest:
    get:
      tags: [pass]
      summary: Get Pass Share Item Key Latest
      operationId: getPassShareItemKeyLatest
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Key:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/lastuse:
    put:
      tags: [pass]
      summary: Put Pass Share Item Lastuse
      operationId: putPassShareItemLastuse
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                LastUseTime:
                  type: integer
                  description: Time when the item was last used. If no value is passed then the current server time will be used.
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Revision:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/link_files:
    post:
      tags: [pass]
      summary: Post Pass Share Item Link Files
      operationId: postPassShareItemLinkFiles
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ItemRevision
                - FilesToAdd
                - FilesToRemove
              properties:
                ItemRevision:
                  type: integer
                  description: Last itemRevision
                FilesToAdd:
                  type: array
                  items: {}
                  description: List of files to be linked
                FilesToRemove:
                  type: array
                  items: {}
                  description: List of file ids to be removed
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/pin:
    delete:
      tags: [pass]
      summary: Delete Pass Share Item Pin
      operationId: deletePassShareItemPin
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass Share Item Pin
      operationId: postPassShareItemPin
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/public_link:
    post:
      tags: [pass]
      summary: Post Pass Share Item Public Link
      operationId: postPassShareItemPublicLink
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Revision
                - ExpirationTime
                - EncryptedItemKey
                - EncryptedLinkKey
                - LinkKeyShareKeyRotation
              properties:
                Revision:
                  type: integer
                  description: Last revision of the item
                ExpirationTime:
                  type: integer
                  description: Expiration time for the link in seconds. Minimum 3600 (1h), at maximum 30 days in the future
                MaxReadCount:
                  type: integer
                  description: Maximum amount of times that the item can be read. Unlimited reads if null
                EncryptedItemKey:
                  type: string
                  description: Encrypted item key encoded in base64
                EncryptedLinkKey:
                  type: string
                  description: Link key encrypted with the share key encoded in base64
                LinkKeyShareKeyRotation:
                  type: integer
                  description: ShareKey rotation used for encrypting the encryptedLinkKey
                LinkKeyEncryptedWithItemKey:
                  type: boolean
                  description: If the link key is being encrypted with the item key
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      PublicLink:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/revision:
    get:
      tags: [pass]
      summary: Get Pass Share Item Revision
      operationId: getPassShareItemRevision
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Revisions:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/revisions:
    delete:
      tags: [pass]
      summary: Delete Pass Share Item Revisions
      operationId: deletePassShareItemRevisions
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Item:
                        type: object
  /pass/v1/share/{shareId}/item/{itemId}/revisions/files:
    get:
      tags: [pass]
      summary: Get Pass Share Item Revisions Files
      operationId: getPassShareItemRevisionsFiles
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Files:
                        type: object
  /pass/v1/share/{shareId}/key:
    get:
      tags: [pass]
      summary: Get Pass Share Key
      operationId: getPassShareKey
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      ShareKeys:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass Share Key
      operationId: postPassShareKey
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CurrentKeyRotation
                - VaultKey
                - ItemKeys
                - VaultKeyForShares
                - ItemKeysForShares
              properties:
                CurrentKeyRotation:
                  type: integer
                  description: Current key rotation
                VaultKey:
                  type: string
                  description: New vault key base64 encoded, encrypted and signed with the current primary user key
                ItemKeys:
                  type: array
                  items: {}
                  description: New encryption keys for the items in the vault
                VaultKeyForShares:
                  type: array
                  items: {}
                  description: Vault key encrypted for the users that have vault shares EXCEPT the current user
                ItemKeysForShares:
                  type: array
                  items: {}
                  description: Item key encrypted each share of type item
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      ShareKey:
                        type: object
  /pass/v1/share/{shareId}/key/pending:
    get:
      tags: [pass]
      summary: Get Pass Share Key Pending
      operationId: getPassShareKeyPending
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      PendingShareKeys:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass Share Key Pending
      operationId: postPassShareKeyPending
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Keys
              properties:
                Keys:
                  type: array
                  items: {}
                  description: Pending share keys to promote
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      ShareKeys:
                        type: object
  /pass/v1/share/{shareId}/unhide:
    put:
      tags: [pass]
      summary: Put Pass Share Unhide
      operationId: putPassShareUnhide
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
  /pass/v1/share/{shareId}/user:
    get:
      tags: [pass]
      summary: Get Pass Share User
      operationId: getPassShareUser
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/user/item/{itemId}:
    get:
      tags: [pass]
      summary: Get Pass Share User Item
      operationId: getPassShareUserItem
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: itemId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/share/{shareId}/user/{userId}:
    delete:
      tags: [pass]
      summary: Delete Pass Share User
      operationId: deletePassShareUser
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass Share User
      operationId: getPassShareUser
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
    put:
      tags: [pass]
      summary: Put Pass Share User
      operationId: putPassShareUser
      parameters:
        - name: shareId
          in: path
          required: true
          schema:
            type: string
        - name: userId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ShareRoleID:
                  type: string
                  description: ShareRoleID to apply to this share
                ExpireTime:
                  type: integer
                  description: Expiration time to set for this share
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/access:
    get:
      tags: [pass]
      summary: Get Pass User Access
      operationId: getPassUserAccess
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Access:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass User Access
      operationId: postPassUserAccess
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Access:
                        type: object
  /pass/v1/user/access/check:
    get:
      tags: [pass]
      summary: Get Pass User Access Check
      operationId: getPassUserAccessCheck
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Data:
                        type: object
  /pass/v1/user/alias/count:
    get:
      tags: [pass]
      summary: Get Pass User Alias Count
      operationId: getPassUserAliasCount
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      AliasCount:
                        type: object
  /pass/v1/user/alias/custom_domain:
    get:
      tags: [pass]
      summary: Get Pass User Alias Custom Domain
      operationId: getPassUserAliasCustomDomain
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      CustomDomains:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass User Alias Custom Domain
      operationId: postPassUserAliasCustomDomain
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Domain
              properties:
                Domain:
                  type: string
                  description: Domain to be created
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      CustomDomain:
                        type: object
  /pass/v1/user/alias/custom_domain/{customdomainId}:
    delete:
      tags: [pass]
      summary: Delete Pass User Alias Custom Domain
      operationId: deletePassUserAliasCustomDomain
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass User Alias Custom Domain
      operationId: getPassUserAliasCustomDomain
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      CustomDomain:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass User Alias Custom Domain
      operationId: postPassUserAliasCustomDomain
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      CustomDomainValidation:
                        type: object
  /pass/v1/user/alias/custom_domain/{customdomainId}/settings:
    get:
      tags: [pass]
      summary: Get Pass User Alias Custom Domain Settings
      operationId: getPassUserAliasCustomDomainSettings
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/custom_domain/{customdomainId}/settings/catch_all:
    put:
      tags: [pass]
      summary: Put Pass User Alias Custom Domain Settings Catch All
      operationId: putPassUserAliasCustomDomainSettingsCatchAll
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - CatchAll
              properties:
                CatchAll:
                  type: boolean
                  description: Catch-all setting value
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/custom_domain/{customdomainId}/settings/mailboxes:
    put:
      tags: [pass]
      summary: Put Pass User Alias Custom Domain Settings Mailboxes
      operationId: putPassUserAliasCustomDomainSettingsMailboxes
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - MailboxIDs
              properties:
                MailboxIDs:
                  type: array
                  items: {}
                  description: Mailbox IDs
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/custom_domain/{customdomainId}/settings/name:
    put:
      tags: [pass]
      summary: Put Pass User Alias Custom Domain Settings Name
      operationId: putPassUserAliasCustomDomainSettingsName
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                Name:
                  type: string
                  description: Custom domain default name
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/custom_domain/{customdomainId}/settings/random_prefix:
    put:
      tags: [pass]
      summary: Put Pass User Alias Custom Domain Settings Random Prefix
      operationId: putPassUserAliasCustomDomainSettingsRandomPrefix
      parameters:
        - name: customdomainId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - RandomPrefixGeneration
              properties:
                RandomPrefixGeneration:
                  type: boolean
                  description: Random prefix generation setting value
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/domain:
    get:
      tags: [pass]
      summary: Get Pass User Alias Domain
      operationId: getPassUserAliasDomain
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/user/alias/mailbox:
    get:
      tags: [pass]
      summary: Get Pass User Alias Mailbox
      operationId: getPassUserAliasMailbox
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags: [pass]
      summary: Post Pass User Alias Mailbox
      operationId: postPassUserAliasMailbox
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
              properties:
                Email:
                  type: string
                  description: Email to create the mailbox
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Mailbox:
                        type: object
  /pass/v1/user/alias/mailbox/{mailboxId}:
    delete:
      tags: [pass]
      summary: Delete Pass User Alias Mailbox
      operationId: deletePassUserAliasMailbox
      parameters:
        - name: mailboxId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                TransferMailboxID:
                  type: integer
                  description: Mailbox ID to which to transfer all existing aliases (optional)
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/alias/mailbox/{mailboxId}/email:
    delete:
      tags: [pass]
      summary: Delete Pass User Alias Mailbox Email
      operationId: deletePassUserAliasMailboxEmail
      parameters:
        - name: mailboxId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    put:
      tags: [pass]
      summary: Put Pass User Alias Mailbox Email
      operationId: putPassUserAliasMailboxEmail
      parameters:
        - name: mailboxId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Email
              properties:
                Email:
                  type: string
                  description: New email for this mailbox
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Mailbox:
                        type: object
  /pass/v1/user/alias/mailbox/{mailboxId}/verify:
    get:
      tags: [pass]
      summary: Get Pass User Alias Mailbox Verify
      operationId: getPassUserAliasMailboxVerify
      parameters:
        - name: mailboxId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Mailbox:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass User Alias Mailbox Verify
      operationId: postPassUserAliasMailboxVerify
      parameters:
        - name: mailboxId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Code
              properties:
                Code:
                  type: string
                  description: Code to validate the mailbox
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Mailbox:
                        type: object
  /pass/v1/user/alias/missing:
    get:
      tags: [pass]
      summary: Get Pass User Alias Missing
      operationId: getPassUserAliasMissing
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/user/alias/settings:
    get:
      tags: [pass]
      summary: Get Pass User Alias Settings
      operationId: getPassUserAliasSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/settings/default_alias_domain:
    put:
      tags: [pass]
      summary: Put Pass User Alias Settings Default Alias Domain
      operationId: putPassUserAliasSettingsDefaultAliasDomain
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                DefaultAliasDomain:
                  type: string
                  description: Default domain when creating aliases
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/alias/settings/default_mailbox_id:
    put:
      tags: [pass]
      summary: Put Pass User Alias Settings Default Mailbox Id
      operationId: putPassUserAliasSettingsDefaultMailboxId
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - DefaultMailboxID
              properties:
                DefaultMailboxID:
                  type: integer
                  description: Default mailbox to use
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Settings:
                        type: object
  /pass/v1/user/coupon/redeem:
    post:
      tags: [pass]
      summary: Post Pass User Coupon Redeem
      operationId: postPassUserCouponRedeem
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Coupon
              properties:
                Coupon:
                  type: string
                  description: Coupon to redeem
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/default_share/{defaultshareId}:
    put:
      tags: [pass]
      summary: Put Pass User Default Share
      operationId: putPassUserDefaultShare
      parameters:
        - name: defaultshareId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/inapp_notifications_disabled:
    put:
      tags: [pass]
      summary: Put Pass User Inapp Notifications Disabled
      operationId: putPassUserInappNotificationsDisabled
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - InAppNotificationsDisabled
              properties:
                InAppNotificationsDisabled:
                  type: boolean
                  description: "Enable or disable the \"InApp notifications disabled\" setting"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/monitor:
    put:
      tags: [pass]
      summary: Put Pass User Monitor
      operationId: putPassUserMonitor
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ProtonAddress:
                  type: boolean
                  description: Enable or disable monitor for proton addresses. Null leaves the value as is
                Aliases:
                  type: boolean
                  description: Enable or disable monitor for aliases. Null leaves the value as is
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Monitor:
                        type: object
  /pass/v1/user/session/lock:
    delete:
      tags: [pass]
      summary: Delete Pass User Session Lock
      operationId: deletePassUserSessionLock
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LockCode
              properties:
                LockCode:
                  type: string
                  description: Lock code to attach to this session
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      LockData:
                        type: object
    post:
      tags: [pass]
      summary: Post Pass User Session Lock
      operationId: postPassUserSessionLock
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LockCode
                - UnlockedSecs
              properties:
                LockCode:
                  type: string
                  description: Lock code to attach to this session
                UnlockedSecs:
                  type: integer
                  description: Number of seconds the session will stay unlocked
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      LockData:
                        type: object
  /pass/v1/user/session/lock/check:
    get:
      tags: [pass]
      summary: Get Pass User Session Lock Check
      operationId: getPassUserSessionLockCheck
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      LockInfo:
                        type: object
  /pass/v1/user/session/lock/force_lock:
    post:
      tags: [pass]
      summary: Post Pass User Session Lock Force Lock
      operationId: postPassUserSessionLockForceLock
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/session/lock/unlock:
    post:
      tags: [pass]
      summary: Post Pass User Session Lock Unlock
      operationId: postPassUserSessionLockUnlock
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - LockCode
              properties:
                LockCode:
                  type: string
                  description: Lock code to attach to this session
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      LockData:
                        type: object
  /pass/v1/user/srp:
    delete:
      tags: [pass]
      summary: Delete Pass User Srp
      operationId: deletePassUserSrp
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    get:
      tags: [pass]
      summary: Get Pass User Srp
      operationId: getPassUserSrp
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      HasSRP:
                        type: boolean
                        description: If the user has SRP enabled
                      Code:
                        type: integer
    post:
      tags: [pass]
      summary: Post Pass User Srp
      operationId: postPassUserSrp
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - SrpModulusID
                - SrpVerifier
                - SrpSalt
              properties:
                SrpModulusID:
                  type: string
                  description: SRP Parameter ID
                SrpVerifier:
                  type: string
                  description: Base64 encoded SRP verifier
                SrpSalt:
                  type: string
                  description: Base64 encoded SRP salt
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/user/srp/auth:
    post:
      tags: [pass]
      summary: Post Pass User Srp Auth
      operationId: postPassUserSrpAuth
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ClientEphemeral
                - ClientProof
                - SrpSessionID
              properties:
                ClientEphemeral:
                  type: string
                  description: Base64 encoded SRP client ephemeral
                ClientProof:
                  type: string
                  description: Base64 encoded SRP client proof
                SrpSessionID:
                  type: string
                  description: SRP session ID
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      ServerProof:
                        type: string
                        description: Base64 encoded SRP server proof
                      Code:
                        type: integer
  /pass/v1/user/srp/info:
    get:
      tags: [pass]
      summary: Get Pass User Srp Info
      operationId: getPassUserSrpInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      SRPData:
                        type: object
  /pass/v1/user/sync_event:
    get:
      tags: [pass]
      summary: Get Pass User Sync Event
      operationId: getPassUserSyncEvent
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/user/sync_event/{synceventId}:
    get:
      tags: [pass]
      summary: Get Pass User Sync Event
      operationId: getPassUserSyncEvent
      parameters:
        - name: synceventId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Events:
                        type: object
  /pass/v1/vault:
    post:
      tags: [pass]
      summary: Post Pass Vault
      operationId: postPassVault
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - AddressID
                - Content
                - ContentFormatVersion
                - EncryptedVaultKey
              properties:
                AddressID:
                  type: string
                  description: AddressID that should be displayed as the owner
                Content:
                  type: string
                  description: Vault content protocol buffer data encrypted with the vault key
                ContentFormatVersion:
                  type: integer
                  description: Vault content format version. Should be 1 for now.
                EncryptedVaultKey:
                  type: string
                  description: Vault key encrypted and signed with the primary user key
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
  /pass/v1/vault/share/{vaultID}:
    get:
      tags: [Pass]
      summary: Get Share ID
      operationId: getShareID
      parameters:
        - name: vaultID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /pass/v1/vault/usage/{usageId}:
    get:
      tags: [pass]
      summary: Get Pass Vault Usage
      operationId: getPassVaultUsage
      parameters:
        - name: usageId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      VaultFileStorageInfo:
                        type: object
  /pass/v1/vault/{vaultId}:
    delete:
      tags: [pass]
      summary: Delete Pass Vault
      operationId: deletePassVault
      parameters:
        - name: vaultId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
    put:
      tags: [pass]
      summary: Put Pass Vault
      operationId: putPassVault
      parameters:
        - name: vaultId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - Content
                - ContentFormatVersion
                - KeyRotation
              properties:
                Content:
                  type: string
                  description: Vault content protocol buffer data encrypted with the vault key
                ContentFormatVersion:
                  type: integer
                  description: Vault content format version. Should be 1 for now.
                KeyRotation:
                  type: integer
                  description: Key rotation used to encrypt the content
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
                      Share:
                        type: object
  /pass/v1/vault/{vaultId}/owner:
    put:
      tags: [pass]
      summary: Put Pass Vault Owner
      operationId: putPassVaultOwner
      parameters:
        - name: vaultId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - NewOwnerShareID
              properties:
                NewOwnerShareID:
                  type: string
                  description: ShareID to move the ownership to. It has to have manager privileges
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /pass/v1/vault/{vaultId}/primary:
    put:
      tags: [pass]
      summary: Put Pass Vault Primary
      operationId: putPassVaultPrimary
      parameters:
        - name: vaultId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponse'
                  - type: object
                    properties:
                      Code:
                        type: integer
  /permissions/v1/groups/{groupID}/roles:
    get:
      tags: [Permissions]
      summary: Get Group Organization Roles
      operationId: getGroupOrganizationRoles
      parameters:
        - name: groupID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Permissions]
      summary: Update Group Organization Roles
      operationId: updateGroupOrganizationRoles
      parameters:
        - name: groupID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - add
                - remove
              properties:
                add:
                  type: array
                  items: {}
                remove:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /permissions/v1/me:
    get:
      tags: [Permissions]
      summary: Get User Permissions
      operationId: getUserPermissions
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /permissions/v1/members/{memberID}/roles:
    get:
      tags: [Permissions]
      summary: Get Member Organization Roles
      operationId: getMemberOrganizationRoles
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Permissions]
      summary: Update Member Organization Roles
      operationId: updateMemberOrganizationRoles
      parameters:
        - name: memberID
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - add
                - remove
              properties:
                add:
                  type: array
                  items: {}
                remove:
                  type: array
                  items: {}
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /permissions/v1/roles:
    get:
      tags: [Permissions]
      summary: Get Organization Roles
      operationId: getOrganizationRoles
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /settings/calendar:
    get:
      tags: [Settings]
      summary: Get Calendar User Settings
      operationId: getCalendarUserSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags: [Settings]
      summary: Update Calendar User Settings
      operationId: updateCalendarUserSettings
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                DefaultCalendarID:
                  type: string
                WeekLength:
                  type: string
                DisplayWeekNumber:
                  type: string
                AutoDetectPrimaryTimezone:
                  type: string
                PrimaryTimezone:
                  type: string
                DisplaySecondaryTimezone:
                  type: string
                SecondaryTimezone:
                  type: string
                ViewPreference:
                  type: string
                InviteLocale:
                  type: string
                AutoImportInvite:
                  type: string
                AutoAddConferenceLink:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /tests/ping:
    get:
      tags: [Tests]
      summary: Ping
      operationId: ping
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /vpn/v1/business/members/usage:
    post:
      tags: [Vpn]
      summary: Query Members Usage
      operationId: queryMembersUsage
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /vpn/v1/config:
    get:
      tags: [Vpn]
      summary: Get VPN Server Config
      operationId: getVPNServerConfig
      parameters:
        - name: LogicalID
          in: query
          schema:
            type: string
        - name: ServerID
          in: query
          schema:
            type: string
        - name: Country
          in: query
          schema:
            type: string
        - name: Category
          in: query
          schema:
            type: string
        - name: Tier
          in: query
          schema:
            type: string
        - name: Platform
          in: query
          schema:
            type: string
        - name: Protocol
          in: query
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /vpn/v1/location:
    get:
      tags: [Vpn]
      summary: Get Location
      operationId: getLocation
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /vpn/v1/logicals:
    get:
      tags: [Vpn]
      summary: Query VPN Logical Server Info
      operationId: queryVPNLogicalServerInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /vpn/v1/logicals/lookup/{encodeURIComponent(name)}:
    get:
      tags: [Vpn]
      summary: Query VPN Logical Server Lookup
      operationId: queryVPNLogicalServerLookup
      parameters:
        - name: encodeURIComponent(name)
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /vpn/v1/settings/reset:
    put:
      tags: [Vpn]
      summary: Reset VPN Settings
      operationId: resetVPNSettings
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
  /vpn/v2:
    get:
      tags: [Vpn]
      summary: Get Client VPN Info
      operationId: getClientVPNInfo
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
