# Stellar wallet-backend GraphQL schema, merged from stellar/wallet-backend/internal/serve/graphql/schema at 9594eaa (Apache-2.0). # Generated by scripts/update-wallet-backend-schema.py. Do not edit by hand. # ---- account.graphqls ---- """A Stellar account or contract address whose activity is indexed.""" type Account { """The account's public key (G...) or contract address (C...).""" address: String! """ All token balances held by this account: native XLM, classic trustlines, SAC, SEP-41, and liquidity-pool shares. Edges come in a fixed order by token type: native, trustlines, SEP-41, then liquidity pools for a G-address; SAC, then SEP-41 for a C-address. """ balances( """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): BalanceConnection! """ Transactions this account participated in, oldest first. Set since/until to bound the ledger close time; bounded queries on long histories run faster. """ transactions( """Only include items whose ledger close time is at or after this time.""" since: Time """Only include items whose ledger close time is at or before this time. Must not be earlier than `since`.""" until: Time """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): AccountTransactionConnection! """ Operations this account participated in, oldest first. Set since/until to bound the ledger close time; bounded queries on long histories run faster. """ operations( """Only include items whose ledger close time is at or after this time.""" since: Time """Only include items whose ledger close time is at or before this time. Must not be earlier than `since`.""" until: Time """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): OperationConnection! """ State changes affecting this account, oldest first, optionally filtered. Set since/until to bound the ledger close time; bounded queries on long histories run faster. """ stateChanges( """Conditions the state changes must match; all are ANDed. Omit for no filtering.""" filter: AccountStateChangeFilterInput """Only include items whose ledger close time is at or after this time.""" since: Time """Only include items whose ledger close time is at or before this time. Must not be earlier than `since`.""" until: Time """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): StateChangeConnection! """ Active SEP-41 allowances granted by this account (as token holder), ordered by spender. Allowances whose expiration ledger is below the latest ingested ledger are filtered out server-side. """ sep41Allowances( """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): SEP41AllowanceConnection! } # ---- balances.graphqls ---- """Common contract for every token balance held by an account.""" interface Balance { """Balance amount as a decimal string. Native XLM, trustline, SAC, and liquidity-pool balances have 7 decimal places (for example "100.0000000"). SEP-41 balances are integers in the token's smallest unit; divide by 10^decimals.""" balance: String! """Token identifier: the token's contract ID (C...), which for native XLM and classic assets is the Stellar Asset Contract ID, or the hex-encoded pool ID for liquidity-pool shares.""" tokenId: String! """Classification of the token.""" tokenType: TokenType! } """The account's native XLM balance.""" type NativeBalance implements Balance { """Balance amount as a decimal string. Native XLM, trustline, SAC, and liquidity-pool balances have 7 decimal places (for example "100.0000000"). SEP-41 balances are integers in the token's smallest unit; divide by 10^decimals.""" balance: String! """Token identifier: the token's contract ID (C...), which for native XLM and classic assets is the Stellar Asset Contract ID, or the hex-encoded pool ID for liquidity-pool shares.""" tokenId: String! """Classification of the token.""" tokenType: TokenType! """ Minimum XLM balance the account must hold, with 7 decimal places. It is the base reserve requirement and excludes liabilities: (2 + numSubentries + numSponsoring - numSponsored) * baseReserve. Spendable balance = balance - minimumBalance - sellingLiabilities. """ minimumBalance: String! """XLM locked in open buy offers, with 7 decimal places.""" buyingLiabilities: String! """XLM locked in open sell offers, with 7 decimal places.""" sellingLiabilities: String! """Number of subentries on the account (trustlines, offers, data entries, signers).""" numSubentries: UInt32! """Ledger in which this balance entry was last modified.""" lastModifiedLedger: UInt32! } """A classic Stellar asset held via a trustline.""" type TrustlineBalance implements Balance { """Balance amount as a decimal string. Native XLM, trustline, SAC, and liquidity-pool balances have 7 decimal places (for example "100.0000000"). SEP-41 balances are integers in the token's smallest unit; divide by 10^decimals.""" balance: String! """Token identifier: the token's contract ID (C...), which for native XLM and classic assets is the Stellar Asset Contract ID, or the hex-encoded pool ID for liquidity-pool shares.""" tokenId: String! """Classification of the token.""" tokenType: TokenType! """Asset code (1-12 characters).""" code: String! """Issuer account address (G...).""" issuer: String! """Classic asset type, determined by the asset code length.""" assetType: AssetType! """Trustline limit, with 7 decimal places.""" limit: String! """Amount locked in open buy offers, with 7 decimal places.""" buyingLiabilities: String! """Amount locked in open sell offers, with 7 decimal places.""" sellingLiabilities: String! """Ledger in which this trustline was last modified.""" lastModifiedLedger: UInt32! """Whether the holder is fully authorized to transact the asset.""" isAuthorized: Boolean! """Whether the holder may maintain existing liabilities on the asset.""" isAuthorizedToMaintainLiabilities: Boolean! } """A Stellar Asset Contract balance held by a contract address.""" type SACBalance implements Balance { """Balance amount as a decimal string. Native XLM, trustline, SAC, and liquidity-pool balances have 7 decimal places (for example "100.0000000"). SEP-41 balances are integers in the token's smallest unit; divide by 10^decimals.""" balance: String! """Token identifier: the token's contract ID (C...), which for native XLM and classic assets is the Stellar Asset Contract ID, or the hex-encoded pool ID for liquidity-pool shares.""" tokenId: String! """Classification of the token.""" tokenType: TokenType! """Asset code of the wrapped classic asset.""" code: String! """Issuer account address (G...) of the wrapped classic asset.""" issuer: String! """Number of decimal places in the balance amount.""" decimals: Int! """Whether the holder is authorized to transact the asset.""" isAuthorized: Boolean! """Whether the issuer can claw the asset back from this holder.""" isClawbackEnabled: Boolean! } """One constituent asset of a liquidity pool and its reserve amount.""" type LiquidityPoolReserve { """Canonical asset name: CODE:ISSUER, or native for XLM.""" asset: String! """Amount of this asset in the pool, with 7 decimal places.""" amount: String! } """ An account's liquidity-pool share holding. `balance` is the account's pool shares and `tokenId` is the pool ID; `reserves` carries the pool's constituent assets and amounts. """ type LiquidityPoolBalance implements Balance { """Balance amount as a decimal string. Native XLM, trustline, SAC, and liquidity-pool balances have 7 decimal places (for example "100.0000000"). SEP-41 balances are integers in the token's smallest unit; divide by 10^decimals.""" balance: String! """Token identifier: the token's contract ID (C...), which for native XLM and classic assets is the Stellar Asset Contract ID, or the hex-encoded pool ID for liquidity-pool shares.""" tokenId: String! """Classification of the token.""" tokenType: TokenType! """The pool's constituent assets and reserve amounts.""" reserves: [LiquidityPoolReserve!]! """Ledger in which this pool-share trustline was last modified.""" lastModifiedLedger: UInt32! } """A pure SEP-41 (non-SAC) contract token balance.""" type SEP41Balance implements Balance { """Balance amount as a decimal string. Native XLM, trustline, SAC, and liquidity-pool balances have 7 decimal places (for example "100.0000000"). SEP-41 balances are integers in the token's smallest unit; divide by 10^decimals.""" balance: String! """Token identifier: the token's contract ID (C...), which for native XLM and classic assets is the Stellar Asset Contract ID, or the hex-encoded pool ID for liquidity-pool shares.""" tokenId: String! """Classification of the token.""" tokenType: TokenType! """Token name reported by the contract; null when the contract does not expose one.""" name: String """Token symbol reported by the contract; null when the contract does not expose one.""" symbol: String """Number of decimal places in the balance amount.""" decimals: Int! """Ledger in which this balance entry was last modified.""" lastModifiedLedger: UInt32! } """An approve() grant issued by a SEP-41 token holder.""" type SEP41Allowance { """Token holder (G... or C...) that granted the allowance.""" owner: String! """Address (G... or C...) authorized to spend from the holder's balance.""" spender: String! """Contract ID (C...) of the token.""" tokenId: String! """Approved allowance, as an integer string in the token's smallest unit.""" amount: String! """Last ledger sequence at which the allowance is live.""" expirationLedger: UInt32! """Ledger in which this allowance was last modified.""" lastModifiedLedger: UInt32! } # ---- directives.graphqls ---- # ---- enums.graphqls ---- """ Stellar operation type, one value per operation defined by the Stellar protocol (matching the XDR OperationType names). """ enum OperationType { """Creates and funds a new account.""" CREATE_ACCOUNT """Sends an asset to a destination account.""" PAYMENT """Path payment where the destination receives an exact amount.""" PATH_PAYMENT_STRICT_RECEIVE """Path payment where the source sends an exact amount.""" PATH_PAYMENT_STRICT_SEND """Creates, updates, or deletes an offer to sell an asset.""" MANAGE_SELL_OFFER """Creates a passive sell offer, which does not take offers at the same price.""" CREATE_PASSIVE_SELL_OFFER """Creates, updates, or deletes an offer to buy an asset.""" MANAGE_BUY_OFFER """Sets account options: flags, thresholds, signers, home domain, inflation destination.""" SET_OPTIONS """Creates, updates, or removes a trustline.""" CHANGE_TRUST """Issuer authorizes or deauthorizes a trustline to its asset.""" ALLOW_TRUST """Merges the source account into a destination account and removes it.""" ACCOUNT_MERGE """Inflation operation. Fails on protocol 12 and later.""" INFLATION """Sets, updates, or deletes an account data entry.""" MANAGE_DATA """Raises the source account's sequence number.""" BUMP_SEQUENCE """Creates a claimable balance.""" CREATE_CLAIMABLE_BALANCE """Claims a claimable balance.""" CLAIM_CLAIMABLE_BALANCE """Starts sponsoring reserves for another account.""" BEGIN_SPONSORING_FUTURE_RESERVES """Ends a sponsorship started by BEGIN_SPONSORING_FUTURE_RESERVES.""" END_SPONSORING_FUTURE_RESERVES """Removes or transfers sponsorship of a ledger entry or signer.""" REVOKE_SPONSORSHIP """Issuer claws back an asset from a holder's trustline.""" CLAWBACK """Issuer claws back a claimable balance.""" CLAWBACK_CLAIMABLE_BALANCE """Issuer sets or clears authorization flags on a trustline.""" SET_TRUST_LINE_FLAGS """Deposits assets into a liquidity pool in exchange for pool shares.""" LIQUIDITY_POOL_DEPOSIT """Withdraws assets from a liquidity pool by redeeming pool shares.""" LIQUIDITY_POOL_WITHDRAW """Soroban: invokes a contract function, uploads Wasm, or creates a contract.""" INVOKE_HOST_FUNCTION """Soroban: extends the time to live of ledger entries in the footprint.""" EXTEND_FOOTPRINT_TTL """Soroban: restores archived ledger entries in the footprint.""" RESTORE_FOOTPRINT } """ Category of account state affected by a state change. Each category maps to one or more concrete BaseStateChange types; every concrete type documents its exact (category, reason) pairs. """ enum StateChangeCategory { """Token balance movements: BalanceChange (operation-sourced, or a transaction-fee row with null operation).""" BALANCE """Account lifecycle: AccountCreatedChange, AccountMergedChange.""" ACCOUNT """Account signer set: SignerAddedChange, SignerUpdatedChange, SignerRemovedChange.""" SIGNER """Signature thresholds: ThresholdChange.""" SIGNATURE_THRESHOLD """Account data entries: DataEntryAddedChange, DataEntryUpdatedChange, DataEntryRemovedChange.""" DATA_ENTRY """The account's home domain: HomeDomainSetChange, HomeDomainUpdatedChange, HomeDomainClearedChange.""" HOME_DOMAIN """SEP-41 token allowances: AllowanceChange.""" ALLOWANCE """Account authorization flags: AccountFlagsChange.""" FLAGS """Trustlines: TrustlineAddedChange, TrustlineUpdatedChange, TrustlineRemovedChange.""" TRUSTLINE """Asset authorization for a holder: BalanceAuthorizationChange.""" BALANCE_AUTHORIZATION } """ Why a state change occurred. Each value applies only to the categories listed in its description. """ enum StateChangeReason { """ACCOUNT: account created (classic) or contract deployed.""" CREATE """ACCOUNT: account merged into another account.""" MERGE """BALANCE: value left the account (payment sent, or a transaction-fee charge with null operation).""" DEBIT """BALANCE: value entered the account (payment received).""" CREDIT """BALANCE: tokens minted to the account.""" MINT """BALANCE: tokens burned from the account (including clawbacks).""" BURN """SIGNER, TRUSTLINE, or DATA_ENTRY: entry added.""" ADD """SIGNER, TRUSTLINE, or DATA_ENTRY: entry removed.""" REMOVE """SIGNER, TRUSTLINE, or DATA_ENTRY: entry updated; SIGNATURE_THRESHOLD: threshold changed; HOME_DOMAIN: domain changed from one value to another; ALLOWANCE: SEP-41 allowance approved.""" UPDATE """FLAGS or BALANCE_AUTHORIZATION: flags turned on; HOME_DOMAIN: domain set on an account that had none.""" SET """FLAGS or BALANCE_AUTHORIZATION: flags turned off; HOME_DOMAIN: domain removed.""" CLEAR } """Which of an account's three signature thresholds a ThresholdChange refers to.""" enum ThresholdLevel { """The low threshold.""" LOW """The medium threshold.""" MEDIUM """The high threshold.""" HIGH } """Classification of a token as held in an account's balance.""" enum TokenType { """The native XLM asset.""" NATIVE """A classic Stellar asset held via a trustline.""" CLASSIC """A Stellar Asset Contract balance held by a contract address.""" SAC """A pure SEP-41 (non-SAC) contract token balance.""" SEP41 """A liquidity-pool share position.""" LIQUIDITY_POOL } """Stellar account authorization flag.""" enum AccountFlag { """Holders of the account's assets must be authorized by the issuer.""" AUTH_REQUIRED """The issuer can revoke a holder's authorization.""" AUTH_REVOCABLE """The account's flags can never be changed again.""" AUTH_IMMUTABLE """The issuer can claw back its assets from holders.""" AUTH_CLAWBACK_ENABLED } """Stellar trustline authorization flag.""" enum TrustlineFlag { """The holder is fully authorized to transact the asset.""" AUTHORIZED """The holder may only maintain existing liabilities on the asset.""" AUTHORIZED_TO_MAINTAIN_LIABILITIES """The issuer can claw the asset back from this trustline.""" CLAWBACK_ENABLED } """Classic Stellar asset type, determined by the asset code length.""" enum AssetType { """Asset code of 1-4 characters.""" CREDIT_ALPHANUM4 """Asset code of 5-12 characters.""" CREDIT_ALPHANUM12 } # ---- filters.graphqls ---- """Filters for an account's state changes; all conditions are ANDed.""" input AccountStateChangeFilterInput { """Only state changes from the transaction with this hash (64 hex characters). Any other format returns an INVALID_TRANSACTION_HASH error.""" transactionHash: String """Only state changes from the operation with this ID (TOID).""" operationId: Int64 """Only state changes with this category.""" category: StateChangeCategory """Only state changes with this reason.""" reason: StateChangeReason } # ---- operation.graphqls ---- """One operation within a Stellar transaction.""" type Operation { """Operation ID (TOID): a globally unique, chronologically sortable identifier.""" id: Int64! """The operation's type.""" type: OperationType! """The operation body, base64-encoded XDR.""" operationXdr: String! """Operation result code in snake case (for example op_success, op_underfunded, op_bad_auth).""" resultCode: String! """Whether the operation succeeded.""" successful: Boolean! """Sequence number of the ledger that included this operation.""" ledgerNumber: UInt32! """Close time of the ledger that included this operation.""" ledgerCreatedAt: Time! """When the indexer persisted this operation.""" ingestedAt: Time! """Transaction that contains this operation.""" transaction: Transaction! """Accounts and contracts that participated in this operation. Each one has this operation in its `operations` history.""" accounts: [Account!]! """State changes produced by this operation, in ledger order.""" stateChanges( """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): StateChangeConnection! } # ---- pagination.graphqls ---- """Relay-style page of operations.""" type OperationConnection { """Operations in this page, in ledger order (oldest first).""" edges: [OperationEdge!]! """Cursors and page flags for fetching adjacent pages.""" pageInfo: PageInfo! } """One operation in a page, with its pagination cursor.""" type OperationEdge { """The operation.""" node: Operation! """Opaque cursor for this edge. Pass it as `after` or `before`.""" cursor: String! } """Relay-style page of state changes.""" type StateChangeConnection { """State changes in this page, in ledger order (oldest first).""" edges: [StateChangeEdge!]! """Cursors and page flags for fetching adjacent pages.""" pageInfo: PageInfo! } """One state change in a page, with its pagination cursor.""" type StateChangeEdge { """The state change. Select concrete-type fields with inline fragments.""" node: BaseStateChange! """Opaque cursor for this edge. Pass it as `after` or `before`.""" cursor: String! } """Relay-style page of an account's token balances.""" type BalanceConnection { """Balances in this page, in the token-type order described on `Account.balances`.""" edges: [BalanceEdge!]! """Cursors and page flags for fetching adjacent pages.""" pageInfo: PageInfo! } """One balance in a page, with its pagination cursor.""" type BalanceEdge { """The balance. Select type-specific fields with inline fragments.""" node: Balance! """Opaque cursor for this edge. Pass it as `after` or `before`.""" cursor: String! } """Relay-style page of SEP-41 allowances.""" type SEP41AllowanceConnection { """Allowances in this page, ordered by spender.""" edges: [SEP41AllowanceEdge!]! """Cursors and page flags for fetching adjacent pages.""" pageInfo: PageInfo! } """One SEP-41 allowance in a page, with its pagination cursor.""" type SEP41AllowanceEdge { """The allowance.""" node: SEP41Allowance! """Opaque cursor for this edge. Pass it as `after` or `before`.""" cursor: String! } """Relay-style pagination metadata; cursors are opaque strings.""" type PageInfo { """Cursor of the first edge in this page; null when the page is empty.""" startCursor: String """Cursor of the last edge in this page; null when the page is empty.""" endCursor: String """Forward paging (`first`, or no paging arguments): true when more edges follow this page. Backward paging (`last`): true whenever `before` was given.""" hasNextPage: Boolean! """Backward paging (`last`): true when more edges precede this page. Forward paging: true whenever `after` was given.""" hasPreviousPage: Boolean! } """Relay-style page of an account's transactions.""" type AccountTransactionConnection { """Transactions in this page, in ledger order (oldest first).""" edges: [AccountTransactionEdge!]! """Cursors and page flags for fetching adjacent pages.""" pageInfo: PageInfo! } """ One transaction in an account's history, with the transaction's operations and state changes inlined so a full account-history page resolves in one query. """ type AccountTransactionEdge { """The transaction.""" node: Transaction! """Opaque cursor for this edge. Pass it as `after` or `before`.""" cursor: String! """This transaction's operations that the account participated in. Not paginated.""" operations: [Operation!]! """This transaction's state changes that affected the account, newest first. Not paginated: at most 2,000 rows, and a transaction with more drops its oldest.""" stateChanges: [BaseStateChange!]! } # ---- queries.graphqls ---- """Root queries. All lookups are read-only.""" type Query { """ Look up a transaction by hash. Returns null, with an error in the response, when no indexed transaction has this hash. """ transactionByHash( """Transaction hash: 64 hex characters. For a fee-bump transaction, the outer (fee-bump) hash. Any other format returns an INVALID_TRANSACTION_HASH error.""" hash: String! ): Transaction """ Look up an account (G...) or contract (C...) by address. A contract's history holds the operations it authorised and the state changes applied to it. Any valid address returns an Account, even one with no indexed activity; its connections are then empty. """ accountByAddress( """Account strkey (G...) or contract strkey (C...). Any other value, including a muxed address (M...), returns an INVALID_ADDRESS error.""" address: String! ): Account """ Look up an operation by its ID (TOID). Returns null, with an error in the response, when no indexed operation has this ID. """ operationById( """Operation ID (TOID).""" id: Int64! ): Operation } # ---- scalars.graphqls ---- """RFC 3339 timestamp.""" scalar Time """ Unsigned 32-bit integer, serialized as a JSON number. Used for ledger sequence numbers and other non-negative counters. """ scalar UInt32 """ Signed 64-bit integer, serialized as a JSON number. GraphQL's Int is 32-bit; this scalar carries larger values such as operation IDs (TOIDs) and stroop amounts. """ scalar Int64 # ---- statechange.graphqls ---- """ Common contract implemented by every state change. A state change records one modification to one account's ledger state, attributed to the transaction (and, except for transaction fees, the operation) that caused it. Each concrete type documents the exact (category, reason) pairs it represents and the nullability of every field, so the variant structure is fully encoded in the schema. Select concrete-type fields via inline fragments; `category` and `reason` carry the same discrimination for generic consumers. """ interface BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation """Transaction that caused this change.""" transaction: Transaction! } """ A movement of value on the account's token balance. Covers operation-sourced movements and the per-transaction net fee charged to the fee-paying account. Pairs: (BALANCE, DEBIT), (BALANCE, CREDIT), (BALANCE, MINT), (BALANCE, BURN). Clawbacks are recorded as BURN. Transaction-fee rows are (BALANCE, DEBIT) with `operation` null (fees are charged per transaction, not per operation) and `toMuxedId` null; refunds are netted into the fee charge, never a separate row. """ type BalanceChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation """Transaction that caused this change.""" transaction: Transaction! """Contract ID (C...) of the token whose balance moved. For XLM and classic assets, the Stellar Asset Contract ID.""" tokenId: String! """Amount moved, as an integer string in the token's smallest unit (stroops for XLM and classic assets).""" amount: String! """ CAP-67 destination memo carried by SEP-41 transfer/mint events (CREDIT and MINT only). Rendered as a decimal string so u64 values above 2^53-1 survive JSON number quantization. """ toMuxedId: String } """ An account came into existence. `account` is the new account: a G-address for a classic account creation, a C-address for a smart-contract deployment. Pair: (ACCOUNT, CREATE). """ type AccountCreatedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """ Account that created this one: the funder of a classic account's starting balance, or the deployer of a contract. """ creatorAddress: String! } """ An account merge. `account` is the merged (removed) account. Pair: (ACCOUNT, MERGE). """ type AccountMergedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Account (G...) that received the merged account's XLM balance.""" destinationAddress: String! } """ A signer added to the account. Pair: (SIGNER, ADD). """ type SignerAddedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Signer key as a strkey: account (G...), pre-authorized transaction (T...), SHA-256 hash (X...), or signed payload (P...).""" signerAddress: String! """Weight assigned to the new signer (0-255).""" newWeight: Int! } """ An existing signer's weight changed. Pair: (SIGNER, UPDATE). """ type SignerUpdatedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Signer key as a strkey: account (G...), pre-authorized transaction (T...), SHA-256 hash (X...), or signed payload (P...).""" signerAddress: String! """Weight before this change (0-255). Can be 0 when the signer is the master key and its weight was 0.""" oldWeight: Int! """New weight (0-255).""" newWeight: Int! } """ A signer removed from the account. Pair: (SIGNER, REMOVE). """ type SignerRemovedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Signer key as a strkey: account (G...), pre-authorized transaction (T...), SHA-256 hash (X...), or signed payload (P...).""" signerAddress: String! """Weight the signer had before removal (0-255).""" oldWeight: Int! } """ A signature-threshold change. `threshold` identifies which of the account's three thresholds changed; one state change is emitted per changed threshold. Pair: (SIGNATURE_THRESHOLD, UPDATE). """ type ThresholdChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Which signature threshold changed.""" threshold: ThresholdLevel! """Previous threshold value (0-255).""" oldThreshold: Int! """New threshold value (0-255).""" newThreshold: Int! } """ Account authorization flags set or cleared in one operation. Pairs: (FLAGS, SET) lists flags that were turned on, (FLAGS, CLEAR) lists flags that were turned off. """ type AccountFlagsChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Flags that were set (reason SET) or cleared (reason CLEAR).""" flags: [AccountFlag!]! } """ A home domain set on an account that had none. Pair: (HOME_DOMAIN, SET). """ type HomeDomainSetChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """The newly set home domain.""" homeDomain: String! } """ An existing home domain replaced by a different one. Pair: (HOME_DOMAIN, UPDATE). """ type HomeDomainUpdatedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Previous home domain.""" oldHomeDomain: String! """New home domain.""" newHomeDomain: String! } """ A home domain removed from the account. Pair: (HOME_DOMAIN, CLEAR). """ type HomeDomainClearedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Home domain the account had when it was removed.""" oldHomeDomain: String! } """ A data entry created on the account. Pair: (DATA_ENTRY, ADD). """ type DataEntryAddedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Name of the data entry.""" name: String! """Value of the new entry, base64-encoded.""" value: String! } """ An existing data entry's value changed. Pair: (DATA_ENTRY, UPDATE). """ type DataEntryUpdatedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Name of the data entry.""" name: String! """Previous value, base64-encoded.""" oldValue: String! """New value, base64-encoded.""" newValue: String! } """ A data entry removed from the account. Pair: (DATA_ENTRY, REMOVE). """ type DataEntryRemovedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Name of the data entry.""" name: String! """Value the entry had when removed, base64-encoded.""" oldValue: String! } """ A SEP-41 allowance approval: `account` (the token holder) authorized `spender` to transfer up to `amount` of the token on its behalf. Pair: (ALLOWANCE, UPDATE). """ type AllowanceChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Contract ID (C...) of the token the allowance applies to.""" tokenId: String! """Address (G... or C...) authorized to spend from the holder's balance.""" spender: String! """Approved allowance, as an integer string in the token's smallest unit.""" amount: String! """Last ledger sequence at which the allowance is live.""" expirationLedger: UInt32! } """ A trustline created. Exactly one of tokenId / liquidityPoolId is set. Pair: (TRUSTLINE, ADD). """ type TrustlineAddedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Stellar Asset Contract ID (C...) of the trusted asset; null for liquidity-pool-share trustlines.""" tokenId: String """Hex-encoded liquidity pool ID for pool-share trustlines; null for asset trustlines.""" liquidityPoolId: String """Initial trustline limit, as a decimal string with 7 decimal places (for example "100.0000000").""" limit: String! } """ A trustline limit updated. Exactly one of tokenId / liquidityPoolId is set. Pair: (TRUSTLINE, UPDATE). """ type TrustlineUpdatedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Stellar Asset Contract ID (C...) of the trusted asset; null for liquidity-pool-share trustlines.""" tokenId: String """Hex-encoded liquidity pool ID for pool-share trustlines; null for asset trustlines.""" liquidityPoolId: String """Previous trustline limit, as an integer string in stroops (for example "1000000000").""" oldLimit: String! """New trustline limit, as a decimal string with 7 decimal places (for example "100.0000000").""" newLimit: String! } """ A trustline removed. Exactly one of tokenId / liquidityPoolId is set. Pair: (TRUSTLINE, REMOVE). """ type TrustlineRemovedChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Stellar Asset Contract ID (C...) of the trusted asset; null for liquidity-pool-share trustlines.""" tokenId: String """Hex-encoded liquidity pool ID for pool-share trustlines; null for asset trustlines.""" liquidityPoolId: String } """ Authorization to hold or transact an asset granted or revoked for the account. Exactly one of tokenId / liquidityPoolId is set. For classic trustlines, `flags` lists the trustline flags that were set (reason SET) or cleared (reason CLEAR). For SAC authorization of contract holders, authorization is a plain boolean in the contract balance entry, so `flags` is null. Pairs: (BALANCE_AUTHORIZATION, SET), (BALANCE_AUTHORIZATION, CLEAR). """ type BalanceAuthorizationChange implements BaseStateChange { """Category of account state this change affects.""" category: StateChangeCategory! """Why the change occurred. Each concrete type documents its valid reasons.""" reason: StateChangeReason! """When the indexer persisted this state change.""" ingestedAt: Time! """Close time of the ledger that produced this change.""" ledgerCreatedAt: Time! """Sequence number of the ledger that produced this change.""" ledgerNumber: UInt32! """Account or contract whose state changed.""" account: Account! """ Operation that caused this change. Non-null on every concrete type except BalanceChange, where it is null on transaction-fee rows (fees are charged per transaction, not per operation). """ operation: Operation! """Transaction that caused this change.""" transaction: Transaction! """Stellar Asset Contract ID (C...) of the asset; null for liquidity-pool-share trustlines.""" tokenId: String """Hex-encoded liquidity pool ID for pool-share trustlines; null for asset trustlines.""" liquidityPoolId: String """Trustline flags that changed; null for SAC contract-holder authorization, which has no flags.""" flags: [TrustlineFlag!] } # ---- transaction.graphqls ---- """A Stellar transaction.""" type Transaction { """Transaction hash, 64 hex characters. For a fee-bump transaction, the outer (fee-bump) hash.""" hash: String! """Fee charged for the transaction, in stroops.""" feeCharged: Int64! """Transaction result code, as the XDR TransactionResultCode name (for example TransactionResultCodeTxSuccess).""" resultCode: String! """Sequence number of the ledger that included this transaction.""" ledgerNumber: UInt32! """Close time of the ledger that included this transaction.""" ledgerCreatedAt: Time! """Whether this transaction is a fee-bump transaction.""" isFeeBump: Boolean! """When the indexer persisted this transaction.""" ingestedAt: Time! """Operations contained in this transaction, in application order.""" operations( """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): OperationConnection! """Accounts and contracts that participated in this transaction. Each one has this transaction in its `transactions` history.""" accounts: [Account!]! """State changes produced by this transaction, in ledger order.""" stateChanges( """Return up to this many edges from the start of the list, or after `after`. Default 50 when neither `first` nor `last` is set. Maximum 100. Cannot be combined with `last` or `before`.""" first: Int """Cursor from a previous page. Returns the edges after it. Requires `first`; ignored without it.""" after: String """Return up to this many edges from the end of the list, or before `before`. Maximum 100. Cannot be combined with `first` or `after`.""" last: Int """Cursor from a previous page. Returns the edges before it. Requires `last`; ignored without it.""" before: String ): StateChangeConnection! }