From bafa264c5aa1ebe2290228c30638512b8180a9b0 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Thu, 2 Nov 2023 13:07:20 +0000 Subject: [PATCH] chore(deps): bump galoy image to 'sha256:1d5533a53ea65c9f5fd149438e809dcdd69147a35b3f8a4a4e60286b6665412f' --- charts/galoy/Chart.yaml | 2 +- .../apollo-router/api-keys-schema.graphql | 13 + .../galoy/apollo-router/public-schema.graphql | 1570 +++++++++++++++++ charts/galoy/apollo-router/supergraph.graphql | 141 +- charts/galoy/values.yaml | 14 +- 5 files changed, 1664 insertions(+), 76 deletions(-) create mode 100644 charts/galoy/apollo-router/api-keys-schema.graphql create mode 100644 charts/galoy/apollo-router/public-schema.graphql diff --git a/charts/galoy/Chart.yaml b/charts/galoy/Chart.yaml index d1c3c53105..22a0d7dc7f 100644 --- a/charts/galoy/Chart.yaml +++ b/charts/galoy/Chart.yaml @@ -16,7 +16,7 @@ version: 0.26.14-dev # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. -appVersion: 0.15.62 +appVersion: 0.15.81 dependencies: - name: redis repository: https://charts.bitnami.com/bitnami diff --git a/charts/galoy/apollo-router/api-keys-schema.graphql b/charts/galoy/apollo-router/api-keys-schema.graphql new file mode 100644 index 0000000000..066b25e167 --- /dev/null +++ b/charts/galoy/apollo-router/api-keys-schema.graphql @@ -0,0 +1,13 @@ +type MutationRoot { + helloWorldMutation: String! +} + +type QueryRoot { + helloWorld: String! +} + + +schema { + query: QueryRoot + mutation: MutationRoot +} diff --git a/charts/galoy/apollo-router/public-schema.graphql b/charts/galoy/apollo-router/public-schema.graphql new file mode 100644 index 0000000000..17c370aeec --- /dev/null +++ b/charts/galoy/apollo-router/public-schema.graphql @@ -0,0 +1,1570 @@ +interface Account { + callbackEndpoints: [CallbackEndpoint!]! + csvTransactions(walletIds: [WalletId!]!): String! + defaultWalletId: WalletId! + displayCurrency: DisplayCurrency! + id: ID! + level: AccountLevel! + limits: AccountLimits! + notificationSettings: NotificationSettings! + realtimePrice: RealtimePrice! + transactions( + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + walletIds: [WalletId] + ): TransactionConnection + walletById(walletId: WalletId!): Wallet! + wallets: [Wallet!]! +} + +type AccountDeletePayload { + errors: [Error!]! + success: Boolean! +} + +input AccountDisableNotificationCategoryInput { + category: NotificationCategory! + channel: NotificationChannel +} + +input AccountDisableNotificationChannelInput { + channel: NotificationChannel! +} + +input AccountEnableNotificationCategoryInput { + category: NotificationCategory! + channel: NotificationChannel +} + +input AccountEnableNotificationChannelInput { + channel: NotificationChannel! +} + +enum AccountLevel { + ONE + TWO + ZERO +} + +interface AccountLimit { + """The rolling time interval in seconds that the limits would apply for.""" + interval: Seconds + + """ + The amount of cents remaining below the limit for the current 24 hour period. + """ + remainingLimit: CentAmount + + """The current maximum limit for a given 24 hour period.""" + totalLimit: CentAmount! +} + +type AccountLimits { + """ + Limits for converting between currencies among a account's own wallets. + """ + convert: [AccountLimit!]! + + """Limits for sending to other internal accounts.""" + internalSend: [AccountLimit!]! + + """Limits for withdrawing to external onchain or lightning destinations.""" + withdrawal: [AccountLimit!]! +} + +input AccountUpdateDefaultWalletIdInput { + walletId: WalletId! +} + +type AccountUpdateDefaultWalletIdPayload { + account: ConsumerAccount + errors: [Error!]! +} + +input AccountUpdateDisplayCurrencyInput { + currency: DisplayCurrency! +} + +type AccountUpdateDisplayCurrencyPayload { + account: ConsumerAccount + errors: [Error!]! +} + +type AccountUpdateNotificationSettingsPayload { + account: ConsumerAccount + errors: [Error!]! +} + +"""An Opaque Bearer token""" +scalar AuthToken + +type AuthTokenPayload { + authToken: AuthToken + errors: [Error!]! + totpRequired: Boolean +} + +""" +A wallet belonging to an account which contains a BTC balance and a list of transactions. +""" +type BTCWallet implements Wallet { + accountId: ID! + + """A balance stored in BTC.""" + balance: SignedAmount! + id: ID! + invoiceByPaymentHash(paymentHash: PaymentHash!): Invoice! + + """An unconfirmed incoming onchain balance.""" + pendingIncomingBalance: SignedAmount! + transactionById(transactionId: ID!): Transaction! + + """A list of BTC transactions associated with this wallet.""" + transactions( + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + transactionsByAddress( + """Returns the items that include this address.""" + address: OnChainAddress! + + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + transactionsByPaymentHash(paymentHash: PaymentHash!): [Transaction!]! + walletCurrency: WalletCurrency! +} + +type BuildInformation { + commitHash: String + helmRevision: Int +} + +type CallbackEndpoint { + id: EndpointId! + url: EndpointUrl! +} + +input CallbackEndpointAddInput { + """callback endpoint to be called""" + url: EndpointUrl! +} + +type CallbackEndpointAddPayload { + errors: [Error!]! + id: EndpointId +} + +input CallbackEndpointDeleteInput { + id: EndpointId! +} + +type CaptchaCreateChallengePayload { + errors: [Error!]! + result: CaptchaCreateChallengeResult +} + +type CaptchaCreateChallengeResult { + challengeCode: String! + failbackMode: Boolean! + id: String! + newCaptcha: Boolean! +} + +input CaptchaRequestAuthCodeInput { + challengeCode: String! + channel: PhoneCodeChannelType + phone: Phone! + secCode: String! + validationCode: String! +} + +"""(Positive) Cent amount (1/100 of a dollar)""" +scalar CentAmount + +type CentAmountPayload { + amount: CentAmount + errors: [Error!]! +} + +type ConsumerAccount implements Account { + callbackEndpoints: [CallbackEndpoint!]! + + """ + return CSV stream, base64 encoded, of the list of transactions in the wallet + """ + csvTransactions(walletIds: [WalletId!]!): String! + defaultWalletId: WalletId! + displayCurrency: DisplayCurrency! + id: ID! + level: AccountLevel! + limits: AccountLimits! + notificationSettings: NotificationSettings! + + """List the quiz questions of the consumer account""" + quiz: [Quiz!]! + realtimePrice: RealtimePrice! + + """ + A list of all transactions associated with walletIds optionally passed. + """ + transactions( + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + walletIds: [WalletId] + ): TransactionConnection + walletById(walletId: WalletId!): Wallet! + wallets: [Wallet!]! +} + +""" +An alias name that a user can set for a wallet (with which they have transactions) +""" +scalar ContactAlias + +type Coordinates { + latitude: Float! + longitude: Float! +} + +type Country { + id: CountryCode! + supportedAuthChannels: [PhoneCodeChannelType!]! +} + +"""A CCA2 country code (ex US, FR, etc)""" +scalar CountryCode + +type Currency { + flag: String! + fractionDigits: Int! + id: ID! + name: String! + symbol: String! +} + +type DepositFeesInformation { + minBankFee: String! + + """below this amount minBankFee will be charged""" + minBankFeeThreshold: String! + + """ratio to charge as basis points above minBankFeeThreshold amount""" + ratio: String! +} + +input DeviceNotificationTokenCreateInput { + deviceToken: String! +} + +"""Display currency of an account""" +scalar DisplayCurrency + +type Email { + address: EmailAddress + verified: Boolean +} + +"""Email address""" +scalar EmailAddress + +""" +An id to be passed between registrationInitiate and registrationValidate for confirming email +""" +scalar EmailRegistrationId + +scalar EndpointId + +"""Url that will be fetched on events for the account""" +scalar EndpointUrl + +interface Error { + code: String + message: String! + path: [String] +} + +enum ExchangeCurrencyUnit { + BTCSAT + USDCENT +} + +"""Feedback shared with our user""" +scalar Feedback + +input FeedbackSubmitInput { + feedback: Feedback! +} + +type FeesInformation { + deposit: DepositFeesInformation! +} + +""" +Provides global settings for the application which might have an impact for the user. +""" +type Globals { + buildInformation: BuildInformation! + feesInformation: FeesInformation! + + """ + The domain name for lightning addresses accepted by this Galoy instance + """ + lightningAddressDomain: String! + lightningAddressDomainAliases: [String!]! + + """ + Which network (mainnet, testnet, regtest, signet) this instance is running on. + """ + network: Network! + + """ + A list of public keys for the running lightning nodes. + This can be used to know if an invoice belongs to one of our nodes. + """ + nodesIds: [String!]! + + """A list of countries and their supported auth channels""" + supportedCountries: [Country!]! +} + +type GraphQLApplicationError implements Error { + code: String + message: String! + path: [String] +} + +"""Hex-encoded string of 32 bytes""" +scalar Hex32Bytes + +union InitiationVia = InitiationViaIntraLedger | InitiationViaLn | InitiationViaOnChain + +type InitiationViaIntraLedger { + counterPartyUsername: Username + counterPartyWalletId: WalletId +} + +type InitiationViaLn { + paymentHash: PaymentHash! +} + +type InitiationViaOnChain { + address: OnChainAddress! +} + +input IntraLedgerPaymentSendInput { + """Amount in satoshis.""" + amount: SatAmount! + + """Optional memo to be attached to the payment.""" + memo: Memo + recipientWalletId: WalletId! + + """The wallet ID of the sender.""" + walletId: WalletId! +} + +type IntraLedgerUpdate { + amount: SatAmount! + displayCurrencyPerSat: Float! + txNotificationType: TxNotificationType! + usdPerSat: Float! @deprecated(reason: "updated over displayCurrencyPerSat") + walletId: WalletId! +} + +input IntraLedgerUsdPaymentSendInput { + """Amount in cents.""" + amount: CentAmount! + + """Optional memo to be attached to the payment.""" + memo: Memo + recipientWalletId: WalletId! + + """The wallet ID of the sender.""" + walletId: WalletId! +} + +"""A lightning invoice.""" +interface Invoice { + """The payment hash of the lightning invoice.""" + paymentHash: PaymentHash! + + """The bolt11 invoice to be paid.""" + paymentRequest: LnPaymentRequest! + + """ + The payment secret of the lightning invoice. This is not the preimage of the payment hash. + """ + paymentSecret: LnPaymentSecret! + + """The payment status of the invoice.""" + paymentStatus: InvoicePaymentStatus! +} + +enum InvoicePaymentStatus { + EXPIRED + PAID + PENDING +} + +scalar Language + +type LnInvoice implements Invoice { + paymentHash: PaymentHash! + paymentRequest: LnPaymentRequest! + paymentSecret: LnPaymentSecret! + paymentStatus: InvoicePaymentStatus! + satoshis: SatAmount +} + +input LnInvoiceCreateInput { + """Amount in satoshis.""" + amount: SatAmount! + + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """Optional memo for the lightning invoice.""" + memo: Memo + + """Wallet ID for a BTC wallet belonging to the current account.""" + walletId: WalletId! +} + +input LnInvoiceCreateOnBehalfOfRecipientInput { + """Amount in satoshis.""" + amount: SatAmount! + descriptionHash: Hex32Bytes + + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """Optional memo for the lightning invoice.""" + memo: Memo + + """Wallet ID for a BTC wallet which belongs to any account.""" + recipientWalletId: WalletId! +} + +input LnInvoiceFeeProbeInput { + paymentRequest: LnPaymentRequest! + walletId: WalletId! +} + +type LnInvoicePayload { + errors: [Error!]! + invoice: LnInvoice +} + +input LnInvoicePaymentInput { + """Optional memo to associate with the lightning invoice.""" + memo: Memo + + """Payment request representing the invoice which is being paid.""" + paymentRequest: LnPaymentRequest! + + """ + Wallet ID with sufficient balance to cover amount of invoice. Must belong to the account of the current user. + """ + walletId: WalletId! +} + +input LnInvoicePaymentStatusInput { + paymentRequest: LnPaymentRequest! +} + +type LnInvoicePaymentStatusPayload { + errors: [Error!]! + status: InvoicePaymentStatus +} + +type LnNoAmountInvoice implements Invoice { + paymentHash: PaymentHash! + paymentRequest: LnPaymentRequest! + paymentSecret: LnPaymentSecret! + paymentStatus: InvoicePaymentStatus! +} + +input LnNoAmountInvoiceCreateInput { + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """Optional memo for the lightning invoice.""" + memo: Memo + + """ + ID for either a USD or BTC wallet belonging to the account of the current user. + """ + walletId: WalletId! +} + +input LnNoAmountInvoiceCreateOnBehalfOfRecipientInput { + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """Optional memo for the lightning invoice.""" + memo: Memo + + """ + ID for either a USD or BTC wallet which belongs to the account of any user. + """ + recipientWalletId: WalletId! +} + +input LnNoAmountInvoiceFeeProbeInput { + amount: SatAmount! + paymentRequest: LnPaymentRequest! + walletId: WalletId! +} + +type LnNoAmountInvoicePayload { + errors: [Error!]! + invoice: LnNoAmountInvoice +} + +input LnNoAmountInvoicePaymentInput { + """Amount to pay in satoshis.""" + amount: SatAmount! + + """Optional memo to associate with the lightning invoice.""" + memo: Memo + + """Payment request representing the invoice which is being paid.""" + paymentRequest: LnPaymentRequest! + + """ + Wallet ID with sufficient balance to cover amount defined in mutation request. Must belong to the account of the current user. + """ + walletId: WalletId! +} + +input LnNoAmountUsdInvoiceFeeProbeInput { + amount: CentAmount! + paymentRequest: LnPaymentRequest! + walletId: WalletId! +} + +input LnNoAmountUsdInvoicePaymentInput { + """Amount to pay in USD cents.""" + amount: CentAmount! + + """Optional memo to associate with the lightning invoice.""" + memo: Memo + + """Payment request representing the invoice which is being paid.""" + paymentRequest: LnPaymentRequest! + + """ + Wallet ID with sufficient balance to cover amount defined in mutation request. Must belong to the account of the current user. + """ + walletId: WalletId! +} + +scalar LnPaymentPreImage + +"""BOLT11 lightning invoice payment request with the amount included""" +scalar LnPaymentRequest + +scalar LnPaymentSecret + +type LnUpdate { + paymentHash: PaymentHash! + status: InvoicePaymentStatus! + walletId: WalletId! +} + +input LnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientInput { + """Amount in satoshis.""" + amount: SatAmount! + descriptionHash: Hex32Bytes + + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """ + Optional memo for the lightning invoice. Acts as a note to the recipient. + """ + memo: Memo + + """Wallet ID for a USD wallet which belongs to the account of any user.""" + recipientWalletId: WalletId! +} + +input LnUsdInvoiceCreateInput { + """Amount in USD cents.""" + amount: CentAmount! + + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """Optional memo for the lightning invoice.""" + memo: Memo + + """Wallet ID for a USD wallet belonging to the current user.""" + walletId: WalletId! +} + +input LnUsdInvoiceCreateOnBehalfOfRecipientInput { + """Amount in USD cents.""" + amount: CentAmount! + descriptionHash: Hex32Bytes + + """Optional invoice expiration time in minutes.""" + expiresIn: Minutes + + """ + Optional memo for the lightning invoice. Acts as a note to the recipient. + """ + memo: Memo + + """Wallet ID for a USD wallet which belongs to the account of any user.""" + recipientWalletId: WalletId! +} + +input LnUsdInvoiceFeeProbeInput { + paymentRequest: LnPaymentRequest! + walletId: WalletId! +} + +type MapInfo { + coordinates: Coordinates! + title: String! +} + +type MapMarker { + mapInfo: MapInfo! + username: Username +} + +"""Text field in a lightning payment transaction""" +scalar Memo + +"""(Positive) amount of minutes""" +scalar Minutes + +type MobileVersions { + currentSupported: Int! + minSupported: Int! + platform: String! +} + +type Mutation { + accountDelete: AccountDeletePayload! + accountDisableNotificationCategory(input: AccountDisableNotificationCategoryInput!): AccountUpdateNotificationSettingsPayload! + accountDisableNotificationChannel(input: AccountDisableNotificationChannelInput!): AccountUpdateNotificationSettingsPayload! + accountEnableNotificationCategory(input: AccountEnableNotificationCategoryInput!): AccountUpdateNotificationSettingsPayload! + accountEnableNotificationChannel(input: AccountEnableNotificationChannelInput!): AccountUpdateNotificationSettingsPayload! + accountUpdateDefaultWalletId(input: AccountUpdateDefaultWalletIdInput!): AccountUpdateDefaultWalletIdPayload! + accountUpdateDisplayCurrency(input: AccountUpdateDisplayCurrencyInput!): AccountUpdateDisplayCurrencyPayload! + callbackEndpointAdd(input: CallbackEndpointAddInput!): CallbackEndpointAddPayload! + callbackEndpointDelete(input: CallbackEndpointDeleteInput!): SuccessPayload! + captchaCreateChallenge: CaptchaCreateChallengePayload! + captchaRequestAuthCode(input: CaptchaRequestAuthCodeInput!): SuccessPayload! + deviceNotificationTokenCreate(input: DeviceNotificationTokenCreateInput!): SuccessPayload! + feedbackSubmit(input: FeedbackSubmitInput!): SuccessPayload! + + """ + Actions a payment which is internal to the ledger e.g. it does + not use onchain/lightning. Returns payment status (success, + failed, pending, already_paid). + """ + intraLedgerPaymentSend(input: IntraLedgerPaymentSendInput!): PaymentSendPayload! + + """ + Actions a payment which is internal to the ledger e.g. it does + not use onchain/lightning. Returns payment status (success, + failed, pending, already_paid). + """ + intraLedgerUsdPaymentSend(input: IntraLedgerUsdPaymentSendInput!): PaymentSendPayload! + + """ + Returns a lightning invoice for an associated wallet. + When invoice is paid the value will be credited to a BTC wallet. + Expires after 'expiresIn' or 24 hours. + """ + lnInvoiceCreate(input: LnInvoiceCreateInput!): LnInvoicePayload! + + """ + Returns a lightning invoice for an associated wallet. + When invoice is paid the value will be credited to a BTC wallet. + Expires after 'expiresIn' or 24 hours. + """ + lnInvoiceCreateOnBehalfOfRecipient(input: LnInvoiceCreateOnBehalfOfRecipientInput!): LnInvoicePayload! + lnInvoiceFeeProbe(input: LnInvoiceFeeProbeInput!): SatAmountPayload! + + """ + Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. + Provided wallet can be USD or BTC and must have sufficient balance to cover amount in lightning invoice. + Returns payment status (success, failed, pending, already_paid). + """ + lnInvoicePaymentSend(input: LnInvoicePaymentInput!): PaymentSendPayload! + + """ + Returns a lightning invoice for an associated wallet. + Can be used to receive any supported currency value (currently USD or BTC). + Expires after 'expiresIn' or 24 hours for BTC invoices or 5 minutes for USD invoices. + """ + lnNoAmountInvoiceCreate(input: LnNoAmountInvoiceCreateInput!): LnNoAmountInvoicePayload! + + """ + Returns a lightning invoice for an associated wallet. + Can be used to receive any supported currency value (currently USD or BTC). + Expires after 'expiresIn' or 24 hours for BTC invoices or 5 minutes for USD invoices. + """ + lnNoAmountInvoiceCreateOnBehalfOfRecipient(input: LnNoAmountInvoiceCreateOnBehalfOfRecipientInput!): LnNoAmountInvoicePayload! + lnNoAmountInvoiceFeeProbe(input: LnNoAmountInvoiceFeeProbeInput!): SatAmountPayload! + + """ + Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. + Provided wallet must be BTC and must have sufficient balance to cover amount specified in mutation request. + Returns payment status (success, failed, pending, already_paid). + """ + lnNoAmountInvoicePaymentSend(input: LnNoAmountInvoicePaymentInput!): PaymentSendPayload! + lnNoAmountUsdInvoiceFeeProbe(input: LnNoAmountUsdInvoiceFeeProbeInput!): CentAmountPayload! + + """ + Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. + Provided wallet must be USD and have sufficient balance to cover amount specified in mutation request. + Returns payment status (success, failed, pending, already_paid). + """ + lnNoAmountUsdInvoicePaymentSend(input: LnNoAmountUsdInvoicePaymentInput!): PaymentSendPayload! + + """ + Returns a lightning invoice denominated in satoshis for an associated wallet. + When invoice is paid the equivalent value at invoice creation will be credited to a USD wallet. + Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate + associated with the amount). + """ + lnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipient(input: LnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientInput!): LnInvoicePayload! + + """ + Returns a lightning invoice denominated in satoshis for an associated wallet. + When invoice is paid the equivalent value at invoice creation will be credited to a USD wallet. + Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate + associated with the amount). + """ + lnUsdInvoiceCreate(input: LnUsdInvoiceCreateInput!): LnInvoicePayload! + + """ + Returns a lightning invoice denominated in satoshis for an associated wallet. + When invoice is paid the equivalent value at invoice creation will be credited to a USD wallet. + Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate + associated with the amount). + """ + lnUsdInvoiceCreateOnBehalfOfRecipient(input: LnUsdInvoiceCreateOnBehalfOfRecipientInput!): LnInvoicePayload! + lnUsdInvoiceFeeProbe(input: LnUsdInvoiceFeeProbeInput!): SatAmountPayload! + onChainAddressCreate(input: OnChainAddressCreateInput!): OnChainAddressPayload! + onChainAddressCurrent(input: OnChainAddressCurrentInput!): OnChainAddressPayload! + onChainPaymentSend(input: OnChainPaymentSendInput!): PaymentSendPayload! + onChainPaymentSendAll(input: OnChainPaymentSendAllInput!): PaymentSendPayload! + onChainUsdPaymentSend(input: OnChainUsdPaymentSendInput!): PaymentSendPayload! + onChainUsdPaymentSendAsBtcDenominated(input: OnChainUsdPaymentSendAsBtcDenominatedInput!): PaymentSendPayload! + quizCompleted(input: QuizCompletedInput!): QuizCompletedPayload! + userContactUpdateAlias(input: UserContactUpdateAliasInput!): UserContactUpdateAliasPayload! @deprecated(reason: "will be moved to AccountContact") + userEmailDelete: UserEmailDeletePayload! + userEmailRegistrationInitiate(input: UserEmailRegistrationInitiateInput!): UserEmailRegistrationInitiatePayload! + userEmailRegistrationValidate(input: UserEmailRegistrationValidateInput!): UserEmailRegistrationValidatePayload! + userLogin(input: UserLoginInput!): AuthTokenPayload! + userLoginUpgrade(input: UserLoginUpgradeInput!): UpgradePayload! + userLogout(input: UserLogoutInput): SuccessPayload! + userPhoneDelete: UserPhoneDeletePayload! + userPhoneRegistrationInitiate(input: UserPhoneRegistrationInitiateInput!): SuccessPayload! + userPhoneRegistrationValidate(input: UserPhoneRegistrationValidateInput!): UserPhoneRegistrationValidatePayload! + userTotpDelete(input: UserTotpDeleteInput!): UserTotpDeletePayload! + userTotpRegistrationInitiate(input: UserTotpRegistrationInitiateInput!): UserTotpRegistrationInitiatePayload! + userTotpRegistrationValidate(input: UserTotpRegistrationValidateInput!): UserTotpRegistrationValidatePayload! + userUpdateLanguage(input: UserUpdateLanguageInput!): UserUpdateLanguagePayload! + userUpdateUsername(input: UserUpdateUsernameInput!): UserUpdateUsernamePayload! @deprecated(reason: "Username will be moved to @Handle in Accounts. Also SetUsername naming should be used instead of UpdateUsername to reflect the idempotency of Handles") +} + +type MyUpdatesPayload { + errors: [Error!]! + me: User + update: UserUpdate +} + +enum Network { + mainnet + regtest + signet + testnet +} + +scalar NotificationCategory + +enum NotificationChannel { + PUSH +} + +type NotificationChannelSettings { + disabledCategories: [NotificationCategory!]! + enabled: Boolean! +} + +type NotificationSettings { + push: NotificationChannelSettings! +} + +"""An address for an on-chain bitcoin destination""" +scalar OnChainAddress + +input OnChainAddressCreateInput { + walletId: WalletId! +} + +input OnChainAddressCurrentInput { + walletId: WalletId! +} + +type OnChainAddressPayload { + address: OnChainAddress + errors: [Error!]! +} + +input OnChainPaymentSendAllInput { + address: OnChainAddress! + memo: Memo + speed: PayoutSpeed! = FAST + walletId: WalletId! +} + +input OnChainPaymentSendInput { + address: OnChainAddress! + amount: SatAmount! + memo: Memo + speed: PayoutSpeed! = FAST + walletId: WalletId! +} + +type OnChainTxFee { + amount: SatAmount! +} + +scalar OnChainTxHash + +type OnChainUpdate { + amount: SatAmount! + displayCurrencyPerSat: Float! + txHash: OnChainTxHash! + txNotificationType: TxNotificationType! + usdPerSat: Float! @deprecated(reason: "updated over displayCurrencyPerSat") + walletId: WalletId! +} + +input OnChainUsdPaymentSendAsBtcDenominatedInput { + address: OnChainAddress! + amount: SatAmount! + memo: Memo + speed: PayoutSpeed! = FAST + walletId: WalletId! +} + +input OnChainUsdPaymentSendInput { + address: OnChainAddress! + amount: CentAmount! + memo: Memo + speed: PayoutSpeed! = FAST + walletId: WalletId! +} + +type OnChainUsdTxFee { + amount: CentAmount! +} + +type OneDayAccountLimit implements AccountLimit { + """ + The rolling time interval value in seconds for the current 24 hour period. + """ + interval: Seconds + + """ + The amount of cents remaining below the limit for the current 24 hour period. + """ + remainingLimit: CentAmount + + """The current maximum limit for a given 24 hour period.""" + totalLimit: CentAmount! +} + +"""An authentication code valid for a single use""" +scalar OneTimeAuthCode + +"""Information about pagination in a connection.""" +type PageInfo { + """When paginating forwards, the cursor to continue.""" + endCursor: String + + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! + + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! + + """When paginating backwards, the cursor to continue.""" + startCursor: String +} + +scalar PaymentHash + +type PaymentSendPayload { + errors: [Error!]! + status: PaymentSendResult +} + +enum PaymentSendResult { + ALREADY_PAID + FAILURE + PENDING + SUCCESS +} + +enum PayoutSpeed { + FAST +} + +"""Phone number which includes country code""" +scalar Phone + +enum PhoneCodeChannelType { + SMS + WHATSAPP +} + +""" +Price amount expressed in base/offset. To calculate, use: `base / 10^offset` +""" +type Price { + base: SafeInt! + currencyUnit: String! + formattedAmount: String! + offset: Int! +} + +"""The range for the X axis in the BTC price graph""" +enum PriceGraphRange { + FIVE_YEARS + ONE_DAY + ONE_MONTH + ONE_WEEK + ONE_YEAR +} + +input PriceInput { + amount: SatAmount! + amountCurrencyUnit: ExchangeCurrencyUnit! + priceCurrencyUnit: ExchangeCurrencyUnit! +} + +interface PriceInterface { + base: SafeInt! + currencyUnit: String! @deprecated(reason: "Deprecated due to type renaming") + offset: Int! +} + +"""Price of 1 sat in base/offset. To calculate, use: `base / 10^offset`""" +type PriceOfOneSatInMinorUnit implements PriceInterface { + base: SafeInt! + currencyUnit: String! @deprecated(reason: "Deprecated due to type renaming") + offset: Int! +} + +""" +Price of 1 sat or 1 usd cent in base/offset. To calculate, use: `base / 10^offset` +""" +type PriceOfOneSettlementMinorUnitInDisplayMinorUnit implements PriceInterface { + base: SafeInt! + currencyUnit: String! @deprecated(reason: "Deprecated due to type renaming") + formattedAmount: String! @deprecated(reason: "Deprecated please use `base / 10^offset`") + offset: Int! +} + +""" +Price of 1 usd cent in base/offset. To calculate, use: `base / 10^offset` +""" +type PriceOfOneUsdCentInMinorUnit implements PriceInterface { + base: SafeInt! + currencyUnit: String! @deprecated(reason: "Deprecated due to type renaming") + offset: Int! +} + +type PricePayload { + errors: [Error!]! + price: Price +} + +type PricePoint { + price: Price! + + """ + Unix timestamp (number of seconds elapsed since January 1, 1970 00:00:00 UTC) + """ + timestamp: Timestamp! +} + +""" +A public view of a generic wallet which stores value in one of our supported currencies. +""" +type PublicWallet { + id: ID! + walletCurrency: WalletCurrency! +} + +type Query { + accountDefaultWallet(username: Username!, walletCurrency: WalletCurrency): PublicWallet! + btcPriceList(range: PriceGraphRange!): [PricePoint] + businessMapMarkers: [MapMarker] + currencyList: [Currency!]! + globals: Globals + lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload! + me: User + mobileVersions: [MobileVersions] + onChainTxFee(address: OnChainAddress!, amount: SatAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainTxFee! + onChainUsdTxFee(address: OnChainAddress!, amount: CentAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainUsdTxFee! + onChainUsdTxFeeAsBtcDenominated(address: OnChainAddress!, amount: SatAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainUsdTxFee! + quizQuestions: [QuizQuestion] @deprecated(reason: "TODO: remove. we don't need a non authenticated version of this query. the users can only do the query while authenticated") + + """Returns 1 Sat and 1 Usd Cent price for the given currency""" + realtimePrice(currency: DisplayCurrency = "USD"): RealtimePrice! + userDefaultWalletId(username: Username!): WalletId! @deprecated(reason: "will be migrated to AccountDefaultWalletId") + usernameAvailable(username: Username!): Boolean +} + +type Quiz { + """The reward in Satoshis for the quiz question""" + amount: SatAmount! + completed: Boolean! + id: ID! +} + +input QuizCompletedInput { + id: ID! +} + +type QuizCompletedPayload { + errors: [Error!]! + quiz: Quiz +} + +type QuizQuestion { + """The earn reward in Satoshis for the quiz question""" + earnAmount: SatAmount! + id: ID! +} + +type RealtimePrice { + btcSatPrice: PriceOfOneSatInMinorUnit! + denominatorCurrency: DisplayCurrency! + id: ID! + + """ + Unix timestamp (number of seconds elapsed since January 1, 1970 00:00:00 UTC) + """ + timestamp: Timestamp! + usdCentPrice: PriceOfOneUsdCentInMinorUnit! +} + +input RealtimePriceInput { + currency: DisplayCurrency = "USD" +} + +type RealtimePricePayload { + errors: [Error!]! + realtimePrice: RealtimePrice +} + +""" +Non-fractional signed whole numeric value between -(2^53) + 1 and 2^53 - 1 +""" +scalar SafeInt + +"""(Positive) Satoshi amount""" +scalar SatAmount + +type SatAmountPayload { + amount: SatAmount + errors: [Error!]! +} + +"""(Positive) amount of seconds""" +scalar Seconds + +union SettlementVia = SettlementViaIntraLedger | SettlementViaLn | SettlementViaOnChain + +type SettlementViaIntraLedger { + """ + Settlement destination: Could be null if the payee does not have a username + """ + counterPartyUsername: Username + counterPartyWalletId: WalletId +} + +type SettlementViaLn { + paymentSecret: LnPaymentSecret @deprecated(reason: "Shifting property to 'preImage' to improve granularity of the LnPaymentSecret type") + preImage: LnPaymentPreImage +} + +type SettlementViaOnChain { + transactionHash: OnChainTxHash + vout: Int +} + +"""An amount (of a currency) that can be negative (e.g. in a transaction)""" +scalar SignedAmount + +""" +A string amount (of a currency) that can be negative (e.g. in a transaction) +""" +scalar SignedDisplayMajorAmount + +type Subscription { + lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload! + myUpdates: MyUpdatesPayload! + price(input: PriceInput!): PricePayload! + + """Returns the price of 1 satoshi""" + realtimePrice(input: RealtimePriceInput!): RealtimePricePayload! +} + +type SuccessPayload { + errors: [Error!]! + success: Boolean +} + +""" +Timestamp field, serialized as Unix time (the number of seconds since the Unix epoch) +""" +scalar Timestamp + +"""A time-based one-time password""" +scalar TotpCode + +"""An id to be passed between set and verify for confirming totp""" +scalar TotpRegistrationId + +"""A secret to generate time-based one-time password""" +scalar TotpSecret + +""" +Give details about an individual transaction. +Galoy have a smart routing system which is automatically +settling intraledger when both the payer and payee use the same wallet +therefore it's possible the transactions is being initiated onchain +or with lightning but settled intraledger. +""" +type Transaction { + createdAt: Timestamp! + direction: TxDirection! + id: ID! + + """From which protocol the payment has been initiated.""" + initiationVia: InitiationVia! + memo: Memo + + """Amount of the settlement currency sent or received.""" + settlementAmount: SignedAmount! + + """Wallet currency for transaction.""" + settlementCurrency: WalletCurrency! + settlementDisplayAmount: SignedDisplayMajorAmount! + settlementDisplayCurrency: DisplayCurrency! + settlementDisplayFee: SignedDisplayMajorAmount! + settlementFee: SignedAmount! + + """Price in WALLETCURRENCY/SETTLEMENTUNIT at time of settlement.""" + settlementPrice: PriceOfOneSettlementMinorUnitInDisplayMinorUnit! + + """To which protocol the payment has settled on.""" + settlementVia: SettlementVia! + status: TxStatus! +} + +"""A connection to a list of items.""" +type TransactionConnection { + """A list of edges.""" + edges: [TransactionEdge!] + + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type TransactionEdge { + """A cursor for use in pagination""" + cursor: String! + + """The item at the end of the edge""" + node: Transaction! +} + +enum TxDirection { + RECEIVE + SEND +} + +enum TxNotificationType { + IntraLedgerPayment + IntraLedgerReceipt + LnInvoicePaid + OnchainPayment + OnchainReceipt + OnchainReceiptPending +} + +enum TxStatus { + FAILURE + PENDING + SUCCESS +} + +type UpgradePayload { + authToken: AuthToken + errors: [Error!]! + success: Boolean! +} + +""" +A wallet belonging to an account which contains a USD balance and a list of transactions. +""" +type UsdWallet implements Wallet { + accountId: ID! + balance: SignedAmount! + id: ID! + invoiceByPaymentHash(paymentHash: PaymentHash!): Invoice! + + """An unconfirmed incoming onchain balance.""" + pendingIncomingBalance: SignedAmount! + transactionById(transactionId: ID!): Transaction! + transactions( + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + transactionsByAddress( + """Returns the items that include this address.""" + address: OnChainAddress! + + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + transactionsByPaymentHash(paymentHash: PaymentHash!): [Transaction!]! + walletCurrency: WalletCurrency! +} + +type User { + """ + Get single contact details. + Can include the transactions associated with the contact. + """ + contactByUsername(username: Username!): UserContact! @deprecated(reason: "will be moved to Accounts") + + """ + Get full list of contacts. + Can include the transactions associated with each contact. + """ + contacts: [UserContact!]! @deprecated(reason: "will be moved to account") + createdAt: Timestamp! + defaultAccount: Account! + + """Email address""" + email: Email + id: ID! + + """ + Preferred language for user. + When value is 'default' the intent is to use preferred language from OS settings. + """ + language: Language! + + """Phone number with international calling code.""" + phone: Phone + + """List the quiz questions the user may have completed.""" + quizQuestions: [UserQuizQuestion!]! @deprecated(reason: "use Quiz from Account instead") + + """Whether TOTP is enabled for this user.""" + totpEnabled: Boolean! + + """Optional immutable user friendly identifier.""" + username: Username @deprecated(reason: "will be moved to @Handle in Account and Wallet") +} + +type UserContact { + """ + Alias the user can set for this contact. + Only the user can see the alias attached to their contact. + """ + alias: ContactAlias + id: Username! + + """Paginated list of transactions sent to/from this contact.""" + transactions( + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + transactionsCount: Int! + + """Actual identifier of the contact.""" + username: Username! +} + +input UserContactUpdateAliasInput { + alias: ContactAlias! + username: Username! +} + +type UserContactUpdateAliasPayload { + contact: UserContact + errors: [Error!]! +} + +type UserEmailDeletePayload { + errors: [Error!]! + me: User +} + +input UserEmailRegistrationInitiateInput { + email: EmailAddress! +} + +type UserEmailRegistrationInitiatePayload { + emailRegistrationId: EmailRegistrationId + errors: [Error!]! + me: User +} + +input UserEmailRegistrationValidateInput { + code: OneTimeAuthCode! + emailRegistrationId: EmailRegistrationId! +} + +type UserEmailRegistrationValidatePayload { + errors: [Error!]! + me: User +} + +input UserLoginInput { + code: OneTimeAuthCode! + phone: Phone! +} + +input UserLoginUpgradeInput { + code: OneTimeAuthCode! + phone: Phone! +} + +input UserLogoutInput { + deviceToken: String! +} + +type UserPhoneDeletePayload { + errors: [Error!]! + me: User +} + +input UserPhoneRegistrationInitiateInput { + channel: PhoneCodeChannelType + phone: Phone! +} + +input UserPhoneRegistrationValidateInput { + code: OneTimeAuthCode! + phone: Phone! +} + +type UserPhoneRegistrationValidatePayload { + errors: [Error!]! + me: User +} + +type UserQuizQuestion { + completed: Boolean! + question: QuizQuestion! +} + +input UserTotpDeleteInput { + authToken: AuthToken! +} + +type UserTotpDeletePayload { + errors: [Error!]! + me: User +} + +input UserTotpRegistrationInitiateInput { + authToken: AuthToken! +} + +type UserTotpRegistrationInitiatePayload { + errors: [Error!]! + totpRegistrationId: TotpRegistrationId + totpSecret: TotpSecret +} + +input UserTotpRegistrationValidateInput { + authToken: AuthToken! + totpCode: TotpCode! + totpRegistrationId: TotpRegistrationId! +} + +type UserTotpRegistrationValidatePayload { + errors: [Error!]! + me: User +} + +union UserUpdate = IntraLedgerUpdate | LnUpdate | OnChainUpdate | Price | RealtimePrice + +input UserUpdateLanguageInput { + language: Language! +} + +type UserUpdateLanguagePayload { + errors: [Error!]! + user: User +} + +input UserUpdateUsernameInput { + username: Username! +} + +type UserUpdateUsernamePayload { + errors: [Error!]! + user: User +} + +"""Unique identifier of a user""" +scalar Username + +""" +A generic wallet which stores value in one of our supported currencies. +""" +interface Wallet { + accountId: ID! + balance: SignedAmount! + id: ID! + invoiceByPaymentHash( + """ + The lightning invoice with the matching paymentHash belonging to this wallet. + """ + paymentHash: PaymentHash! + ): Invoice! + pendingIncomingBalance: SignedAmount! + transactionById(transactionId: ID!): Transaction! + + """ + Transactions are ordered anti-chronologically, + ie: the newest transaction will be first + """ + transactions( + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + + """ + Transactions are ordered anti-chronologically, + ie: the newest transaction will be first + """ + transactionsByAddress( + """Returns the items that include this address.""" + address: OnChainAddress! + + """Returns the items in the list that come after the specified cursor.""" + after: String + + """Returns the items in the list that come before the specified cursor.""" + before: String + + """Returns the first n items from the list.""" + first: Int + + """Returns the last n items from the list.""" + last: Int + ): TransactionConnection + + """ + Returns the transactions that include this paymentHash. This should be a list of size one for a received lightning payment. This can be more that one transaction for a sent lightning payment. + """ + transactionsByPaymentHash( + """The payment hash of the lightning invoice paid in this transaction.""" + paymentHash: PaymentHash! + ): [Transaction!]! + walletCurrency: WalletCurrency! +} + +enum WalletCurrency { + BTC + USD +} + +"""Unique identifier of a wallet""" +scalar WalletId \ No newline at end of file diff --git a/charts/galoy/apollo-router/supergraph.graphql b/charts/galoy/apollo-router/supergraph.graphql index 5f86e3729a..7ce9b05cdf 100644 --- a/charts/galoy/apollo-router/supergraph.graphql +++ b/charts/galoy/apollo-router/supergraph.graphql @@ -580,6 +580,7 @@ enum InvoicePaymentStatus scalar join__FieldSet enum join__Graph { + API_KEYS @join__graph(name: "api_keys", url: "http://bats-tests:5397/graphql") PUBLIC @join__graph(name: "public", url: "http://bats-tests:4012/graphql") } @@ -895,87 +896,89 @@ type MobileVersions } type Mutation + @join__type(graph: API_KEYS) @join__type(graph: PUBLIC) { - accountDelete: AccountDeletePayload! - accountDisableNotificationCategory(input: AccountDisableNotificationCategoryInput!): AccountUpdateNotificationSettingsPayload! - accountDisableNotificationChannel(input: AccountDisableNotificationChannelInput!): AccountUpdateNotificationSettingsPayload! - accountEnableNotificationCategory(input: AccountEnableNotificationCategoryInput!): AccountUpdateNotificationSettingsPayload! - accountEnableNotificationChannel(input: AccountEnableNotificationChannelInput!): AccountUpdateNotificationSettingsPayload! - accountUpdateDefaultWalletId(input: AccountUpdateDefaultWalletIdInput!): AccountUpdateDefaultWalletIdPayload! - accountUpdateDisplayCurrency(input: AccountUpdateDisplayCurrencyInput!): AccountUpdateDisplayCurrencyPayload! - callbackEndpointAdd(input: CallbackEndpointAddInput!): CallbackEndpointAddPayload! - callbackEndpointDelete(input: CallbackEndpointDeleteInput!): SuccessPayload! - captchaCreateChallenge: CaptchaCreateChallengePayload! - captchaRequestAuthCode(input: CaptchaRequestAuthCodeInput!): SuccessPayload! - deviceNotificationTokenCreate(input: DeviceNotificationTokenCreateInput!): SuccessPayload! - feedbackSubmit(input: FeedbackSubmitInput!): SuccessPayload! + helloWorldMutation: String! @join__field(graph: API_KEYS) + accountDelete: AccountDeletePayload! @join__field(graph: PUBLIC) + accountDisableNotificationCategory(input: AccountDisableNotificationCategoryInput!): AccountUpdateNotificationSettingsPayload! @join__field(graph: PUBLIC) + accountDisableNotificationChannel(input: AccountDisableNotificationChannelInput!): AccountUpdateNotificationSettingsPayload! @join__field(graph: PUBLIC) + accountEnableNotificationCategory(input: AccountEnableNotificationCategoryInput!): AccountUpdateNotificationSettingsPayload! @join__field(graph: PUBLIC) + accountEnableNotificationChannel(input: AccountEnableNotificationChannelInput!): AccountUpdateNotificationSettingsPayload! @join__field(graph: PUBLIC) + accountUpdateDefaultWalletId(input: AccountUpdateDefaultWalletIdInput!): AccountUpdateDefaultWalletIdPayload! @join__field(graph: PUBLIC) + accountUpdateDisplayCurrency(input: AccountUpdateDisplayCurrencyInput!): AccountUpdateDisplayCurrencyPayload! @join__field(graph: PUBLIC) + callbackEndpointAdd(input: CallbackEndpointAddInput!): CallbackEndpointAddPayload! @join__field(graph: PUBLIC) + callbackEndpointDelete(input: CallbackEndpointDeleteInput!): SuccessPayload! @join__field(graph: PUBLIC) + captchaCreateChallenge: CaptchaCreateChallengePayload! @join__field(graph: PUBLIC) + captchaRequestAuthCode(input: CaptchaRequestAuthCodeInput!): SuccessPayload! @join__field(graph: PUBLIC) + deviceNotificationTokenCreate(input: DeviceNotificationTokenCreateInput!): SuccessPayload! @join__field(graph: PUBLIC) + feedbackSubmit(input: FeedbackSubmitInput!): SuccessPayload! @join__field(graph: PUBLIC) """ Actions a payment which is internal to the ledger e.g. it does not use onchain/lightning. Returns payment status (success, failed, pending, already_paid). """ - intraLedgerPaymentSend(input: IntraLedgerPaymentSendInput!): PaymentSendPayload! + intraLedgerPaymentSend(input: IntraLedgerPaymentSendInput!): PaymentSendPayload! @join__field(graph: PUBLIC) """ Actions a payment which is internal to the ledger e.g. it does not use onchain/lightning. Returns payment status (success, failed, pending, already_paid). """ - intraLedgerUsdPaymentSend(input: IntraLedgerUsdPaymentSendInput!): PaymentSendPayload! + intraLedgerUsdPaymentSend(input: IntraLedgerUsdPaymentSendInput!): PaymentSendPayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice for an associated wallet. When invoice is paid the value will be credited to a BTC wallet. Expires after 'expiresIn' or 24 hours. """ - lnInvoiceCreate(input: LnInvoiceCreateInput!): LnInvoicePayload! + lnInvoiceCreate(input: LnInvoiceCreateInput!): LnInvoicePayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice for an associated wallet. When invoice is paid the value will be credited to a BTC wallet. Expires after 'expiresIn' or 24 hours. """ - lnInvoiceCreateOnBehalfOfRecipient(input: LnInvoiceCreateOnBehalfOfRecipientInput!): LnInvoicePayload! - lnInvoiceFeeProbe(input: LnInvoiceFeeProbeInput!): SatAmountPayload! + lnInvoiceCreateOnBehalfOfRecipient(input: LnInvoiceCreateOnBehalfOfRecipientInput!): LnInvoicePayload! @join__field(graph: PUBLIC) + lnInvoiceFeeProbe(input: LnInvoiceFeeProbeInput!): SatAmountPayload! @join__field(graph: PUBLIC) """ Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. Provided wallet can be USD or BTC and must have sufficient balance to cover amount in lightning invoice. Returns payment status (success, failed, pending, already_paid). """ - lnInvoicePaymentSend(input: LnInvoicePaymentInput!): PaymentSendPayload! + lnInvoicePaymentSend(input: LnInvoicePaymentInput!): PaymentSendPayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice for an associated wallet. Can be used to receive any supported currency value (currently USD or BTC). Expires after 'expiresIn' or 24 hours for BTC invoices or 5 minutes for USD invoices. """ - lnNoAmountInvoiceCreate(input: LnNoAmountInvoiceCreateInput!): LnNoAmountInvoicePayload! + lnNoAmountInvoiceCreate(input: LnNoAmountInvoiceCreateInput!): LnNoAmountInvoicePayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice for an associated wallet. Can be used to receive any supported currency value (currently USD or BTC). Expires after 'expiresIn' or 24 hours for BTC invoices or 5 minutes for USD invoices. """ - lnNoAmountInvoiceCreateOnBehalfOfRecipient(input: LnNoAmountInvoiceCreateOnBehalfOfRecipientInput!): LnNoAmountInvoicePayload! - lnNoAmountInvoiceFeeProbe(input: LnNoAmountInvoiceFeeProbeInput!): SatAmountPayload! + lnNoAmountInvoiceCreateOnBehalfOfRecipient(input: LnNoAmountInvoiceCreateOnBehalfOfRecipientInput!): LnNoAmountInvoicePayload! @join__field(graph: PUBLIC) + lnNoAmountInvoiceFeeProbe(input: LnNoAmountInvoiceFeeProbeInput!): SatAmountPayload! @join__field(graph: PUBLIC) """ Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. Provided wallet must be BTC and must have sufficient balance to cover amount specified in mutation request. Returns payment status (success, failed, pending, already_paid). """ - lnNoAmountInvoicePaymentSend(input: LnNoAmountInvoicePaymentInput!): PaymentSendPayload! - lnNoAmountUsdInvoiceFeeProbe(input: LnNoAmountUsdInvoiceFeeProbeInput!): CentAmountPayload! + lnNoAmountInvoicePaymentSend(input: LnNoAmountInvoicePaymentInput!): PaymentSendPayload! @join__field(graph: PUBLIC) + lnNoAmountUsdInvoiceFeeProbe(input: LnNoAmountUsdInvoiceFeeProbeInput!): CentAmountPayload! @join__field(graph: PUBLIC) """ Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. Provided wallet must be USD and have sufficient balance to cover amount specified in mutation request. Returns payment status (success, failed, pending, already_paid). """ - lnNoAmountUsdInvoicePaymentSend(input: LnNoAmountUsdInvoicePaymentInput!): PaymentSendPayload! + lnNoAmountUsdInvoicePaymentSend(input: LnNoAmountUsdInvoicePaymentInput!): PaymentSendPayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice denominated in satoshis for an associated wallet. @@ -983,7 +986,7 @@ type Mutation Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate associated with the amount). """ - lnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipient(input: LnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientInput!): LnInvoicePayload! + lnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipient(input: LnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientInput!): LnInvoicePayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice denominated in satoshis for an associated wallet. @@ -991,7 +994,7 @@ type Mutation Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate associated with the amount). """ - lnUsdInvoiceCreate(input: LnUsdInvoiceCreateInput!): LnInvoicePayload! + lnUsdInvoiceCreate(input: LnUsdInvoiceCreateInput!): LnInvoicePayload! @join__field(graph: PUBLIC) """ Returns a lightning invoice denominated in satoshis for an associated wallet. @@ -999,30 +1002,30 @@ type Mutation Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate associated with the amount). """ - lnUsdInvoiceCreateOnBehalfOfRecipient(input: LnUsdInvoiceCreateOnBehalfOfRecipientInput!): LnInvoicePayload! - lnUsdInvoiceFeeProbe(input: LnUsdInvoiceFeeProbeInput!): SatAmountPayload! - onChainAddressCreate(input: OnChainAddressCreateInput!): OnChainAddressPayload! - onChainAddressCurrent(input: OnChainAddressCurrentInput!): OnChainAddressPayload! - onChainPaymentSend(input: OnChainPaymentSendInput!): PaymentSendPayload! - onChainPaymentSendAll(input: OnChainPaymentSendAllInput!): PaymentSendPayload! - onChainUsdPaymentSend(input: OnChainUsdPaymentSendInput!): PaymentSendPayload! - onChainUsdPaymentSendAsBtcDenominated(input: OnChainUsdPaymentSendAsBtcDenominatedInput!): PaymentSendPayload! - quizCompleted(input: QuizCompletedInput!): QuizCompletedPayload! - userContactUpdateAlias(input: UserContactUpdateAliasInput!): UserContactUpdateAliasPayload! @deprecated(reason: "will be moved to AccountContact") - userEmailDelete: UserEmailDeletePayload! - userEmailRegistrationInitiate(input: UserEmailRegistrationInitiateInput!): UserEmailRegistrationInitiatePayload! - userEmailRegistrationValidate(input: UserEmailRegistrationValidateInput!): UserEmailRegistrationValidatePayload! - userLogin(input: UserLoginInput!): AuthTokenPayload! - userLoginUpgrade(input: UserLoginUpgradeInput!): UpgradePayload! - userLogout(input: UserLogoutInput): SuccessPayload! - userPhoneDelete: UserPhoneDeletePayload! - userPhoneRegistrationInitiate(input: UserPhoneRegistrationInitiateInput!): SuccessPayload! - userPhoneRegistrationValidate(input: UserPhoneRegistrationValidateInput!): UserPhoneRegistrationValidatePayload! - userTotpDelete(input: UserTotpDeleteInput!): UserTotpDeletePayload! - userTotpRegistrationInitiate(input: UserTotpRegistrationInitiateInput!): UserTotpRegistrationInitiatePayload! - userTotpRegistrationValidate(input: UserTotpRegistrationValidateInput!): UserTotpRegistrationValidatePayload! - userUpdateLanguage(input: UserUpdateLanguageInput!): UserUpdateLanguagePayload! - userUpdateUsername(input: UserUpdateUsernameInput!): UserUpdateUsernamePayload! @deprecated(reason: "Username will be moved to @Handle in Accounts. Also SetUsername naming should be used instead of UpdateUsername to reflect the idempotency of Handles") + lnUsdInvoiceCreateOnBehalfOfRecipient(input: LnUsdInvoiceCreateOnBehalfOfRecipientInput!): LnInvoicePayload! @join__field(graph: PUBLIC) + lnUsdInvoiceFeeProbe(input: LnUsdInvoiceFeeProbeInput!): SatAmountPayload! @join__field(graph: PUBLIC) + onChainAddressCreate(input: OnChainAddressCreateInput!): OnChainAddressPayload! @join__field(graph: PUBLIC) + onChainAddressCurrent(input: OnChainAddressCurrentInput!): OnChainAddressPayload! @join__field(graph: PUBLIC) + onChainPaymentSend(input: OnChainPaymentSendInput!): PaymentSendPayload! @join__field(graph: PUBLIC) + onChainPaymentSendAll(input: OnChainPaymentSendAllInput!): PaymentSendPayload! @join__field(graph: PUBLIC) + onChainUsdPaymentSend(input: OnChainUsdPaymentSendInput!): PaymentSendPayload! @join__field(graph: PUBLIC) + onChainUsdPaymentSendAsBtcDenominated(input: OnChainUsdPaymentSendAsBtcDenominatedInput!): PaymentSendPayload! @join__field(graph: PUBLIC) + quizCompleted(input: QuizCompletedInput!): QuizCompletedPayload! @join__field(graph: PUBLIC) + userContactUpdateAlias(input: UserContactUpdateAliasInput!): UserContactUpdateAliasPayload! @join__field(graph: PUBLIC) @deprecated(reason: "will be moved to AccountContact") + userEmailDelete: UserEmailDeletePayload! @join__field(graph: PUBLIC) + userEmailRegistrationInitiate(input: UserEmailRegistrationInitiateInput!): UserEmailRegistrationInitiatePayload! @join__field(graph: PUBLIC) + userEmailRegistrationValidate(input: UserEmailRegistrationValidateInput!): UserEmailRegistrationValidatePayload! @join__field(graph: PUBLIC) + userLogin(input: UserLoginInput!): AuthTokenPayload! @join__field(graph: PUBLIC) + userLoginUpgrade(input: UserLoginUpgradeInput!): UpgradePayload! @join__field(graph: PUBLIC) + userLogout(input: UserLogoutInput): SuccessPayload! @join__field(graph: PUBLIC) + userPhoneDelete: UserPhoneDeletePayload! @join__field(graph: PUBLIC) + userPhoneRegistrationInitiate(input: UserPhoneRegistrationInitiateInput!): SuccessPayload! @join__field(graph: PUBLIC) + userPhoneRegistrationValidate(input: UserPhoneRegistrationValidateInput!): UserPhoneRegistrationValidatePayload! @join__field(graph: PUBLIC) + userTotpDelete(input: UserTotpDeleteInput!): UserTotpDeletePayload! @join__field(graph: PUBLIC) + userTotpRegistrationInitiate(input: UserTotpRegistrationInitiateInput!): UserTotpRegistrationInitiatePayload! @join__field(graph: PUBLIC) + userTotpRegistrationValidate(input: UserTotpRegistrationValidateInput!): UserTotpRegistrationValidatePayload! @join__field(graph: PUBLIC) + userUpdateLanguage(input: UserUpdateLanguageInput!): UserUpdateLanguagePayload! @join__field(graph: PUBLIC) + userUpdateUsername(input: UserUpdateUsernameInput!): UserUpdateUsernamePayload! @join__field(graph: PUBLIC) @deprecated(reason: "Username will be moved to @Handle in Accounts. Also SetUsername naming should be used instead of UpdateUsername to reflect the idempotency of Handles") } type MyUpdatesPayload @@ -1330,25 +1333,27 @@ type PublicWallet } type Query - @join__type(graph: PUBLIC) -{ - accountDefaultWallet(username: Username!, walletCurrency: WalletCurrency): PublicWallet! - btcPriceList(range: PriceGraphRange!): [PricePoint] - businessMapMarkers: [MapMarker] - currencyList: [Currency!]! - globals: Globals - lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload! - me: User - mobileVersions: [MobileVersions] - onChainTxFee(address: OnChainAddress!, amount: SatAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainTxFee! - onChainUsdTxFee(address: OnChainAddress!, amount: CentAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainUsdTxFee! - onChainUsdTxFeeAsBtcDenominated(address: OnChainAddress!, amount: SatAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainUsdTxFee! - quizQuestions: [QuizQuestion] @deprecated(reason: "TODO: remove. we don't need a non authenticated version of this query. the users can only do the query while authenticated") + @join__type(graph: API_KEYS) + @join__type(graph: PUBLIC) +{ + helloWorld: String! @join__field(graph: API_KEYS) + accountDefaultWallet(username: Username!, walletCurrency: WalletCurrency): PublicWallet! @join__field(graph: PUBLIC) + btcPriceList(range: PriceGraphRange!): [PricePoint] @join__field(graph: PUBLIC) + businessMapMarkers: [MapMarker] @join__field(graph: PUBLIC) + currencyList: [Currency!]! @join__field(graph: PUBLIC) + globals: Globals @join__field(graph: PUBLIC) + lnInvoicePaymentStatus(input: LnInvoicePaymentStatusInput!): LnInvoicePaymentStatusPayload! @join__field(graph: PUBLIC) + me: User @join__field(graph: PUBLIC) + mobileVersions: [MobileVersions] @join__field(graph: PUBLIC) + onChainTxFee(address: OnChainAddress!, amount: SatAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainTxFee! @join__field(graph: PUBLIC) + onChainUsdTxFee(address: OnChainAddress!, amount: CentAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainUsdTxFee! @join__field(graph: PUBLIC) + onChainUsdTxFeeAsBtcDenominated(address: OnChainAddress!, amount: SatAmount!, speed: PayoutSpeed! = FAST, walletId: WalletId!): OnChainUsdTxFee! @join__field(graph: PUBLIC) + quizQuestions: [QuizQuestion] @join__field(graph: PUBLIC) @deprecated(reason: "TODO: remove. we don't need a non authenticated version of this query. the users can only do the query while authenticated") """Returns 1 Sat and 1 Usd Cent price for the given currency""" - realtimePrice(currency: DisplayCurrency = "USD"): RealtimePrice! - userDefaultWalletId(username: Username!): WalletId! @deprecated(reason: "will be migrated to AccountDefaultWalletId") - usernameAvailable(username: Username!): Boolean + realtimePrice(currency: DisplayCurrency = "USD"): RealtimePrice! @join__field(graph: PUBLIC) + userDefaultWalletId(username: Username!): WalletId! @join__field(graph: PUBLIC) @deprecated(reason: "will be migrated to AccountDefaultWalletId") + usernameAvailable(username: Username!): Boolean @join__field(graph: PUBLIC) } type Quiz diff --git a/charts/galoy/values.yaml b/charts/galoy/values.yaml index 18fb2ac250..9036b17c1d 100644 --- a/charts/galoy/values.yaml +++ b/charts/galoy/values.yaml @@ -36,31 +36,31 @@ galoy: repository: us.gcr.io/galoy-org/galoy-api ## Digest of the image ## - digest: "sha256:8aa497c06c12323be65c5f6e2c0289c5ecf30849c173c9c34105c8a45d02056a" + digest: "sha256:1d5533a53ea65c9f5fd149438e809dcdd69147a35b3f8a4a4e60286b6665412f" ## Not used by Helm, just used to ref to the source https://github.com/GaloyMoney/galoy.git ## Reference for timestamping the corresponding docker image and used by internal CI. ## - git_ref: "d31ea78" + git_ref: "5e5950c" websocket: repository: us.gcr.io/galoy-org/galoy-api-ws-server ## Digest of the image ## - digest: "sha256:c8a4b927e50f9a6b87bb62ea81973434f4524f15d0c5db12c486d59cb4a34c4f" + digest: "sha256:48e8138ee4f31ef534f12a2a5554a96b619612125695030ef0c9ab093179f989" trigger: repository: us.gcr.io/galoy-org/galoy-api-trigger ## Digest of the image ## - digest: "sha256:bf9a45b56edbd63a9f0f4c3d1c2f9829f09c7b1a977e2ebc19a3198f7527fda8" + digest: "sha256:4b132586c0708ece686fc06a2168c82cec577b4262453cf27292b4f8f5b41859" cron: repository: us.gcr.io/galoy-org/galoy-api-cron ## Digest of the image ## - digest: "sha256:b98b2b59d154829bcc04a9a65765cc660897c2eb568d1098b80a2fe24234cbca" + digest: "sha256:e2690c5a4fd6a88b8b74553d01d786a52f127050fa748b9ee3ffa72e8fd3db1f" exporter: repository: us.gcr.io/galoy-org/galoy-api-exporter ## Digest of the image ## - digest: "sha256:f5dd76f49a370c6e41e505417fec6123258162756c20b69e442a3f9c431db696" + digest: "sha256:09f413858d6ada676c2b4f8638dea1cdf5952e387d432759385f9bc31dfa4a34" consent: repository: us.gcr.io/galoy-org/galoy-consent ## Digest of the image @@ -74,7 +74,7 @@ galoy: repository: us.gcr.io/galoy-org/galoy-app-migrate ## Digest of the image ## - digest: "sha256:8180b429977e44b5555daccd99d4e331a8d348134b448003a59cf98407601bf5" + digest: "sha256:9d7495e67ce177562ce776a8346627e68db64b90c77bd3096d972b3fe92cd47c" ## Galoy Application MongoDB Backup Image details ## mongoBackup: