using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Bit.Core.Models.Domain; using Bit.Core.Models.Request; using Bit.Core.Models.Response; 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 RefreshIdentityTokenAsync(); Task PreValidateSso(string identifier); Task SendAsync(HttpMethod method, string path, TRequest body, bool authed, bool hasResponse, bool logoutOnUnauthorized = true); void SetUrls(EnvironmentUrls 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 DeleteAccountAsync(DeleteAccountRequest request); Task GetOrganizationKeysAsync(string id); Task GetOrganizationAutoEnrollStatusAsync(string identifier); Task PutOrganizationUserResetPasswordEnrollmentAsync(string orgId, string userId, OrganizationUserResetPasswordEnrollmentRequest request); Task GetUserKeyFromKeyConnector(string keyConnectorUrl); Task PostUserKeyToKeyConnector(string keyConnectorUrl, KeyConnectorUserKeyRequest request); Task PostSetKeyConnectorKey(SetKeyConnectorKeyRequest request); Task PostConvertToKeyConnector(); Task PostLeaveOrganization(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); } }