/** * Copyright (C) 2014-2016 Open Whisper Systems * * Licensed according to the LICENSE file in this repository. */ syntax = "proto3"; package signal; option java_package = "org.thoughtcrime.securesms.database.model.databaseprotos"; option java_multiple_files = true; import Backup.proto; // DEPRECATED -- only here for database migrations message ReactionList { option deprecated = true; message Reaction { string emoji = 1; uint64 author = 2; uint64 sentTime = 3; uint64 receivedTime = 4; } repeated Reaction reactions = 1; } message BadgeList { message Badge { string id = 1; string category = 2; string name = 3; string description = 4; string imageUrl = 5; uint64 expiration = 6; bool visible = 7; string imageDensity = 8; } repeated Badge badges = 1; } import "SignalService.proto"; import "DecryptedGroups.proto"; message DecryptedGroupV2Context { signalservice.GroupContextV2 context = 1; DecryptedGroupChange change = 2; DecryptedGroup groupState = 3; DecryptedGroup previousGroupState = 4; } message TemporalAuthCredentialResponse { int64 date = 1; bytes authCredentialResponse = 2; } message TemporalAuthCredentialResponses { repeated TemporalAuthCredentialResponse credentialResponse = 1; } message AudioWaveFormData { int64 durationUs = 1; bytes waveForm = 2; } message ProfileChangeDetails { message StringChange { string previous = 1; string newValue = 2; } message LearnedProfileName { oneof PreviouslyKnownAs { string e164 = 1; string username = 2; } } StringChange profileNameChange = 1; // Deprecated - Use learnedProfileName instead StringChange deprecatedLearnedProfileName = 2; LearnedProfileName learnedProfileName = 3; } message BodyRangeList { message BodyRange { enum Style { BOLD = 0; ITALIC = 1; SPOILER = 2; STRIKETHROUGH = 3; MONOSPACE = 4; } message Button { string label = 1; string action = 2; } int32 start = 1; int32 length = 2; oneof associatedValue { string mentionUuid = 3; Style style = 4; string link = 5; Button button = 6; } } repeated BodyRange ranges = 1; } message CryptoValue { oneof Value { MobileCoinValue mobileCoinValue = 1; } message MobileCoinValue { string picoMobileCoin = 1; } } message GroupCallUpdateDetails { string eraId = 1; string startedCallUuid = 2; int64 startedCallTimestamp = 3; repeated string inCallUuids = 4; bool isCallFull = 5; bool localUserJoined = 6; int64 endedCallTimestamp = 7; bool isRingingOnLocalDevice = 8; } message ExpiringProfileKeyCredentialColumnData { bytes profileKey = 1; bytes expiringProfileKeyCredential = 2; } message DeviceLastResetTime { message Pair { int32 deviceId = 1; int64 lastResetTime = 2; } repeated Pair resetTime = 1; } message Wallpaper { message SingleColor { int32 color = 1; } message LinearGradient { float rotation = 1; repeated int32 colors = 2; repeated float positions = 3; } message File { string uri = 1; } oneof wallpaper { SingleColor singleColor = 1; LinearGradient linearGradient = 2; File file = 3; } float dimLevelInDarkTheme = 4; } message ChatColor { message SingleColor { int32 color = 1; } message LinearGradient { float rotation = 1; repeated int32 colors = 2; repeated float positions = 3; } message File { string uri = 1; } oneof chatColor { SingleColor singleColor = 1; LinearGradient linearGradient = 2; } } message RecipientExtras { bool manuallyShownAvatar = 1; bool hideStory = 2; int64 lastStoryView = 3; } message CustomAvatar { message Text { string text = 1; string colors = 2; } message Vector { string key = 1; string colors = 2; } message Photo { string uri = 1; int64 size = 2; } oneof avatar { Text text = 1; Vector vector = 2; Photo photo = 3; } } message StoryTextPost { enum Style { DEFAULT = 0; REGULAR = 1; BOLD = 2; SERIF = 3; SCRIPT = 4; CONDENSED = 5; } string body = 1; Style style = 2; int32 textForegroundColor = 3; int32 textBackgroundColor = 4; ChatColor background = 5; } message GiftBadge { enum RedemptionState { PENDING = 0; STARTED = 1; REDEEMED = 2; FAILED = 3; } bytes redemptionToken = 1; RedemptionState redemptionState = 2; } message SignalStoreList { repeated string contents = 1; } message PendingChangeNumberMetadata { bytes previousPni = 1; bytes pniIdentityKeyPair = 2; int32 pniRegistrationId = 3; int32 pniSignedPreKeyId = 4; int32 pniLastResortKyberPreKeyId = 5; } message MessageExportState { enum Progress { INIT = 0; STARTED = 1; COMPLETED = 2; } int64 messageId = 1; repeated string startedRecipients = 2; repeated string completedRecipients = 3; repeated string startedAttachments = 4; repeated string completedAttachments = 5; Progress progress = 6; } message ThreadMergeEvent { string previousE164 = 1; } message SessionSwitchoverEvent { string e164 = 1; } message DecimalValue { uint32 scale = 1; uint32 precision = 2; bytes value = 3; } message FiatValue { string currencyCode = 1; DecimalValue amount = 2; uint64 timestamp = 3; } // DEPRECATED -- Replaced with InAppPaymentData.Error message. message DonationErrorValue { enum Type { PROCESSOR_CODE = 0; // Generic processor error (e.g. Stripe returned an error code) DECLINE_CODE = 1; // Stripe or PayPal decline Code FAILURE_CODE = 2; // Stripe bank transfer failure code REDEMPTION = 3; // Generic redemption error (status is HTTP code) PAYMENT = 4; // Generic payment error (status is HTTP code) VALIDATION = 5; // Failed while trying to validate the ReceiptCredential returned from the service. } Type type = 1; string code = 2; } /** * Contains all the extra information required to appropriately * manage the lifecycle of transactions. */ message InAppPaymentData { enum PaymentMethodType { UNKNOWN = 0; GOOGLE_PAY = 1; CARD = 2; SEPA_DEBIT = 3; IDEAL = 4; PAYPAL = 5; } /** * This mirrors ActiveSubscription.ChargeFailure */ message ChargeFailure { string code = 1; string message = 2; string outcomeNetworkStatus = 3; string outcomeNetworkReason = 4; string outcomeType = 5; } message Cancellation { enum Reason { UNKNOWN = 0; MANUAL = 1; PAST_DUE = 2; CANCELED = 3; UNPAID = 4; USER_WAS_INACTIVE = 5; } Reason reason = 1; // Why the cancellation happened optional ChargeFailure chargeFailure = 2; // A charge failure, if available. } message WaitingForAuthorizationState { string stripeIntentId = 1; string stripeClientSecret = 2; bool checkedVerification = 3; } message RedemptionState { enum Stage { INIT = 0; CONVERSION_STARTED = 1; REDEMPTION_STARTED = 2; REDEEMED = 3; } Stage stage = 1; optional string paymentIntentId = 2; // Only present for one-time donations. optional bool keepAlive = 3; // Only present for recurring donations, specifies this redemption started from a keep-alive optional bytes receiptCredentialRequestContext = 4; // Reusable context for retrieving a presentation optional bytes receiptCredentialPresentation = 5; // Redeemable presentation } message Error { enum Type { UNKNOWN = 0; // A generic, untyped error. Check log for details. GOOGLE_PAY_REQUEST_TOKEN = 1; // Google pay failed to give us a request token. INVALID_GIFT_RECIPIENT = 2; // Selected recipient for gift is invalid. ONE_TIME_AMOUNT_TOO_SMALL = 3; // One-time payment amount is below minimum ONE_TIME_AMOUNT_TOO_LARGE = 4; // One-time payment amount is too large INVALID_CURRENCY = 5; // One-time payment currency is invalid PAYMENT_SETUP = 6; // A generic payment setup error (prior to charging the user) STRIPE_CODED_ERROR = 7; // Stripe error containing a stripe error code in data. STRIPE_DECLINED_ERROR = 8; // Stripe error containing a decline error code in data. STRIPE_FAILURE = 9; // Stripe error containing a failure error code in data. PAYPAL_CODED_ERROR = 10; // PayPal error containing a paypal error code in data. PAYPAL_DECLINED_ERROR = 11; // PayPal error containing a paypal decline code in data. PAYMENT_PROCESSING = 12; // Generic payment error containing an HTTP status code in data. CREDENTIAL_VALIDATION = 13; // Failed to validate credential returned from service. REDEMPTION = 14; // Failed during badge redemption containing an HTTP status code in data if available. } Type type = 1; optional string data = 2; } optional BadgeList.Badge badge = 1; // The badge. Not present for backups transactions FiatValue amount = 2; // The amount the user paid for the transaction optional Error error = 3; // An error, if present. int64 level = 4; // The transaction "level" given to us by the server optional Cancellation cancellation = 5; // The transaction was cancelled. This notes why. string label = 6; // Descriptive text about the token optional string recipientId = 7; // The target recipient the token is to be sent to (only used for gifts) optional string additionalMessage = 8; // The additional message to send the target recipient (only used for gifts) PaymentMethodType paymentMethodType = 9; // The method through which this in app payment was made oneof redemptionState { WaitingForAuthorizationState waitForAuth = 10; // Waiting on user authorization from an external source (3DS, iDEAL) RedemptionState redemption = 11; // Waiting on processing of token } } // DEPRECATED -- Move to TokenTransactionData message PendingOneTimeDonation { enum PaymentMethodType { CARD = 0; SEPA_DEBIT = 1; PAYPAL = 2; IDEAL = 3; } PaymentMethodType paymentMethodType = 1; FiatValue amount = 2; BadgeList.Badge badge = 3; int64 timestamp = 4; optional DonationErrorValue error = 5; bool pendingVerification = 6; bool checkedVerification = 7; } /** * Contains the data necessary to show the corresponding terminal sheet * for a given donation. Note that the word "terminal" here is used in * the same way that it is used in Rx, where we simply mean that, regardless * of outcome, a donation has completed processing. */ // DEPRECATED -- Move to TokenTransactionData message TerminalDonationQueue { message TerminalDonation { int64 level = 1; bool isLongRunningPaymentMethod = 2; optional DonationErrorValue error = 3; } repeated TerminalDonation terminalDonations = 1; } /** * Contains the data necessary to complete a transaction after the * user completes authorization externally. This helps prevent * scenarios where the application dies while the user is confirming * a transaction in their bank app. */ // DEPRECATED -- Move to TokenTransactionData message ExternalLaunchTransactionState { message StripeIntentAccessor { enum Type { PAYMENT_INTENT = 0; SETUP_INTENT = 1; } Type type = 1; string intentId = 2; string intentClientSecret = 3; } message GatewayRequest { enum InAppPaymentType { RECURRING_DONATION = 0; ONE_TIME_DONATION = 1; ONE_TIME_GIFT = 2; RECURRING_BACKUPS = 3; } InAppPaymentType inAppPaymentType = 1; BadgeList.Badge badge = 2; string label = 3; DecimalValue price = 4; string currencyCode = 5; int64 level = 6; int64 recipient_id = 7; string additionalMessage = 8; } StripeIntentAccessor stripeIntentAccessor = 1; GatewayRequest gatewayRequest = 2; string paymentSourceType = 3; } message MessageExtras { oneof extra { GV2UpdateDescription gv2UpdateDescription = 1; signalservice.GroupContext gv1Context = 2; ProfileChangeDetails profileChangeDetails = 3; PaymentTombstone paymentTombstone = 4; } } message GV2UpdateDescription { optional DecryptedGroupV2Context gv2ChangeDescription = 1; backup.GroupChangeChatUpdate groupChangeUpdate = 2; } message PaymentTombstone { optional string note = 1; CryptoValue amount = 2; CryptoValue fee = 3; } message LocalRegistrationMetadata { bytes aciIdentityKeyPair = 1; bytes aciSignedPreKey = 2; bytes aciLastRestoreKyberPreKey = 3; bytes pniIdentityKeyPair = 4; bytes pniSignedPreKey = 5; bytes pniLastRestoreKyberPreKey = 6; string aci = 7; string pni = 8; bool hasPin = 9; optional string pin = 10; optional bytes masterKey = 11; string e164 = 12; bool fcmEnabled = 13; string fcmToken = 14; bytes profileKey = 15; string servicePassword = 16; bool reglockEnabled = 17; }