// This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. // eslint-disable-next-line no-restricted-imports import { CollectionAccessDetailsResponse, CollectionDetailsResponse, CollectionRequest, CollectionResponse, } from "@bitwarden/admin-console/common"; import { OrganizationConnectionType } from "../admin-console/enums"; import { OrganizationSponsorshipCreateRequest } from "../admin-console/models/request/organization/organization-sponsorship-create.request"; import { OrganizationSponsorshipRedeemRequest } from "../admin-console/models/request/organization/organization-sponsorship-redeem.request"; import { OrganizationConnectionRequest } from "../admin-console/models/request/organization-connection.request"; import { ProviderAddOrganizationRequest } from "../admin-console/models/request/provider/provider-add-organization.request"; import { ProviderOrganizationCreateRequest } from "../admin-console/models/request/provider/provider-organization-create.request"; import { ProviderUserAcceptRequest } from "../admin-console/models/request/provider/provider-user-accept.request"; import { ProviderUserBulkConfirmRequest } from "../admin-console/models/request/provider/provider-user-bulk-confirm.request"; import { ProviderUserBulkRequest } from "../admin-console/models/request/provider/provider-user-bulk.request"; import { ProviderUserConfirmRequest } from "../admin-console/models/request/provider/provider-user-confirm.request"; import { ProviderUserInviteRequest } from "../admin-console/models/request/provider/provider-user-invite.request"; import { ProviderUserUpdateRequest } from "../admin-console/models/request/provider/provider-user-update.request"; import { OrganizationConnectionConfigApis, OrganizationConnectionResponse, } from "../admin-console/models/response/organization-connection.response"; import { OrganizationExportResponse } from "../admin-console/models/response/organization-export.response"; import { OrganizationSponsorshipSyncStatusResponse } from "../admin-console/models/response/organization-sponsorship-sync-status.response"; import { PreValidateSponsorshipResponse } from "../admin-console/models/response/pre-validate-sponsorship.response"; import { ProviderOrganizationOrganizationDetailsResponse, ProviderOrganizationResponse, } from "../admin-console/models/response/provider/provider-organization.response"; import { ProviderUserBulkPublicKeyResponse } from "../admin-console/models/response/provider/provider-user-bulk-public-key.response"; import { ProviderUserBulkResponse } from "../admin-console/models/response/provider/provider-user-bulk.response"; import { ProviderUserResponse, ProviderUserUserDetailsResponse, } from "../admin-console/models/response/provider/provider-user.response"; import { SelectionReadOnlyResponse } from "../admin-console/models/response/selection-read-only.response"; import { DeviceVerificationRequest } from "../auth/models/request/device-verification.request"; import { DisableTwoFactorAuthenticatorRequest } from "../auth/models/request/disable-two-factor-authenticator.request"; import { EmailTokenRequest } from "../auth/models/request/email-token.request"; import { EmailRequest } from "../auth/models/request/email.request"; import { PasswordTokenRequest } from "../auth/models/request/identity-token/password-token.request"; import { SsoTokenRequest } from "../auth/models/request/identity-token/sso-token.request"; import { UserApiTokenRequest } from "../auth/models/request/identity-token/user-api-token.request"; import { WebAuthnLoginTokenRequest } from "../auth/models/request/identity-token/webauthn-login-token.request"; import { PasswordHintRequest } from "../auth/models/request/password-hint.request"; import { PasswordlessAuthRequest } from "../auth/models/request/passwordless-auth.request"; import { SecretVerificationRequest } from "../auth/models/request/secret-verification.request"; import { TwoFactorEmailRequest } from "../auth/models/request/two-factor-email.request"; import { TwoFactorProviderRequest } from "../auth/models/request/two-factor-provider.request"; import { UpdateProfileRequest } from "../auth/models/request/update-profile.request"; import { UpdateTwoFactorAuthenticatorRequest } from "../auth/models/request/update-two-factor-authenticator.request"; import { UpdateTwoFactorDuoRequest } from "../auth/models/request/update-two-factor-duo.request"; import { UpdateTwoFactorEmailRequest } from "../auth/models/request/update-two-factor-email.request"; import { UpdateTwoFactorWebAuthnDeleteRequest } from "../auth/models/request/update-two-factor-web-authn-delete.request"; import { UpdateTwoFactorWebAuthnRequest } from "../auth/models/request/update-two-factor-web-authn.request"; import { UpdateTwoFactorYubikeyOtpRequest } from "../auth/models/request/update-two-factor-yubikey-otp.request"; import { ApiKeyResponse } from "../auth/models/response/api-key.response"; import { AuthRequestResponse } from "../auth/models/response/auth-request.response"; import { DeviceVerificationResponse } from "../auth/models/response/device-verification.response"; import { IdentityDeviceVerificationResponse } from "../auth/models/response/identity-device-verification.response"; import { IdentityTokenResponse } from "../auth/models/response/identity-token.response"; import { IdentityTwoFactorResponse } from "../auth/models/response/identity-two-factor.response"; import { KeyConnectorUserKeyResponse } from "../auth/models/response/key-connector-user-key.response"; import { PreloginResponse } from "../auth/models/response/prelogin.response"; import { SsoPreValidateResponse } from "../auth/models/response/sso-pre-validate.response"; import { TwoFactorAuthenticatorResponse } from "../auth/models/response/two-factor-authenticator.response"; import { TwoFactorDuoResponse } from "../auth/models/response/two-factor-duo.response"; import { TwoFactorEmailResponse } from "../auth/models/response/two-factor-email.response"; import { TwoFactorProviderResponse } from "../auth/models/response/two-factor-provider.response"; import { TwoFactorRecoverResponse } from "../auth/models/response/two-factor-recover.response"; import { ChallengeResponse, TwoFactorWebAuthnResponse, } from "../auth/models/response/two-factor-web-authn.response"; import { TwoFactorYubiKeyResponse } from "../auth/models/response/two-factor-yubi-key.response"; import { BitPayInvoiceRequest } from "../billing/models/request/bit-pay-invoice.request"; import { PaymentRequest } from "../billing/models/request/payment.request"; import { TaxInfoUpdateRequest } from "../billing/models/request/tax-info-update.request"; import { BillingHistoryResponse } from "../billing/models/response/billing-history.response"; import { BillingPaymentResponse } from "../billing/models/response/billing-payment.response"; import { PaymentResponse } from "../billing/models/response/payment.response"; import { PlanResponse } from "../billing/models/response/plan.response"; import { SubscriptionResponse } from "../billing/models/response/subscription.response"; import { TaxInfoResponse } from "../billing/models/response/tax-info.response"; import { KeyConnectorUserKeyRequest } from "../key-management/key-connector/models/key-connector-user-key.request"; import { SetKeyConnectorKeyRequest } from "../key-management/key-connector/models/set-key-connector-key.request"; import { DeleteRecoverRequest } from "../models/request/delete-recover.request"; import { EventRequest } from "../models/request/event.request"; import { KdfRequest } from "../models/request/kdf.request"; import { KeysRequest } from "../models/request/keys.request"; import { PreloginRequest } from "../models/request/prelogin.request"; import { StorageRequest } from "../models/request/storage.request"; import { UpdateAvatarRequest } from "../models/request/update-avatar.request"; import { UpdateDomainsRequest } from "../models/request/update-domains.request"; import { VerifyDeleteRecoverRequest } from "../models/request/verify-delete-recover.request"; import { VerifyEmailRequest } from "../models/request/verify-email.request"; import { BreachAccountResponse } from "../models/response/breach-account.response"; import { DomainsResponse } from "../models/response/domains.response"; import { EventResponse } from "../models/response/event.response"; import { ListResponse } from "../models/response/list.response"; import { ProfileResponse } from "../models/response/profile.response"; import { UserKeyResponse } from "../models/response/user-key.response"; import { SyncResponse } from "../platform/sync"; import { UserId } from "../types/guid"; import { AttachmentRequest } from "../vault/models/request/attachment.request"; import { CipherBulkDeleteRequest } from "../vault/models/request/cipher-bulk-delete.request"; import { CipherBulkMoveRequest } from "../vault/models/request/cipher-bulk-move.request"; import { CipherBulkRestoreRequest } from "../vault/models/request/cipher-bulk-restore.request"; import { CipherBulkShareRequest } from "../vault/models/request/cipher-bulk-share.request"; import { CipherCollectionsRequest } from "../vault/models/request/cipher-collections.request"; import { CipherCreateRequest } from "../vault/models/request/cipher-create.request"; import { CipherPartialRequest } from "../vault/models/request/cipher-partial.request"; import { CipherShareRequest } from "../vault/models/request/cipher-share.request"; import { CipherRequest } from "../vault/models/request/cipher.request"; import { AttachmentUploadDataResponse } from "../vault/models/response/attachment-upload-data.response"; import { AttachmentResponse } from "../vault/models/response/attachment.response"; import { CipherResponse } from "../vault/models/response/cipher.response"; import { OptionalCipherResponse } from "../vault/models/response/optional-cipher.response"; /** * @deprecated The `ApiService` class is deprecated and calls should be extracted into individual * api services. The `send` method is still allowed to be used within api services. For background * of this decision please read https://contributing.bitwarden.com/architecture/adr/refactor-api-service. */ export abstract class ApiService { abstract send( method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH", path: string, body: any, authed: boolean, hasResponse: boolean, apiUrl?: string | null, alterHeaders?: (headers: Headers) => void, ): Promise; abstract postIdentityToken( request: | PasswordTokenRequest | SsoTokenRequest | UserApiTokenRequest | WebAuthnLoginTokenRequest, ): Promise< IdentityTokenResponse | IdentityTwoFactorResponse | IdentityDeviceVerificationResponse >; abstract refreshIdentityToken(): Promise; abstract getProfile(): Promise; abstract getUserSubscription(): Promise; abstract getTaxInfo(): Promise; abstract putProfile(request: UpdateProfileRequest): Promise; abstract putAvatar(request: UpdateAvatarRequest): Promise; abstract putTaxInfo(request: TaxInfoUpdateRequest): Promise; abstract postPrelogin(request: PreloginRequest): Promise; abstract postEmailToken(request: EmailTokenRequest): Promise; abstract postEmail(request: EmailRequest): Promise; abstract postSetKeyConnectorKey(request: SetKeyConnectorKeyRequest): Promise; abstract postSecurityStamp(request: SecretVerificationRequest): Promise; abstract getAccountRevisionDate(): Promise; abstract postPasswordHint(request: PasswordHintRequest): Promise; abstract postPremium(data: FormData): Promise; abstract postReinstatePremium(): Promise; abstract postAccountStorage(request: StorageRequest): Promise; abstract postAccountPayment(request: PaymentRequest): Promise; abstract postAccountLicense(data: FormData): Promise; abstract postAccountKeys(request: KeysRequest): Promise; abstract postAccountVerifyEmail(): Promise; abstract postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise; abstract postAccountRecoverDelete(request: DeleteRecoverRequest): Promise; abstract postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise; abstract postAccountKdf(request: KdfRequest): Promise; abstract postUserApiKey(id: string, request: SecretVerificationRequest): Promise; abstract postUserRotateApiKey( id: string, request: SecretVerificationRequest, ): Promise; abstract postConvertToKeyConnector(): Promise; //passwordless abstract getAuthRequest(id: string): Promise; abstract putAuthRequest( id: string, request: PasswordlessAuthRequest, ): Promise; abstract getAuthRequests(): Promise>; abstract getLastAuthRequest(): Promise; abstract getUserBillingHistory(): Promise; abstract getUserBillingPayment(): Promise; abstract getCipher(id: string): Promise; abstract getFullCipherDetails(id: string): Promise; abstract getCipherAdmin(id: string): Promise; abstract getAttachmentData( cipherId: string, attachmentId: string, emergencyAccessId?: string, ): Promise; abstract getAttachmentDataAdmin( cipherId: string, attachmentId: string, ): Promise; abstract getCiphersOrganization(organizationId: string): Promise>; abstract postCipher(request: CipherRequest): Promise; abstract postCipherCreate(request: CipherCreateRequest): Promise; abstract postCipherAdmin(request: CipherCreateRequest): Promise; abstract putCipher(id: string, request: CipherRequest): Promise; abstract putPartialCipher(id: string, request: CipherPartialRequest): Promise; abstract putCipherAdmin(id: string, request: CipherRequest): Promise; abstract deleteCipher(id: string): Promise; abstract deleteCipherAdmin(id: string): Promise; abstract deleteManyCiphers(request: CipherBulkDeleteRequest): Promise; abstract deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise; abstract putMoveCiphers(request: CipherBulkMoveRequest): Promise; abstract putShareCipher(id: string, request: CipherShareRequest): Promise; abstract putShareCiphers(request: CipherBulkShareRequest): Promise>; abstract putCipherCollections( id: string, request: CipherCollectionsRequest, ): Promise; abstract putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise; abstract postPurgeCiphers( request: SecretVerificationRequest, organizationId?: string, ): Promise; abstract putDeleteCipher(id: string): Promise; abstract putDeleteCipherAdmin(id: string): Promise; abstract putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise; abstract putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise; abstract putRestoreCipher(id: string): Promise; abstract putRestoreCipherAdmin(id: string): Promise; abstract putRestoreManyCiphers( request: CipherBulkRestoreRequest, ): Promise>; abstract putRestoreManyCiphersAdmin( request: CipherBulkRestoreRequest, ): Promise>; abstract postCipherAttachment( id: string, request: AttachmentRequest, ): Promise; abstract deleteCipherAttachment(id: string, attachmentId: string): Promise; abstract deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise; abstract postShareCipherAttachment( id: string, attachmentId: string, data: FormData, organizationId: string, ): Promise; abstract renewAttachmentUploadUrl( id: string, attachmentId: string, ): Promise; abstract postAttachmentFile(id: string, attachmentId: string, data: FormData): Promise; abstract getUserCollections(): Promise>; abstract getCollections(organizationId: string): Promise>; abstract getCollectionUsers( organizationId: string, id: string, ): Promise; abstract getCollectionAccessDetails( organizationId: string, id: string, ): Promise; abstract getManyCollectionsWithAccessDetails( orgId: string, ): Promise>; abstract postCollection( organizationId: string, request: CollectionRequest, ): Promise; abstract putCollection( organizationId: string, id: string, request: CollectionRequest, ): Promise; abstract deleteCollection(organizationId: string, id: string): Promise; abstract deleteManyCollections(organizationId: string, collectionIds: string[]): Promise; abstract getGroupUsers(organizationId: string, id: string): Promise; abstract deleteGroupUser( organizationId: string, id: string, organizationUserId: string, ): Promise; abstract getSync(): Promise; abstract getSettingsDomains(): Promise; abstract putSettingsDomains(request: UpdateDomainsRequest): Promise; abstract getTwoFactorProviders(): Promise>; abstract getTwoFactorOrganizationProviders( organizationId: string, ): Promise>; abstract getTwoFactorAuthenticator( request: SecretVerificationRequest, ): Promise; abstract getTwoFactorEmail(request: SecretVerificationRequest): Promise; abstract getTwoFactorDuo(request: SecretVerificationRequest): Promise; abstract getTwoFactorOrganizationDuo( organizationId: string, request: SecretVerificationRequest, ): Promise; abstract getTwoFactorYubiKey( request: SecretVerificationRequest, ): Promise; abstract getTwoFactorWebAuthn( request: SecretVerificationRequest, ): Promise; abstract getTwoFactorWebAuthnChallenge( request: SecretVerificationRequest, ): Promise; abstract getTwoFactorRecover( request: SecretVerificationRequest, ): Promise; abstract putTwoFactorAuthenticator( request: UpdateTwoFactorAuthenticatorRequest, ): Promise; abstract deleteTwoFactorAuthenticator( request: DisableTwoFactorAuthenticatorRequest, ): Promise; abstract putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise; abstract putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise; abstract putTwoFactorOrganizationDuo( organizationId: string, request: UpdateTwoFactorDuoRequest, ): Promise; abstract putTwoFactorYubiKey( request: UpdateTwoFactorYubikeyOtpRequest, ): Promise; abstract putTwoFactorWebAuthn( request: UpdateTwoFactorWebAuthnRequest, ): Promise; abstract deleteTwoFactorWebAuthn( request: UpdateTwoFactorWebAuthnDeleteRequest, ): Promise; abstract putTwoFactorDisable( request: TwoFactorProviderRequest, ): Promise; abstract putTwoFactorOrganizationDisable( organizationId: string, request: TwoFactorProviderRequest, ): Promise; abstract postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise; abstract postTwoFactorEmail(request: TwoFactorEmailRequest): Promise; abstract getDeviceVerificationSettings(): Promise; abstract putDeviceVerificationSettings( request: DeviceVerificationRequest, ): Promise; abstract getCloudCommunicationsEnabled(): Promise; abstract getOrganizationConnection( id: string, type: OrganizationConnectionType, configType: { new (response: any): TConfig }, ): Promise>; abstract createOrganizationConnection( request: OrganizationConnectionRequest, configType: { new (response: any): TConfig }, ): Promise>; abstract updateOrganizationConnection( request: OrganizationConnectionRequest, configType: { new (response: any): TConfig }, organizationConnectionId: string, ): Promise>; abstract deleteOrganizationConnection(id: string): Promise; abstract getPlans(): Promise>; abstract getProviderUsers( providerId: string, ): Promise>; abstract getProviderUser(providerId: string, id: string): Promise; abstract postProviderUserInvite( providerId: string, request: ProviderUserInviteRequest, ): Promise; abstract postProviderUserReinvite(providerId: string, id: string): Promise; abstract postManyProviderUserReinvite( providerId: string, request: ProviderUserBulkRequest, ): Promise>; abstract postProviderUserAccept( providerId: string, id: string, request: ProviderUserAcceptRequest, ): Promise; abstract postProviderUserConfirm( providerId: string, id: string, request: ProviderUserConfirmRequest, ): Promise; abstract postProviderUsersPublicKey( providerId: string, request: ProviderUserBulkRequest, ): Promise>; abstract postProviderUserBulkConfirm( providerId: string, request: ProviderUserBulkConfirmRequest, ): Promise>; abstract putProviderUser( providerId: string, id: string, request: ProviderUserUpdateRequest, ): Promise; abstract deleteProviderUser(organizationId: string, id: string): Promise; abstract deleteManyProviderUsers( providerId: string, request: ProviderUserBulkRequest, ): Promise>; abstract getProviderClients( providerId: string, ): Promise>; abstract postProviderAddOrganization( providerId: string, request: ProviderAddOrganizationRequest, ): Promise; abstract postProviderCreateOrganization( providerId: string, request: ProviderOrganizationCreateRequest, ): Promise; abstract deleteProviderOrganization(providerId: string, organizationId: string): Promise; abstract getEvents( start: string, end: string, token: string, ): Promise>; abstract getEventsCipher( id: string, start: string, end: string, token: string, ): Promise>; abstract getEventsSecret( orgId: string, id: string, start: string, end: string, token: string, ): Promise>; abstract getEventsProject( orgId: string, id: string, start: string, end: string, token: string, ): Promise>; abstract getEventsOrganization( id: string, start: string, end: string, token: string, ): Promise>; abstract getEventsOrganizationUser( organizationId: string, id: string, start: string, end: string, token: string, ): Promise>; abstract getEventsProvider( id: string, start: string, end: string, token: string, ): Promise>; abstract getEventsProviderUser( providerId: string, id: string, start: string, end: string, token: string, ): Promise>; /** * Posts events for a user * @param request The array of events to upload * @param userId The optional user id the events belong to. If no user id is provided the active user id is used. */ abstract postEventsCollect(request: EventRequest[], userId?: UserId): Promise; abstract deleteSsoUser(organizationId: string): Promise; abstract getSsoUserIdentifier(): Promise; abstract getUserPublicKey(id: string): Promise; abstract getHibpBreach(username: string): Promise; abstract postBitPayInvoice(request: BitPayInvoiceRequest): Promise; abstract postSetupPayment(): Promise; abstract getActiveBearerToken(): Promise; abstract fetch(request: Request): Promise; abstract nativeFetch(request: Request): Promise; abstract preValidateSso(identifier: string): Promise; abstract postCreateSponsorship( sponsorshipOrgId: string, request: OrganizationSponsorshipCreateRequest, ): Promise; abstract getSponsorshipSyncStatus( sponsoredOrgId: string, ): Promise; abstract deleteRemoveSponsorship(sponsoringOrgId: string): Promise; abstract postPreValidateSponsorshipToken( sponsorshipToken: string, ): Promise; abstract postRedeemSponsorship( sponsorshipToken: string, request: OrganizationSponsorshipRedeemRequest, ): Promise; abstract getMasterKeyFromKeyConnector( keyConnectorUrl: string, ): Promise; abstract postUserKeyToKeyConnector( keyConnectorUrl: string, request: KeyConnectorUserKeyRequest, ): Promise; abstract getKeyConnectorAlive(keyConnectorUrl: string): Promise; abstract getOrganizationExport(organizationId: string): Promise; }