using Bit.Core.Enums; using Bit.Core.Models.Data; using Bit.Core.Models.Request; using Bit.Core.Models.Response; using DeviceType = Bit.Core.Enums.DeviceType; namespace Bit.Core.Abstractions { public interface IApiService { string ApiBaseUrl { get; set; } string IdentityBaseUrl { get; set; } string EventsBaseUrl { get; set; } bool UrlsSet { get; } Task DeleteCipherAsync(string id); Task DeleteCipherAttachmentAsync(string id, string attachmentId); Task DeleteFolderAsync(string id); Task DoRefreshTokenAsync(); Task GetAccountRevisionDateAsync(); Task GetActiveBearerTokenAsync(); Task GetCipherAsync(string id); Task GetFolderAsync(string id); Task GetProfileAsync(); Task GetSyncAsync(); Task PostAccountKeysAsync(KeysRequest request); Task PostAccountVerifyPasswordAsync(PasswordVerificationRequest request); Task PostAccountRequestOTP(); Task PostAccountVerifyOTPAsync(VerifyOTPRequest request); Task PostCipherAsync(CipherRequest request); Task PostCipherCreateAsync(CipherCreateRequest request); Task PostFolderAsync(FolderRequest request); Task PostIdentityTokenAsync(TokenRequest request); Task PostPasswordHintAsync(PasswordHintRequest request); Task SetPasswordAsync(SetPasswordRequest request); Task PostPreloginAsync(PreloginRequest request); Task PostRegisterAsync(RegisterRequest request); Task PutCipherAsync(string id, CipherRequest request); Task PutCipherCollectionsAsync(string id, CipherCollectionsRequest request); Task PutFolderAsync(string id, FolderRequest request); Task PutShareCipherAsync(string id, CipherShareRequest request); Task PutDeleteCipherAsync(string id); Task PutRestoreCipherAsync(string id); Task HasUnassignedCiphersAsync(); Task RefreshIdentityTokenAsync(); Task PreValidateSsoAsync(string identifier); Task SendAsync(HttpMethod method, string path, TRequest body, bool authed, bool hasResponse, Action alterRequest, bool logoutOnUnauthorized = true, bool sendToIdentity = false); Task SendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken = default); void SetUrls(EnvironmentUrlData urls); [Obsolete("Mar 25 2021: This method has been deprecated in favor of direct uploads. This method still exists for backward compatibility with old server versions.")] Task PostCipherAttachmentLegacyAsync(string id, MultipartFormDataContent data); Task PostCipherAttachmentAsync(string id, AttachmentRequest request); Task GetAttachmentData(string cipherId, string attachmentId); Task PostShareCipherAttachmentAsync(string id, string attachmentId, MultipartFormDataContent data, string organizationId); Task RenewAttachmentUploadUrlAsync(string id, string attachmentId); Task PostAttachmentFileAsync(string id, string attachmentId, MultipartFormDataContent data); Task> GetHibpBreachAsync(string username); Task PostTwoFactorEmailAsync(TwoFactorEmailRequest request); Task PutDeviceTokenAsync(string identifier, DeviceTokenRequest request); Task PostEventsCollectAsync(IEnumerable request); Task PutUpdateTempPasswordAsync(UpdateTempPasswordRequest request); Task PostPasswordAsync(PasswordRequest request); Task DeleteAccountAsync(DeleteAccountRequest request); Task GetOrganizationKeysAsync(string id); Task GetOrganizationAutoEnrollStatusAsync(string identifier); Task PutOrganizationUserResetPasswordEnrollmentAsync(string orgId, string userId, OrganizationUserResetPasswordEnrollmentRequest request); Task GetMasterKeyFromKeyConnectorAsync(string keyConnectorUrl); Task PostMasterKeyToKeyConnectorAsync(string keyConnectorUrl, KeyConnectorUserKeyRequest request); Task PostSetKeyConnectorKeyAsync(SetKeyConnectorKeyRequest request); Task PostConvertToKeyConnectorAsync(); Task PostLeaveOrganizationAsync(string id); Task GetSendAsync(string id); Task PostSendAsync(SendRequest request); Task PostFileTypeSendAsync(SendRequest request); Task PostSendFileAsync(string sendId, string fileId, MultipartFormDataContent data); [Obsolete("Mar 25 2021: This method has been deprecated in favor of direct uploads. This method still exists for backward compatibility with old server versions.")] Task PostSendFileAsync(MultipartFormDataContent data); Task RenewFileUploadUrlAsync(string sendId, string fileId); Task PutSendAsync(string id, SendRequest request); Task PutSendRemovePasswordAsync(string id); Task DeleteSendAsync(string id); Task> GetAuthRequestAsync(); Task GetAuthRequestAsync(string id); Task GetAuthResponseAsync(string id, string accessCode); Task PutAuthRequestAsync(string id, string key, string masterPasswordHash, string deviceIdentifier, bool requestApproved); Task PostCreateRequestAsync(PasswordlessCreateLoginRequest passwordlessCreateLoginRequest, AuthRequestType authRequestType); Task GetKnownDeviceAsync(string email, string deviceIdentifier); Task GetDeviceByIdentifierAsync(string deviceIdentifier); Task UpdateTrustedDeviceKeysAsync(string deviceIdentifier, TrustedDeviceKeysRequest deviceRequest); Task GetOrgDomainSsoDetailsAsync(string email); Task GetDevicesExistenceByTypes(DeviceType[] deviceTypes); Task GetConfigsAsync(); Task GetFastmailAccountIdAsync(string apiKey); Task> GetDigitalAssetLinksForRpAsync(string rpId); } }