Chia Cloud Wallet API Documentation
Chia Cloud Wallet is a self-custody platform for interacting with the Chia blockchain. Assets are held in vaults that stay synced with the blockchain. The GraphQL API lets applications manage those vaults, assets, signers, offers, and transactions.
The guide sections below cover authentication, the conventions every operation shares, and end-to-end workflows. The reference that follows documents each operation and type. Are you an agent? Read the same guide as Markdown, with the public GraphQL schema.
API Endpoints
# Production (testnet11):
https://api.vault.chiatest.net/graphql
# Production (mainnet):
https://api.vault.chia.net/graphql
Getting started
The Cloud Wallet API is a single GraphQL endpoint for each network. Build and test against testnet, then switch the host to mainnet. Both are production services, and accounts, vaults, and API keys do not carry over between them.
| Network | GraphQL over HTTP | Subscriptions (WebSocket) |
|---|---|---|
| Testnet11 | https://api.vault.chiatest.net/graphql |
wss://api.vault.chiatest.net/graphql |
| Mainnet | https://api.vault.chia.net/graphql |
wss://api.vault.chia.net/graphql |
Submit a request
Send a POST request with a JSON body containing query and, when the operation declares them, variables and operationName:
curl https://api.vault.chiatest.net/graphql \
-H 'Content-Type: application/json' \
--data '{"query":"query Ping { ping }"}'
ping requires no authentication and returns true while the service is running:
query Ping {
ping
}
- Queries can also be sent with
GETand URL parameters. Mutations must usePOST. - Send one operation per request. Batched request arrays are rejected with HTTP 400.
- Request bodies are limited to 3 MB. The limits on query size and shape are in the conventions section.
- Subscriptions use the
graphql-wsprotocol on the same path. Only API-key authentication supports them; the authentication section shows how to sign the connection. - Introspection is disabled in production. Download the public schema for code generation and editor tooling instead.
Make an authenticated request
ping, viewer, oAuthScopes, and publicAnnouncements work without authentication. Treat every other operation as requiring an API key or an OAuth access token. The authentication section explains how to sign requests with an API key and how to obtain a token through OAuth. Once authenticated, confirm the identity the API sees:
query CurrentUser {
viewer {
id
email
}
}
A successful response has HTTP status 200 and a data object:
{
"data": {
"viewer": {
"id": "User_<cuid>",
"email": "[email protected]"
}
}
}
If viewer is null, the API did not accept your credentials. viewer does not return an error in that case, because it is public: an invalid OAuth token is treated as no authentication. A bad API-key signature does return an UNAUTHENTICATED error.
Errors are also returned with HTTP status 200, in an errors array next to data. Check errors on every response, not only the status code. The conventions section lists the error codes.
Where to go next
- Conventions covers IDs, pagination, amounts, errors, and rate limits. They apply to every operation.
- Vaults and transactions lists vaults and sends XCH or a CAT.
- Signature requests explains how a transaction is signed and submitted.
- Offers creates, shares, takes, and cancels offers.
- NFTs mints and transfers NFTs.
The API reference documents each operation and type, grouped by topic, after these guide sections. The public schema contains the same definitions in SDL.
Authentication
Cloud Wallet supports API keys for direct user integrations and OAuth 2.0 for applications that act with a user's consent. Neither method bypasses GraphQL authorization, plan entitlements, or resource ownership.
| Capability | API key | OAuth |
|---|---|---|
| Intended client | A user-controlled service or script | A third-party web, desktop, or mobile application |
| Identity | The user who owns the key | The consenting user, narrowed to granted scopes and resources |
| Credential lifetime | Until the selected expiration or deletion | Short-lived access token; optional rotating refresh token |
| GraphQL over HTTP | Supported | Supported |
| GraphQL subscriptions | Supported with signed WebSocket authentication | Not supported |
Do not send more than one authentication method on a request. A request that contains a session cookie, bearer token, and signature header in any combination is rejected.
API keys
Create and manage a key
Sign in to Cloud Wallet and open Settings > API Keys.
- Select Create API Key.
- Enter a unique name.
- Select an expiration of 30 days, 1 year, or never.
- Create the key and save both the key ID and PEM private key.
Cloud Wallet stores the public key and displays the private key only once. Store the private key in a secret manager. If you lose or expose it, delete the API key and create another one. Deleting a key immediately prevents it from authenticating new requests.
When the key is created, you can copy the PEM private key, copy its base64 encoding for storage in an environment variable, or download it as a .pem file. The number of API keys you can create depends on your Cloud Wallet plan.
Security model
An API key is an asymmetric RSA key pair. Your client keeps the private key, and Cloud Wallet stores only the public key used to verify signatures. The private key is never sent with a request.
The signature covers the exact request body, nonce, and timestamp. Changing any of those values invalidates the signature. The timestamp limits the replay window, and each nonce can be used only once with a key.
Sign a request
API keys use RSA-SHA256 request signatures. For every request:
- Serialize the GraphQL request body once.
- Generate a unique nonce containing exactly 10 ASCII letters or digits.
- Set the timestamp to the Unix epoch time in milliseconds.
- Concatenate
requestBody + nonce + timestampwithout separators. - Sign that exact string with RSA-SHA256 and encode the signature as base64.
- Send the exact serialized body that you signed.
| Header | Value |
|---|---|
content-type |
application/json; charset=utf-8 |
chia-user-key-id |
The key ID shown when you created the API key |
chia-signature |
Base64-encoded RSA-SHA256 signature |
chia-nonce |
Unique 10-character alphanumeric nonce |
chia-timestamp |
Unix epoch time in milliseconds |
This Node.js example expects CHIA_API_PRIVATE_KEY to contain the raw PEM value from Copy or Download Key. If your secret store contains the base64 copy, decode it before passing it to signer.sign. The example always generates a valid nonce and makes an authenticated GraphQL request to testnet:
import { createSign, randomInt } from 'node:crypto';
const keyId = process.env.CHIA_API_KEY_ID;
const privateKey = process.env.CHIA_API_PRIVATE_KEY;
const nonceCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
function generateNonce() {
let nonce = '';
while (nonce.length < 10) {
nonce += nonceCharacters.charAt(randomInt(nonceCharacters.length));
}
return nonce;
}
const body = JSON.stringify({
query: 'query CurrentUser { viewer { id } }',
});
const nonce = generateNonce();
const timestamp = Date.now().toString();
const signer = createSign('RSA-SHA256');
signer.update(body + nonce + timestamp);
signer.end();
const response = await fetch('https://api.vault.chiatest.net/graphql', {
method: 'POST',
headers: {
'content-type': 'application/json; charset=utf-8',
'chia-user-key-id': keyId,
'chia-signature': signer.sign(privateKey, 'base64'),
'chia-nonce': nonce,
'chia-timestamp': timestamp,
},
body,
});
console.log(await response.json());
This Python example uses the base64 copy of the private key:
import base64
import json
import os
import secrets
import string
import time
import requests
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding
key_id = os.environ["CHIA_API_KEY_ID"]
private_key_pem = base64.b64decode(
os.environ["CHIA_API_PRIVATE_KEY_BASE64"]
)
private_key = serialization.load_pem_private_key(
private_key_pem,
password=None,
)
body = json.dumps(
{"query": "query CurrentUser { viewer { id } }"},
separators=(",", ":"),
)
nonce_characters = string.ascii_letters + string.digits
nonce = "".join(secrets.choice(nonce_characters) for _ in range(10))
timestamp = str(int(time.time() * 1000))
canonical_string = body + nonce + timestamp
signature = private_key.sign(
canonical_string.encode(),
padding.PKCS1v15(),
hashes.SHA256(),
)
response = requests.post(
"https://api.vault.chiatest.net/graphql",
headers={
"content-type": "application/json; charset=utf-8",
"chia-user-key-id": key_id,
"chia-signature": base64.b64encode(signature).decode(),
"chia-nonce": nonce,
"chia-timestamp": timestamp,
},
data=body,
timeout=30,
)
print(response.json())
The timestamp must be within five minutes of the server time. Cloud Wallet rejects a nonce that has already been used with the same key.
Authenticate a subscription
A WebSocket connection has no request body, so sign the empty string followed by the nonce and timestamp, and send the four chia- headers as connectionParams. Sign each connection attempt afresh, because a nonce cannot be reused. This example uses the graphql-ws client and the generateNonce function from the previous example:
import { createSign } from 'node:crypto';
import { createClient } from 'graphql-ws';
const client = createClient({
url: 'wss://api.vault.chiatest.net/graphql',
connectionParams: () => {
const nonce = generateNonce();
const timestamp = Date.now().toString();
const signer = createSign('RSA-SHA256');
signer.update(nonce + timestamp);
signer.end();
return {
'chia-user-key-id': keyId,
'chia-signature': signer.sign(privateKey, 'base64'),
'chia-nonce': nonce,
'chia-timestamp': timestamp,
};
},
});
client.subscribe(
{ query: 'subscription WalletUpdated { walletUpdated { id name } }' },
{
next: (result) => {
if (result.errors) console.error(result.errors);
else console.log(result.data);
},
error: console.error,
complete: () => {},
},
);
A failed authentication appears in one of two ways, so handle both:
- An invalid signature, nonce, or timestamp closes the connection with close code
4500and no GraphQL error. The server acknowledges the connection first, so aconnectedevent does not mean authentication succeeded. The client reports the close througherrorand does not reconnect, so fix the signing code instead of retrying. - A connection without credentials is accepted. Each subscription then receives a result with an
errorsarray and anUNAUTHENTICATEDcode throughnext, followed bycomplete, so checkerrorson every result.
walletUpdated reports changes to every vault the key's user owns. Filter by id in your handler. graphql-ws parses messages with JSON.parse, which rounds BigInt values, so do not select amounts in a subscription: read them again over HTTP when an event arrives.
Troubleshoot API-key authentication
Authentication failures use the GraphQL UNAUTHENTICATED error code.
| Error | Cause | Resolution |
|---|---|---|
Begins Invalid signature |
The signature, key ID, or exact body does not match | Build the signature from the exact body string sent, followed by the nonce and timestamp. Sign the body after serializing it, and send those bytes unchanged |
Nonce must be exactly 10 alphanumeric characters long |
The nonce has the wrong length or contains punctuation | Generate exactly 10 characters from A-Z, a-z, and 0-9 |
Nonce has already been used. |
The key already authenticated a request with this nonce | Generate a new nonce for every request |
Timestamp is too far away from the current time |
The timestamp differs from server time by more than five minutes | Synchronize the client clock and send milliseconds since the Unix epoch |
Auth Key has expired |
The selected key expiration has passed | Delete the expired key and create another one |
Multiple tokens provided |
The request contains more than one authentication method | Send only the API-key headers |
An unknown key ID returns the same response as an invalid signature. This prevents key enumeration.
OAuth authorization code with PKCE
OAuth uses the authorization-code flow with PKCE (S256). It is appropriate when your application needs access to another user's Cloud Wallet resources.
Register a client
When the developer-registration rollout is enabled, organization administrators can submit an application from Settings > OAuth Apps. New submissions remain pending and cannot authorize users until Cloud Wallet approves them. Environments without the rollout continue to use manual registration.
These instructions assume you received a client ID and registered one or more redirect URIs. One registered URI must exactly match the redirect_uri supplied during authorization and token exchange.
Public clients use PKCE and do not use a client secret. Never embed a confidential client secret in browser, desktop, or mobile code. The registration portal displays a generated secret once for future confidential client support, but the OAuth server does not accept it for authentication.
The endpoints are on the same host as GraphQL. The examples below use testnet; replace api.vault.chiatest.net with api.vault.chia.net for mainnet.
| Purpose | Method and path |
|---|---|
| Authorization | GET /authorize |
| Token exchange and refresh | POST /token |
| Token revocation | POST /revoke |
| GraphQL | POST /graphql |
OAuth libraries that read server metadata can use /api/auth/.well-known/oauth-authorization-server on the same host. It advertises equivalent endpoints under /api/auth/oauth2/, and the issuer https://<host>/api/auth, which the callback's iss parameter carries.
Choose scopes and resources
Request only the permission scopes your application needs, separated by spaces. Permission scopes use names such as wallet.read, wallet.write, and transfer.create. Query the public scope catalog for the available scopes, descriptions, and resource types:
query AvailableOAuthScopes {
oAuthScopes(first: 100) {
edges {
node {
scope
description
resourceType
resourceGrantNotRequired
}
}
}
}
The workflows in this guide need these scopes:
| Operation | Scope |
|---|---|
| Read vaults, balances, transactions, and signature requests | wallet.read |
| Read a vault's NFTs | nft.read |
Read a vault's offers, including walletOffer |
offer.read |
deriveVaultAddress, resendSignatureRequest |
wallet.write |
createTransaction, clawBackTransaction, finalizeTransaction, transferNfts |
transfer.create |
deleteTransaction |
transfer.delete |
signSignatureRequest |
wallet.sign |
submitSignatureRequest |
signatureRequest.submit |
createOffer |
offer.create |
addOffer, takeOffer |
offer.accept |
cancelOffer |
offer.cancel |
bulkMintNfts |
nft.create |
When a scope applies to wallets or another resource type, the consent screen asks the user which resources to grant. A token can use a permission only when the user has that permission and consented to the required resource. Consent narrows the user's existing access; it does not create new access.
Include offline_access when your application needs a refresh token. The legacy read_vault and write_vault scopes are deprecated; use granular permission scopes for new integrations.
Authorize the user
Generate a cryptographically random state value and PKCE verifier. Store both until the callback. Derive the S256 challenge as base64url(sha256(code_verifier)), without base64 padding.
An RFC 7636 verifier is 43–128 characters from the unreserved URI character set. This Node.js example generates a 64-character verifier with 384 bits of randomness, derives its challenge, and constructs the authorization URL:
import { createHash, randomBytes, randomUUID } from 'node:crypto';
const clientId = process.env.CHIA_OAUTH_CLIENT_ID;
const redirectUri = process.env.CHIA_OAUTH_REDIRECT_URI;
const state = randomUUID();
const codeVerifier = randomBytes(48).toString('base64url');
const codeChallenge = createHash('sha256').update(codeVerifier).digest('base64url');
const authorizeUrl = new URL('https://api.vault.chiatest.net/authorize');
authorizeUrl.searchParams.set('client_id', clientId);
authorizeUrl.searchParams.set('redirect_uri', redirectUri);
authorizeUrl.searchParams.set('response_type', 'code');
authorizeUrl.searchParams.set('scope', 'wallet.read offline_access');
authorizeUrl.searchParams.set('state', state);
authorizeUrl.searchParams.set('code_challenge', codeChallenge);
authorizeUrl.searchParams.set('code_challenge_method', 'S256');
// Store state and codeVerifier in the user's server-side session before redirecting.
console.log(authorizeUrl.toString());
Redirect the user's browser to /authorize with these query parameters:
https://api.vault.chiatest.net/authorize
?client_id=<client_id>
&redirect_uri=<registered_redirect_uri>
&response_type=code
&scope=wallet.read%20offline_access
&state=<random_state>
&code_challenge=<pkce_s256_challenge>
&code_challenge_method=S256
After Cloud Wallet redirects to your callback:
- Reject the response if its
statedoes not exactly match the stored value. - Handle an OAuth
errorresponse instead of assuming a code is present. - Exchange the authorization
codeimmediately. A code is single-use.
curl https://api.vault.chiatest.net/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'client_id=<client_id>' \
--data-urlencode 'code=<authorization_code>' \
--data-urlencode 'redirect_uri=<registered_redirect_uri>' \
--data-urlencode 'code_verifier=<pkce_verifier>'
The JSON response contains access_token and token_type. Use expires_in to schedule renewal when it is present. A grant that includes offline_access also returns refresh_token; replace it after every successful refresh. The scope value, when present, records the scopes granted to the token.
Send the resulting access token as a bearer token to make the first authenticated GraphQL request:
curl https://api.vault.chiatest.net/graphql \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json' \
--data '{"query":"query CurrentUser { viewer { id } }"}'
Authorization failures redirect to the registered callback with error and may include error_description. Token endpoint failures return a non-2xx JSON response with the same fields. Handle errors such as invalid_request, invalid_client, invalid_grant, invalid_scope, and invalid_target without exposing their descriptions to untrusted users. An invalid_grant during code exchange or refresh requires a new authorization flow.
Refresh and revoke tokens
If authorization included offline_access, exchange the refresh token at the token endpoint:
curl https://api.vault.chiatest.net/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'client_id=<client_id>' \
--data-urlencode 'refresh_token=<refresh_token>'
A successful refresh rotates the refresh token. Store the new access token and refresh token atomically, and discard the previous refresh token.
Revoke an access token or refresh token when the user disconnects the application:
curl https://api.vault.chiatest.net/revoke \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=<client_id>' \
--data-urlencode 'token=<access_or_refresh_token>'
Revoking a refresh token also prevents future access-token refreshes. Your application must treat a rejected refresh as a disconnected authorization and send the user through authorization again.
OAuth restrictions
- OAuth access tokens authenticate GraphQL requests over HTTP.
- OAuth sessions are rejected during the GraphQL WebSocket handshake. OAuth applications cannot use GraphQL subscriptions.
- The token can access only operations supported for OAuth and only the scopes and resources recorded during consent.
- Account-security and connected-application management operations can require a direct user session and reject delegated OAuth access.
Conventions
These conventions apply to every operation. The reference documents individual fields; this section documents the rules they share.
Global IDs
Every object ID is a global ID in TypeName_cuid format, such as Wallet_<cuid>, SignatureRequest_<cuid>, or WalletTransaction_<cuid>. The part before the first underscore names the type. Global IDs are plain strings, not base64-encoded Relay IDs.
Treat IDs as opaque. Pass back the exact value the API returned, and do not construct an ID from its parts. An ID argument accepts only the type it documents:
| Input | Error code | Message |
|---|---|---|
| No underscore | BAD_USER_INPUT |
Invalid globalId format |
Another type, such as a Signer_ ID |
BAD_USER_INPUT |
ID: <value> is not of type: <Expected> |
A few identifiers are not CUIDs. For example, an offer has two IDs: WalletOffer.id is a WalletOffer_<cuid> ID for your vault's copy of the offer, which walletOffer accepts, and WalletOffer.offerId is an Offer_<hex> ID containing the offer's on-chain hash, which takeOffer and cancelOffer accept. The reference states the format wherever an argument expects one.
Cursor pagination
List fields are Relay-style connections. Page forward with first and after, or backward with last and before:
query ListVaultsPage($after: String) {
viewer {
wallets(first: 50, after: $after) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
cursor
node {
id
name
}
}
}
}
}
- A page holds at most 100 items. Most connections return 10 items when you omit
firstandlast, and reject a larger value withBAD_USER_INPUTand the messageLimit 101 is greater than max 100. A few connections over small, fixed lists, such asoAuthScopes, return 20 items by default and return 100 items when you ask for more. Always passfirstand followhasNextPagerather than relying on either behavior. - Pass
pageInfo.endCursorasafterto fetch the next page. Stop whenhasNextPageisfalse. - Cursors are opaque and are valid only for the connection and sort order that produced them. A cursor you did not receive from the API fails with
BAD_USER_INPUT; the message depends on the connection. - Every connection exposes
totalCount. Counting has a cost, so request it only when you need it.
Amounts and units
Amounts are integers in mojos, the smallest unit of each asset. Never send decimal XCH or CAT amounts.
| Asset | Mojos per unit | Example: 1.5 units |
|---|---|---|
| XCH | 1,000,000,000,000 | 1500000000000 |
| CAT | 1,000 | 1500 |
Fees are always XCH mojos, including on CAT transfers and offers. A CAT is identified by its assetHash, the 64-character hexadecimal tail hash; omit assetHash for XCH. Convert with the fixed ratios in this table rather than with an asset's decimals field.
Scalars
| Scalar | Input | Output |
|---|---|---|
BigInt |
An integer, or a decimal string such as "1000000000000" |
A JSON number, which can exceed 2^53 |
DateTime |
An ISO 8601 date and time, such as 2026-01-31T12:00:00Z |
An ISO 8601 string in UTC |
Bytea |
Hexadecimal, with or without a 0x prefix |
Hexadecimal without a prefix |
JSON |
Any JSON value | Any JSON value |
BigInt output needs a precision-safe JSON parser. Mojo amounts routinely exceed Number.MAX_SAFE_INTEGER, and the API writes them as bare JSON numbers. A standard JSON.parse in JavaScript silently rounds them, producing a wrong balance rather than an error. In JavaScript, parse responses with a library such as json-bigint, or call JSON.parse with a reviver that reads the source text, where the runtime supports it. Python's json module keeps integers exact. For input, a value above 2^53 − 1 must be a decimal string, because a JSON number that large cannot be represented exactly. Sending every amount as a decimal string is the simplest way to satisfy this.
Many timestamp fields, such as createdAt and updatedAt on Wallet, are typed String rather than DateTime. They use the format 2026-01-31 12:00:00.123456, with a space instead of T and no time zone offset, and the values are UTC. Append Z after replacing the space if your parser requires ISO 8601.
Defaults
An optional argument you omit takes the default shown in the reference, such as autoSubmit: Boolean = true. When an input field has no default:
- An omitted
feeis zero. A transaction with a zero fee can take longer to confirm when the network is busy. The API does not estimate fees, so choose the fee in your application. - An omitted
firstandlastreturns a page of 10 items on most connections.
autoSubmit defaults differ between mutations, because some flows expect a review step before anything reaches the network:
- Default
true:createTransactionandcreateOffer. ForcreateOffer,autoSubmitapplies only to the coin split made withsplitInputCoins; see the offers section. - Default
false:takeOffer,cancelOffer,bulkMintNfts,transferNfts,finalizeTransaction, andclawBackTransaction.
Pass autoSubmit explicitly whenever the difference matters to your integration.
Errors
The API follows the GraphQL response format. An operation that fails returns HTTP status 200 with an errors array. Each error has a message and, almost always, an extensions.code. Fields that resolved successfully still appear in data, so a response can contain both.
{
"data": { "wallet": null },
"errors": [
{
"message": "ID: Signer_<cuid> is not of type: Wallet",
"extensions": { "code": "BAD_USER_INPUT" }
}
]
}
Branch on extensions.code, not on message. Messages are for people and can change.
- Do not rely on
path. Most errors omit it, so send one root field per request when you need to know which field failed. - Some errors have no
extensionsat all: the alias and directive limits described under query limits, and a variable that is missing or has the wrong type. Treat an error without a code as a problem with the request document or its variables.
| Code | Meaning |
|---|---|
UNAUTHENTICATED |
The operation requires authentication and the request has none, or its API-key signature is invalid |
UNAUTHORIZED |
The caller lacks the permission, or the resource does not exist or is not visible to the caller |
BAD_USER_INPUT |
An argument is invalid; the message explains which |
BAD_REQUEST |
The HTTP request is malformed, such as a batched array or a mutation sent with GET |
OPERATION_RESOLUTION_FAILURE |
operationName does not name an operation in the document |
GRAPHQL_PARSE_FAILED |
The document is not valid GraphQL, or exceeds the token limit |
GRAPHQL_VALIDATION_FAILED |
The document does not match the schema |
RATE_LIMIT_EXCEEDED |
The operation's rate limit is exhausted |
COMPLEXITY_EXCEEDED |
The query is too deep, too broad, or too expensive |
PLAN_LIMIT_MET |
The account's plan does not allow more of this resource |
DUPLICATE_KEY |
A resource with the same unique value already exists |
AUTO_SUBMIT_FAILED |
The request was fully signed, but automatic submission failed; see the signature requests section |
CIRCUIT_BREAKER_ACTIVE |
Cloud Wallet temporarily paused this operation |
UNSUPPORTED_OFFER |
The offer uses an outdated format that can no longer be accepted |
RPC_ERROR |
The Chia network rejected the request |
INTERNAL_SERVER_ERROR |
An unexpected failure. The message is always Unexpected error. |
There is no NOT_FOUND code. An ID for a resource that does not exist, or that you cannot access, returns null with UNAUTHORIZED; the API does not reveal which.
An invalid, expired, or revoked OAuth access token does not produce an error. The request runs unauthenticated: public fields such as viewer return null, and other fields fail with UNAUTHENTICATED. A null viewer therefore means the API did not accept your credentials.
An INTERNAL_SERVER_ERROR hides its cause deliberately. Retry a query once. Do not retry a mutation blindly, because the error does not say whether the change took effect: read the affected resource first, for example the vault's transactions, and retry only if the change is absent. If the error persists, contact support with the time of the request.
Requests rejected before GraphQL runs use HTTP status codes instead:
| HTTP status | Cause | Message |
|---|---|---|
| 400 | A batched request array | Batching is not supported. |
| 400 | Variables exceed the size limits below | Input validation failed |
| 400 | A variable is missing or has the wrong type | Names the variable, as in Variable "$input" … |
| 400 | operationName matches no operation |
Could not determine what operation to execute. |
| 405 | A mutation sent with GET |
Can only perform a mutation operation from a POST request. |
| 413 | A request body over 3 MB | None |
Rate limits
Each root field has its own budget per user, or per IP address for unauthenticated requests. Every call costs 10 points. A budget's 60-second window starts with the first call and resets when it ends.
| Operation type | Points per 60 seconds | Calls per 60 seconds |
|---|---|---|
| Queries | 1,000 | 100 |
| Mutations | 500 | 50 |
Because the budget is per root field, calling wallet 100 times does not reduce what remains for viewer. Authentication and verification operations have stricter limits. Some accounts have a higher allowance by agreement.
An exhausted budget returns RATE_LIMIT_EXCEEDED with HTTP status 200. No Retry-After header is sent; the message states the time until the window resets, as in Rate limit exceeded, please try again in 42 seconds. Back off until then instead of retrying immediately. The limit is checked before the field runs, so a rate-limited mutation made no change and is safe to retry after the wait.
Query limits
These limits protect the service and apply to every request:
| Limit | Value | Error |
|---|---|---|
| Query document length | 100,000 characters | HTTP 400, Input validation failed |
| Keys in one variables object | 100 | HTTP 400, Input validation failed |
| Nesting depth of variables | 15 | HTTP 400, Input validation failed |
| Items in one variables array | 10,000 | HTTP 400, Input validation failed |
| Items in one list argument | 250, unless the reference states otherwise | BAD_USER_INPUT |
| Aliases | 15 | No code; the message begins Syntax Error: |
| Directives | 50 | No code; the message begins Syntax Error: |
| Tokens | 1,000 | GRAPHQL_PARSE_FAILED |
| Selection depth | 25 | COMPLEXITY_EXCEEDED |
| Selection breadth | 400 | COMPLEXITY_EXCEEDED |
| Complexity | 5,000 | COMPLEXITY_EXCEEDED |
Each field costs 1 complexity point, and a list or connection multiplies the cost of its selection by 10. The edges of WalletTransaction.assetChanges multiply by 3, because most transactions change few assets. Request only the fields you use, and paginate instead of nesting several connections.
Vaults and transactions
Cloud Wallet calls wallets "vaults" in the user interface. The GraphQL schema uses Wallet and wallets.
List vaults
query ListVaults {
viewer {
wallets(first: 20) {
edges {
node {
id
name
state
xch: asset(assetHash: null) {
totalAmount
spendableAmount
}
}
}
}
}
}
asset(assetHash: null) selects the vault's XCH balance. Pass assetHash: null explicitly: an asset field with no assetHash argument returns null. Pass a CAT's assetHash to read that CAT instead. A vault in the READY state can send and receive. VAULT_PENDING_CREATE means the vault's creation has not confirmed on chain yet, and the two VAULT_RECOVERY_ states mean a recovery is in progress.
To read one vault, pass its ID to wallet. Its assets connection lists each XCH and CAT balance in mojos, and its transactions connection lists its history. totalAmount is the full balance. spendableAmount excludes lockedAmount, the coins reserved by transactions and offers that have not settled.
query VaultActivity($walletId: ID!) {
wallet(id: $walletId) {
assets(first: 20) {
edges {
node {
assetHash
symbol
totalAmount
spendableAmount
}
}
}
transactions(first: 20) {
edges {
node {
id
type
state
walletFee
assetChanges(first: 10) {
edges {
node {
assetHash
direction
amount
}
}
}
signatureRequest {
id
status
}
}
}
}
}
}
assetChanges lists each asset a transaction changed for the vault, one node per asset, so an offer shows both what the vault gave and what it received. amount is in mojos and never negative, and direction says whether the vault gained or lost the asset. assetHash is null for XCH. NFT changes, and an NFT launcher id passed to changedAssetHash, also need nft.read or wallet.sign on the vault; without either, the change is left out and the filter matches nothing. walletFee is the network fee the vault paid, in XCH mojos.
Receive funds
A vault receives XCH, CATs, and NFTs at its vault addresses. vaultAddresses lists them, and index 0 is the primary receive address:
query VaultAddresses($walletId: ID!) {
wallet(id: $walletId) {
vaultAddresses {
index
address
label
}
}
}
deriveVaultAddress adds a new address at the next index, for example to give each payer a separate address. Do not use Wallet.address as a receive address: it returns one of the wallet's puzzle hashes, which is not necessarily the primary receive address.
Addresses begin with txch1 on testnet and xch1 on mainnet. The examples in this guide use xch1...; substitute a testnet address when you test.
Create a transaction
createTransaction sends XCH or a CAT from a vault to an address:
mutation CreateTransaction($input: CreateTransactionInput!) {
createTransaction(input: $input) {
signatureRequest {
id
status
transaction {
id
state
}
}
}
}
This input sends 1 XCH. Omit assetHash for XCH:
{
"input": {
"walletId": "Wallet_<cuid>",
"address": "xch1...",
"amount": "1000000000000",
"fee": "0",
"autoSubmit": true
}
}
This input sends 2.5 units of a CAT. The amount uses CAT mojos, and the fee is still XCH mojos:
{
"input": {
"walletId": "Wallet_<cuid>",
"address": "xch1...",
"assetHash": "<64-character-cat-tail-hash>",
"amount": "2500",
"fee": "1000000"
}
}
Omit type: only TRANSFER is supported, and it is the default. xchHandle is optional; if you resolved the address from an XCHandle, pass the handle and the mutation fails if it no longer resolves to address.
createTransaction does not sign or send anything. It creates two linked objects immediately:
- A
WalletTransactionin theUNSIGNEDstate, which appears in the vault'stransactionsconnection. - A
SignatureRequestin theUNSIGNEDstatus, which collects the signatures the vault's signers must supply.
The signature requests section explains how signing and submission work, and how autoSubmit controls the last step.
Transaction states
WalletTransaction.state moves forward as the transaction is signed, submitted, and confirmed:
UNSIGNED → SIGNED → MEMPOOL → SETTLED
↘ INVALID
| State | Meaning |
|---|---|
UNSIGNED |
Waiting for signatures |
SIGNED |
Every required signature is collected, and the transaction has not been submitted |
MEMPOOL |
Submitted to the network and waiting to be included in a block |
PENDING |
In progress and not yet confirmed; treat it like MEMPOOL |
SETTLED |
Confirmed on chain. This is final for most transactions |
RE_ORG |
A chain reorganization removed the confirming block; the transaction is waiting to confirm again |
INVALID |
The network rejected the transaction, or one of its coins was spent elsewhere. It will not confirm |
FINALIZED |
A clawback transaction was released to the recipient |
CLAWED_BACK |
A clawback transaction was returned to the sender |
Poll walletTransaction to follow a transaction. Chia adds a transaction block about every 52 seconds on average, so polling every 10 to 30 seconds is enough and stays well within the rate limits. API-key clients can also subscribe to walletUpdated and read the transaction again when the vault changes; the authentication section shows how to connect.
Remove an unsent transaction
deleteTransaction removes a transaction in the UNSIGNED, SIGNED, or INVALID state from the vault's history and cancels its signature request. A transaction that has been submitted cannot be deleted, and the mutation fails with Transaction has been submitted, it can not be deleted. A deleted transaction reappears if it later confirms on chain.
Clawback transactions
Set clawback.timestamp on CreateTransactionInput to send a clawback transaction. Until that time, the sender can reclaim the funds. Read WalletTransaction.clawbackState to see which action the sender can take:
clawBackTransactionreturns the funds to the sender whilecanClawbackistrue, which ends when the timer expires.finalizeTransactionpushes the funds to the recipient. Before the timer expires this requirescanFinalize; afterward it requirescanPushThrough.
Both create a new signature request and default to autoSubmit: false.
Signature requests
Every operation that spends from a vault, including transfers, offers, NFT mints, and clawback actions, returns a SignatureRequest instead of sending anything. Cloud Wallet never signs on a vault's behalf. The vault's signers produce the signatures, and Cloud Wallet verifies them, aggregates them, and submits the spend.
Signature request statuses
UNSIGNED → SIGNED → SUBMITTED
↘ ↘
CANCELLED ← (transaction deleted or invalidated)
SignatureRequest.status is a string with one of these values:
| Status | Meaning |
|---|---|
AWAITING_REVIEW |
Waiting for a recovery provider to review it. It cannot be signed yet |
UNSIGNED |
Collecting signatures. Partial signatures accumulate while the request stays in this status |
SIGNED |
Every required signature is collected, and the spend has not been submitted |
SUBMITTED |
Submitted to the network. Follow the linked transaction for confirmation |
CANCELLED |
The transaction was deleted or became invalid. The request can no longer be signed or submitted |
PROCESSING |
Reserved; no current flow sets it. Do not submit a request in this status; read it again later |
SUBMITTED means the network accepted the spend into its mempool, not that it confirmed. Confirmation is reported on SignatureRequest.transaction.state, as described in the vaults and transactions section.
A vault spend needs signatures from as many signers as the vault's custody policy requires, which can be fewer than all of them. Cloud Wallet moves the request to SIGNED as soon as the policy is satisfied.
Find requests to sign
Every mutation that creates a request returns its ID. To find requests created elsewhere, list the vault's pinnedTransactions, which holds unsigned transactions and rejected ones you can retry, and read each transaction's signatureRequest:
query PendingSignatureRequests($walletId: ID!) {
wallet(id: $walletId) {
pinnedTransactions(first: 20) {
edges {
node {
id
type
signatureRequest {
id
status
}
}
}
}
}
}
API-key clients can also subscribe to signatureRequestCreated, as described under signing.
Sign a request
Read the messages the request needs signed:
query SignatureRequestMessages($id: ID!) {
signatureRequest(id: $id) {
id
status
autoSubmit
messages {
curve
publicKey
message
}
}
}
Each entry names a public key and the message that key must sign. Sign each message with the matching private key outside Cloud Wallet, for example in the Chia Signer app or your own key management system. Then send each signature with signSignatureRequest:
mutation SignSignatureRequest($input: SignSignatureRequestInput!) {
signSignatureRequest(input: $input) {
signatureRequest {
id
status
}
}
}
{
"input": {
"signatureRequestId": "SignatureRequest_<cuid>",
"publicKey": "<hex public key from messages>",
"message": "<hex message from messages>",
"signature": "<hex signature>"
}
}
publicKeyandmessagemust match an entry inmessagesexactly. Send one call per entry you sign.- The caller needs sign permission on the vault. Signing does not require the same identity that created the request.
Produce a signature
The entry's curve names the signature scheme. Every value is hexadecimal: decode message to bytes before signing, and hex-encode the signature you send.
curve |
Sign | signature value |
|---|---|---|
BLS12_381 |
The message bytes, with the augmented scheme (AugSchemeMPL) |
The 96-byte G2 signature |
SECP256R1 |
The message bytes, with ECDSA over P-256 and SHA-256 | The 64-byte r and s values, or a DER signature |
WEBAUTHN |
A WebAuthn assertion whose challenge is derived from the message | A JSON document, UTF-8 encoded and then hex-encoded |
For BLS12_381, sign exactly the bytes of message. It already contains the coin and network data that Chia's AGG_SIG conditions require, so do not hash it or append anything. AugSchemeMPL.sign in the chia_rs or blspy libraries produces the expected signature.
For SECP256R1, the key is a 33-byte compressed public key. Sign the message with the SHA-256 digest, as standard ECDSA libraries do by default; do not hash it yourself first.
For WEBAUTHN, request an assertion from the authenticator with the challenge set to the SHA-256 digest of the message bytes. If the message is already 32 bytes, treat it as a digest and use it as the challenge unchanged. Pass the challenge as bytes, for example to navigator.credentials.get; the browser writes it into clientDataJSON as base64url, which Cloud Wallet checks. Then send this JSON document, UTF-8 encoded and hex-encoded, as signature:
{
"authenticatorData": "<hex authenticatorData from the assertion>",
"clientDataJSON": "<hex clientDataJSON from the assertion>",
"signature": "<hex signature from the assertion>"
}
The Curve enum also lists SECP256K1, but vaults cannot spend with secp256k1 keys.
A signature that does not verify fails with BAD_USER_INPUT and a message such as bls12-381 signature does not verify.
API-key clients can subscribe to signatureRequestCreated and signatureRequestUpdated to learn when a request needs a signature or changes status. resendSignatureRequest notifies the signers again while the request is UNSIGNED.
Submission and autoSubmit
autoSubmit decides what happens when the last required signature arrives:
autoSubmit |
After the last signature |
|---|---|
true |
Cloud Wallet submits the spend in the same signSignatureRequest call. The request moves to SUBMITTED |
false |
The request stays SIGNED until you call submitSignatureRequest |
Each mutation that creates a request documents its autoSubmit default, and the defaults differ; see the conventions section. The request's autoSubmit field records the value in effect.
With autoSubmit: false, submit the fully signed request yourself:
mutation SubmitSignatureRequest($input: SubmitSignatureRequestInput!) {
submitSignatureRequest(input: $input) {
signatureRequest {
id
status
transaction {
id
state
}
}
}
}
{
"input": {
"signatureRequestId": "SignatureRequest_<cuid>"
}
}
Submitting a request in any status other than SIGNED fails with Signature request is not in the correct state to be submitted. A request whose time lock has passed fails with This transaction has expired and is no longer valid.
When automatic submission fails
If the final signature is accepted but automatic submission fails, the signSignatureRequest call returns an AUTO_SUBMIT_FAILED error. The signature is still stored and the request is SIGNED. Check extensions.retryable on the error:
true: the failure may be temporary. Retry withsubmitSignatureRequest.false: the network rejected the spend. Cloud Wallet cancels the request, and the transaction moves toINVALID. Create a new transaction.
Offers
An offer is a partially signed trade that anyone holding it can accept on chain. It trades XCH, CATs, and NFTs without a counterparty or exchange in between. Offers travel as bech32m strings beginning with offer1.
Create an offer
createOffer describes what the vault gives and what it wants in return. Amounts are in mojos, and an omitted assetHash means XCH. This input offers 1 XCH for 100 units of a CAT:
mutation CreateOffer($input: CreateOfferInput!) {
createOffer(input: $input) {
signatureRequest {
id
status
}
}
}
{
"input": {
"walletId": "Wallet_<cuid>",
"offered": [{ "amount": "1000000000000" }],
"requested": [{ "assetHash": "<64-character-cat-tail-hash>", "amount": "100000" }],
"fee": "0",
"expiresAt": "2026-12-31T00:00:00Z"
}
}
To trade NFTs, list their 64-character hexadecimal launcher IDs in offeredNftIds or requestedNftIds. offered and requested are still required; pass [] for a side that has no XCH or CATs.
The mutation returns a signature request, not the offer string. Sign it as described in the signature requests section. When the last signature arrives, Cloud Wallet records the offer and moves the request to SUBMITTED. Nothing is sent to the network: a created offer stays off chain until someone takes it or you cancel it on chain.
fee is included in the offer's own spend, so it is paid when the offer settles, not when you create it. splitInputCoinsFee pays for the coin split described next.
With splitInputCoins: true, Cloud Wallet splits the vault's coins first when that is needed for the offer to reserve only the offered amount. The signature request then covers that coin split, which is sent to the network, and autoSubmit works as it does for a transfer: with false, the request stays SIGNED until you call submitSignatureRequest. The offer is recorded when the request is signed in both cases.
Read the offer string from the request's transaction once it is signed:
query CreatedOffer($id: ID!) {
signatureRequest(id: $id) {
status
transaction {
offer {
id
offerId
bech32
state
settlementType
}
}
}
}
Share bech32 with the counterparty. Keep offerId, which cancelOffer needs, and id, which reads the offer again with walletOffer. The vault's offered coins stay reserved, and are excluded from its spendable balance, until the offer settles, expires, or is cancelled.
Take an offer
Taking an offer string you received has two steps. First import it into the vault that will take it with addOffer, which returns the offer's details without committing to anything:
mutation ImportOffer($input: AddOfferInput!) {
addOffer(input: $input) {
offer {
id
offerId
state
expiresAt
assets(first: 10) {
totalCount
}
}
}
}
{
"input": {
"walletId": "Wallet_<cuid>",
"offer": "offer1..."
}
}
Inspect the imported offer before accepting it. Then pass its offerId, in Offer_<hex> format, to takeOffer:
mutation TakeOffer($input: TakeOfferInput!) {
takeOffer(input: $input) {
signatureRequest {
id
status
}
}
}
{
"input": {
"walletId": "Wallet_<cuid>",
"offerId": "Offer_<hex>",
"fee": "0",
"autoSubmit": true
}
}
takeOffer defaults to autoSubmit: false, so without the explicit true above the request waits in SIGNED for submitSignatureRequest. An offer in an outdated format fails with UNSUPPORTED_OFFER.
Cancel an offer
cancelOffer cancels an offer the vault created, in one of two ways:
| Option | Effect | Returns |
|---|---|---|
| On chain (default) | Spends the offered coins so the offer can never be taken. Costs a transaction and the fee you set |
A signature request |
cancelOffChain: true |
Marks the offer cancelled in Cloud Wallet. Anyone who already has the offer string can still take it | null signature request |
An off-chain cancellation also releases the reservation, so the offered coins count as spendable again. Until those coins are spent, the offer can still be taken. When a later transaction spends them, the offer can no longer settle.
Cancel on chain whenever the offer string has left your system. An on-chain cancellation defaults to autoSubmit: false.
mutation CancelOffer($input: CancelOfferInput!) {
cancelOffer(input: $input) {
signatureRequest {
id
status
}
}
}
{
"input": {
"walletId": "Wallet_<cuid>",
"offerId": "Offer_<hex>",
"fee": "0",
"autoSubmit": true
}
}
Offer states
An offer has two status fields. Both are strings with the values below.
state describes the offer on chain, and is the same for every vault that holds it:
| State | Meaning |
|---|---|
PENDING |
The offer's input coins are still being prepared |
OPEN |
The offer can be taken |
MEMPOOL |
A take or cancellation is waiting to be included in a block |
SETTLED |
The offer's coins were spent on chain; settlementType says how |
RE_ORG |
A chain reorganization removed the settling block |
EXPIRED |
expiresAt passed before the offer was taken |
INVALID |
The offer can no longer be taken, for example because its coins were spent |
settlementType describes the outcome for your vault:
| Settlement type | Meaning |
|---|---|
UNSIGNED |
Your vault's take is not fully signed |
PENDING_CONFIRMATION |
Your vault's take was submitted and is waiting to confirm |
PENDING_CANCELLATION |
Your vault's on-chain cancellation is waiting to confirm |
CONFIRMED |
The trade completed: your vault's offer was taken, or your vault's take settled it |
CANCELLED |
The creator cancelled the offer on chain, or your vault cancelled it in Cloud Wallet |
TAKEN_BY_OTHERS |
Your vault imported or tried to take the offer, and another party took it first |
settlementType is null while your vault's own offer is open, and on an imported offer your vault has not acted on. List a vault's offers with the offers connection on Wallet, filtered by states or settlementTypes, and read one with walletOffer. API-key clients can subscribe to offerUpdated.
NFTs
Mint NFTs
bulkMintNfts requires nft.create permission for the source vault. The vault needs one XCH mojo per NFT plus the fee. Hashes are SHA-256 values encoded as 64 hexadecimal characters. URI arrays must contain a valid first URL.
mutation MintNfts($input: BulkMintNftsInput!) {
bulkMintNfts(input: $input) {
nftIds
airdropId
signatureRequest {
id
status
}
}
}
{
"input": {
"walletId": "Wallet_<cuid>",
"fee": "0",
"autoSubmit": true,
"mints": [
{
"dataHash": "<64-character-sha256>",
"dataUris": ["https://example.com/nft.png"],
"metadataHash": "<64-character-sha256>",
"metadataUris": ["https://example.com/metadata.json"],
"royaltyBasisPoints": 0
}
]
}
}
Omit ownerAddress to mint to the source vault. Omit edition fields for a one-of-one NFT. The mutation returns deterministic NFT launcher IDs and a signature request; it does not bypass the vault's signer policy. The signature request then follows the lifecycle in the signature requests section.
Transfer NFTs
transferNfts sends one or more NFTs from a vault, each to its own address. It requires transfer.create permission for the vault and defaults to autoSubmit: false. Identify each NFT by its launcher ID, the 64-character hexadecimal launcherId on the vault's nfts connection.
mutation TransferNfts($input: TransferNftsInput!) {
transferNfts(input: $input) {
signatureRequest {
id
status
}
}
}
{
"input": {
"walletId": "Wallet_<cuid>",
"transfers": [{ "launcherId": "<64-character-launcher-id>", "address": "xch1..." }],
"fee": "0",
"autoSubmit": true
}
}
Account & Access
Queries
oauthConsentedWallets
Description
Wallets the current OAuth client has been granted access to for the authenticated user. Only wallets with a usable receive address are returned. Intended for OAuth clients that cannot enumerate viewer.wallets.
Response
Returns [Wallet!]!
Example
Query
query oauthConsentedWallets {
oauthConsentedWallets {
address {
...PuzzleHashFragment
}
addresses {
...WalletAddressesConnectionFragment
}
airdrops {
...WalletAirdropsConnectionFragment
}
asset {
...WalletAssetFragment
}
assets {
...WalletAssetsConnectionFragment
}
balance
canViewerAcceptOffer
canViewerCreateAirdrop
canViewerCreateAsset
canViewerCreateBroadcastMessage
canViewerCreateNft
canViewerCreateOffer
canViewerCreateTransfer
canViewerDelete
canViewerRecover
canViewerUpdate
createdAt
custodyConfig {
...WalletCustodyConfigFragment
}
grantableOAuthScopes
hasMintedAssets
hasReceiveAddress
id
messages {
...WalletMessagesConnectionFragment
}
name
needsConfigDownload
nfts {
...WalletNftsConnectionFragment
}
offers {
...WalletOffersConnectionFragment
}
pinnedTransactions {
...WalletPinnedTransactionsConnectionFragment
}
platformSubscriptions {
...WalletPlatformSubscriptionsConnectionFragment
}
recoveryEligibility {
...RecoveryEligibilityFragment
}
recoveryState
settings {
...WalletSettingsFragment
}
signerType
signers {
...WalletSignersConnectionFragment
}
state
transactions {
...WalletTransactionsConnectionFragment
}
updatedAt
user {
...UserFragment
}
vaultAddresses {
...VaultAddressFragment
}
vaultRecoveries {
...WalletVaultRecoveriesConnectionFragment
}
vaultRecovery {
...VaultRecoveryFragment
}
vaultRecoveryProvider {
...RecoveryProviderPublicFragment
}
vaultRecoverySigners {
...WalletVaultRecoverySignersConnectionFragment
}
walletSubscriptions {
...WalletWalletSubscriptionsConnectionFragment
}
}
}
Response
{
"data": {
"oauthConsentedWallets": [
{
"address": PuzzleHash,
"addresses": WalletAddressesConnection,
"airdrops": WalletAirdropsConnection,
"asset": WalletAsset,
"assets": WalletAssetsConnection,
"balance": {},
"canViewerAcceptOffer": false,
"canViewerCreateAirdrop": true,
"canViewerCreateAsset": true,
"canViewerCreateBroadcastMessage": false,
"canViewerCreateNft": false,
"canViewerCreateOffer": false,
"canViewerCreateTransfer": true,
"canViewerDelete": false,
"canViewerRecover": true,
"canViewerUpdate": false,
"createdAt": "xyz789",
"custodyConfig": WalletCustodyConfig,
"grantableOAuthScopes": ["abc123"],
"hasMintedAssets": false,
"hasReceiveAddress": false,
"id": "4",
"messages": WalletMessagesConnection,
"name": "abc123",
"needsConfigDownload": false,
"nfts": WalletNftsConnection,
"offers": WalletOffersConnection,
"pinnedTransactions": WalletPinnedTransactionsConnection,
"platformSubscriptions": WalletPlatformSubscriptionsConnection,
"recoveryEligibility": RecoveryEligibility,
"recoveryState": "AWAITING_REVIEW",
"settings": WalletSettings,
"signerType": "MIXED_MULTISIG",
"signers": WalletSignersConnection,
"state": "READY",
"transactions": WalletTransactionsConnection,
"updatedAt": "xyz789",
"user": User,
"vaultAddresses": [VaultAddress],
"vaultRecoveries": WalletVaultRecoveriesConnection,
"vaultRecovery": VaultRecovery,
"vaultRecoveryProvider": RecoveryProviderPublic,
"vaultRecoverySigners": WalletVaultRecoverySignersConnection,
"walletSubscriptions": WalletWalletSubscriptionsConnection
}
]
}
}
oAuthConsentedWallets
Description
Wallets the current OAuth client has been granted access to for the authenticated user. Only wallets with a usable receive address are returned. Intended for OAuth clients that cannot enumerate viewer.wallets.
Response
Returns [Wallet!]!
Example
Query
query oAuthConsentedWallets {
oAuthConsentedWallets {
address {
...PuzzleHashFragment
}
addresses {
...WalletAddressesConnectionFragment
}
airdrops {
...WalletAirdropsConnectionFragment
}
asset {
...WalletAssetFragment
}
assets {
...WalletAssetsConnectionFragment
}
balance
canViewerAcceptOffer
canViewerCreateAirdrop
canViewerCreateAsset
canViewerCreateBroadcastMessage
canViewerCreateNft
canViewerCreateOffer
canViewerCreateTransfer
canViewerDelete
canViewerRecover
canViewerUpdate
createdAt
custodyConfig {
...WalletCustodyConfigFragment
}
grantableOAuthScopes
hasMintedAssets
hasReceiveAddress
id
messages {
...WalletMessagesConnectionFragment
}
name
needsConfigDownload
nfts {
...WalletNftsConnectionFragment
}
offers {
...WalletOffersConnectionFragment
}
pinnedTransactions {
...WalletPinnedTransactionsConnectionFragment
}
platformSubscriptions {
...WalletPlatformSubscriptionsConnectionFragment
}
recoveryEligibility {
...RecoveryEligibilityFragment
}
recoveryState
settings {
...WalletSettingsFragment
}
signerType
signers {
...WalletSignersConnectionFragment
}
state
transactions {
...WalletTransactionsConnectionFragment
}
updatedAt
user {
...UserFragment
}
vaultAddresses {
...VaultAddressFragment
}
vaultRecoveries {
...WalletVaultRecoveriesConnectionFragment
}
vaultRecovery {
...VaultRecoveryFragment
}
vaultRecoveryProvider {
...RecoveryProviderPublicFragment
}
vaultRecoverySigners {
...WalletVaultRecoverySignersConnectionFragment
}
walletSubscriptions {
...WalletWalletSubscriptionsConnectionFragment
}
}
}
Response
{
"data": {
"oAuthConsentedWallets": [
{
"address": PuzzleHash,
"addresses": WalletAddressesConnection,
"airdrops": WalletAirdropsConnection,
"asset": WalletAsset,
"assets": WalletAssetsConnection,
"balance": {},
"canViewerAcceptOffer": true,
"canViewerCreateAirdrop": false,
"canViewerCreateAsset": true,
"canViewerCreateBroadcastMessage": false,
"canViewerCreateNft": true,
"canViewerCreateOffer": false,
"canViewerCreateTransfer": true,
"canViewerDelete": false,
"canViewerRecover": false,
"canViewerUpdate": false,
"createdAt": "abc123",
"custodyConfig": WalletCustodyConfig,
"grantableOAuthScopes": ["abc123"],
"hasMintedAssets": true,
"hasReceiveAddress": true,
"id": 4,
"messages": WalletMessagesConnection,
"name": "xyz789",
"needsConfigDownload": true,
"nfts": WalletNftsConnection,
"offers": WalletOffersConnection,
"pinnedTransactions": WalletPinnedTransactionsConnection,
"platformSubscriptions": WalletPlatformSubscriptionsConnection,
"recoveryEligibility": RecoveryEligibility,
"recoveryState": "AWAITING_REVIEW",
"settings": WalletSettings,
"signerType": "MIXED_MULTISIG",
"signers": WalletSignersConnection,
"state": "READY",
"transactions": WalletTransactionsConnection,
"updatedAt": "abc123",
"user": User,
"vaultAddresses": [VaultAddress],
"vaultRecoveries": WalletVaultRecoveriesConnection,
"vaultRecovery": VaultRecovery,
"vaultRecoveryProvider": RecoveryProviderPublic,
"vaultRecoverySigners": WalletVaultRecoverySignersConnection,
"walletSubscriptions": WalletWalletSubscriptionsConnection
}
]
}
}
oauthScopes
Description
Returns the resource permissions available for third-party OAuth consent.
Response
Returns a QueryOauthScopesConnection!
Example
Query
query oauthScopes(
$after: String,
$before: String,
$first: Int,
$last: Int
) {
oauthScopes(
after: $after,
before: $before,
first: $first,
last: $last
) {
edges {
...QueryOauthScopesConnectionEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "xyz789",
"before": "xyz789",
"first": 123,
"last": 123
}
Response
{
"data": {
"oauthScopes": {
"edges": [QueryOauthScopesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
oAuthScopes
Description
Returns the resource permissions available for third-party OAuth consent.
Response
Returns a QueryOAuthScopesConnection!
Example
Query
query oAuthScopes(
$after: String,
$before: String,
$first: Int,
$last: Int
) {
oAuthScopes(
after: $after,
before: $before,
first: $first,
last: $last
) {
edges {
...QueryOAuthScopesConnectionEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "xyz789",
"before": "xyz789",
"first": 123,
"last": 987
}
Response
{
"data": {
"oAuthScopes": {
"edges": [QueryOAuthScopesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
}
}
organization
Description
Returns an organization.
Response
Returns an Organization
Arguments
| Name | Description |
|---|---|
id - ID!
|
Organization global ID (Organization_<cuid>). |
Example
Query
query organization($id: ID!) {
organization(id: $id) {
canViewerCreateApiKeys
canViewerCreateUsers
canViewerDelete
canViewerReadOAuthClients
canViewerReadRecoveryReviews
canViewerReadUsers
canViewerUpdate
canViewerWriteOAuthClients
contacts {
...OrganizationContactsConnectionFragment
}
createdAt
featureFlags {
...FeatureFlagFragment
}
grantableOAuthScopes
id
name
plan {
...PlanFragment
}
recoveryProviders {
...RecoveryProviderPublicFragment
}
sessionDuration
updatedAt
userAuthKeys {
...OrganizationUserAuthKeysConnectionFragment
}
users {
...OrganizationUsersConnectionFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"organization": {
"canViewerCreateApiKeys": true,
"canViewerCreateUsers": true,
"canViewerDelete": false,
"canViewerReadOAuthClients": false,
"canViewerReadRecoveryReviews": true,
"canViewerReadUsers": false,
"canViewerUpdate": false,
"canViewerWriteOAuthClients": false,
"contacts": OrganizationContactsConnection,
"createdAt": "xyz789",
"featureFlags": [FeatureFlag],
"grantableOAuthScopes": ["abc123"],
"id": 4,
"name": "abc123",
"plan": Plan,
"recoveryProviders": [RecoveryProviderPublic],
"sessionDuration": 123,
"updatedAt": "xyz789",
"userAuthKeys": OrganizationUserAuthKeysConnection,
"users": OrganizationUsersConnection
}
}
}
user
Description
Returns a user matching the supplied ID or signer public key.
Response
Returns a User
Example
Query
query user(
$id: ID,
$publicKey: Bytea
) {
user(
id: $id,
publicKey: $publicKey
) {
buyLimitOverride
canViewerCreateBuyOrder
canViewerCreatePlatformOAuthClients
canViewerDelete
canViewerReadOAuthReviews
canViewerSubmitSupportTicket
canViewerUpdate
contacts {
...UserContactsConnectionFragment
}
createdAt
deactivatedAt
deactivatedBy {
...UserFragment
}
deactivationNotes
deactivationReason
email
emailChangeInProgress {
...UserEmailChangeTokenFragment
}
emailUpdatedAt
grantableOAuthScopes
hasDisputedPaymentMethod
hasExceededMaxVerificationAttempts
hasVaultNeedingConfigDownload
id
identityVerificationFailedAttempts
identityVerificationStatus
identityVerifiedAt
isViewer
issuedAssets {
...UserIssuedAssetsConnectionFragment
}
messages {
...UserMessagesConnectionFragment
}
name
nfts {
...UserNftsConnectionFragment
}
offers {
...UserOffersConnectionFragment
}
organization {
...OrganizationFragment
}
passkeyCounts {
...PasskeyCountsFragment
}
passkeys {
...UserPasskeysConnectionFragment
}
passwordExpiresAt
paymentMethodUserLimits {
...PaymentMethodUserLimitFragment
}
platformPermissions
purchaseProgramState
role
signerAppKeys {
...UserSignerAppKeysConnectionFragment
}
signers {
...UserSignersConnectionFragment
}
status
supportTickets {
...SupportTicketConnectionFragment
}
temporaryFeatureFlags {
...FeatureFlagFragment
}
unsignedOfferSignatureRequests {
...UserUnsignedOfferSignatureRequestsConnectionFragment
}
updatedAt
userAdditionalEmails {
...UserAdditionalEmailFragment
}
userAuthKeys {
...UserUserAuthKeysConnectionFragment
}
userTokens {
...UserUserTokensConnectionFragment
}
vaultConfigTemplates {
...UserVaultConfigTemplatesConnectionFragment
}
wallets {
...UserWalletsConnectionFragment
}
}
}
Variables
{"id": 4, "publicKey": Bytea}
Response
{
"data": {
"user": {
"buyLimitOverride": 987,
"canViewerCreateBuyOrder": false,
"canViewerCreatePlatformOAuthClients": false,
"canViewerDelete": true,
"canViewerReadOAuthReviews": true,
"canViewerSubmitSupportTicket": false,
"canViewerUpdate": true,
"contacts": UserContactsConnection,
"createdAt": "xyz789",
"deactivatedAt": "abc123",
"deactivatedBy": User,
"deactivationNotes": "xyz789",
"deactivationReason": "FRAUD_SUSPICIOUS_ACTIVITY",
"email": "xyz789",
"emailChangeInProgress": UserEmailChangeToken,
"emailUpdatedAt": "xyz789",
"grantableOAuthScopes": ["abc123"],
"hasDisputedPaymentMethod": false,
"hasExceededMaxVerificationAttempts": false,
"hasVaultNeedingConfigDownload": false,
"id": 4,
"identityVerificationFailedAttempts": 987,
"identityVerificationStatus": "FAILED",
"identityVerifiedAt": "abc123",
"isViewer": true,
"issuedAssets": UserIssuedAssetsConnection,
"messages": UserMessagesConnection,
"name": "xyz789",
"nfts": UserNftsConnection,
"offers": UserOffersConnection,
"organization": Organization,
"passkeyCounts": PasskeyCounts,
"passkeys": UserPasskeysConnection,
"passwordExpiresAt": "abc123",
"paymentMethodUserLimits": [PaymentMethodUserLimit],
"platformPermissions": ["PLATFORM_ANNOUNCEMENT_DELETE"],
"purchaseProgramState": "HALTED",
"role": "FINANCE_ADMIN",
"signerAppKeys": UserSignerAppKeysConnection,
"signers": UserSignersConnection,
"status": "ACTIVE",
"supportTickets": SupportTicketConnection,
"temporaryFeatureFlags": [FeatureFlag],
"unsignedOfferSignatureRequests": UserUnsignedOfferSignatureRequestsConnection,
"updatedAt": "abc123",
"userAdditionalEmails": [UserAdditionalEmail],
"userAuthKeys": UserUserAuthKeysConnection,
"userTokens": UserUserTokensConnection,
"vaultConfigTemplates": UserVaultConfigTemplatesConnection,
"wallets": UserWalletsConnection
}
}
}
userAuthKey
Description
Returns a user authentication key.
Response
Returns a UserAuthKey
Arguments
| Name | Description |
|---|---|
id - ID!
|
User authentication key global ID (UserAuthKey_<cuid>). |
Example
Query
query userAuthKey($id: ID!) {
userAuthKey(id: $id) {
canViewerDelete
canViewerUpdate
createdAt
createdBy {
...UserFragment
}
expiresAt
id
lastUsedAt
name
privateKey
publicKey
user {
...UserFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"userAuthKey": {
"canViewerDelete": false,
"canViewerUpdate": true,
"createdAt": "xyz789",
"createdBy": User,
"expiresAt": "xyz789",
"id": "4",
"lastUsedAt": "xyz789",
"name": "abc123",
"privateKey": "abc123",
"publicKey": "abc123",
"user": User
}
}
}
viewer
Description
Returns the authenticated user, or null for an unauthenticated request.
Response
Returns a User
Example
Query
query viewer {
viewer {
buyLimitOverride
canViewerCreateBuyOrder
canViewerCreatePlatformOAuthClients
canViewerDelete
canViewerReadOAuthReviews
canViewerSubmitSupportTicket
canViewerUpdate
contacts {
...UserContactsConnectionFragment
}
createdAt
deactivatedAt
deactivatedBy {
...UserFragment
}
deactivationNotes
deactivationReason
email
emailChangeInProgress {
...UserEmailChangeTokenFragment
}
emailUpdatedAt
grantableOAuthScopes
hasDisputedPaymentMethod
hasExceededMaxVerificationAttempts
hasVaultNeedingConfigDownload
id
identityVerificationFailedAttempts
identityVerificationStatus
identityVerifiedAt
isViewer
issuedAssets {
...UserIssuedAssetsConnectionFragment
}
messages {
...UserMessagesConnectionFragment
}
name
nfts {
...UserNftsConnectionFragment
}
offers {
...UserOffersConnectionFragment
}
organization {
...OrganizationFragment
}
passkeyCounts {
...PasskeyCountsFragment
}
passkeys {
...UserPasskeysConnectionFragment
}
passwordExpiresAt
paymentMethodUserLimits {
...PaymentMethodUserLimitFragment
}
platformPermissions
purchaseProgramState
role
signerAppKeys {
...UserSignerAppKeysConnectionFragment
}
signers {
...UserSignersConnectionFragment
}
status
supportTickets {
...SupportTicketConnectionFragment
}
temporaryFeatureFlags {
...FeatureFlagFragment
}
unsignedOfferSignatureRequests {
...UserUnsignedOfferSignatureRequestsConnectionFragment
}
updatedAt
userAdditionalEmails {
...UserAdditionalEmailFragment
}
userAuthKeys {
...UserUserAuthKeysConnectionFragment
}
userTokens {
...UserUserTokensConnectionFragment
}
vaultConfigTemplates {
...UserVaultConfigTemplatesConnectionFragment
}
wallets {
...UserWalletsConnectionFragment
}
}
}
Response
{
"data": {
"viewer": {
"buyLimitOverride": 123,
"canViewerCreateBuyOrder": true,
"canViewerCreatePlatformOAuthClients": false,
"canViewerDelete": true,
"canViewerReadOAuthReviews": false,
"canViewerSubmitSupportTicket": true,
"canViewerUpdate": false,
"contacts": UserContactsConnection,
"createdAt": "abc123",
"deactivatedAt": "abc123",
"deactivatedBy": User,
"deactivationNotes": "abc123",
"deactivationReason": "FRAUD_SUSPICIOUS_ACTIVITY",
"email": "xyz789",
"emailChangeInProgress": UserEmailChangeToken,
"emailUpdatedAt": "xyz789",
"grantableOAuthScopes": ["abc123"],
"hasDisputedPaymentMethod": false,
"hasExceededMaxVerificationAttempts": false,
"hasVaultNeedingConfigDownload": true,
"id": 4,
"identityVerificationFailedAttempts": 123,
"identityVerificationStatus": "FAILED",
"identityVerifiedAt": "xyz789",
"isViewer": true,
"issuedAssets": UserIssuedAssetsConnection,
"messages": UserMessagesConnection,
"name": "xyz789",
"nfts": UserNftsConnection,
"offers": UserOffersConnection,
"organization": Organization,
"passkeyCounts": PasskeyCounts,
"passkeys": UserPasskeysConnection,
"passwordExpiresAt": "xyz789",
"paymentMethodUserLimits": [PaymentMethodUserLimit],
"platformPermissions": ["PLATFORM_ANNOUNCEMENT_DELETE"],
"purchaseProgramState": "HALTED",
"role": "FINANCE_ADMIN",
"signerAppKeys": UserSignerAppKeysConnection,
"signers": UserSignersConnection,
"status": "ACTIVE",
"supportTickets": SupportTicketConnection,
"temporaryFeatureFlags": [FeatureFlag],
"unsignedOfferSignatureRequests": UserUnsignedOfferSignatureRequestsConnection,
"updatedAt": "abc123",
"userAdditionalEmails": [UserAdditionalEmail],
"userAuthKeys": UserUserAuthKeysConnection,
"userTokens": UserUserTokensConnection,
"vaultConfigTemplates": UserVaultConfigTemplatesConnection,
"wallets": UserWalletsConnection
}
}
}
Wallets & Vaults
Queries
vaultConfigDownload
Description
Returns a wallet vault configuration as a base64-encoded JSON file.
Response
Returns a VaultConfigDownloadPayload!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Wallet global ID (Wallet_<cuid>). |
Example
Query
query vaultConfigDownload($id: ID!) {
vaultConfigDownload(id: $id) {
content
filename
mimeType
}
}
Variables
{"id": 4}
Response
{
"data": {
"vaultConfigDownload": {
"content": "abc123",
"filename": "xyz789",
"mimeType": "xyz789"
}
}
}
vaultConfigTemplate
Description
Returns a vault configuration template.
Response
Returns a VaultConfigTemplate
Arguments
| Name | Description |
|---|---|
id - ID!
|
Vault configuration template global ID (VaultConfigTemplate_<cuid>). |
Example
Query
query vaultConfigTemplate($id: ID!) {
vaultConfigTemplate(id: $id) {
createdAt
creator {
...UserFragment
}
custodyKeysAddedCount
grantableOAuthScopes
id
isViewerCreator
otherSigners {
...VaultConfigTemplateOtherSignerFragment
}
recoveryKeysAddedCount
recoveryProvider {
...RecoveryProviderPublicFragment
}
recoveryTimelock
requiredCustodySigners
requiredRecoverySigners
totalCustodySigners
totalRecoverySigners
updatedAt
vaultName
viewerSigners {
...VaultConfigTemplateSignerFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"vaultConfigTemplate": {
"createdAt": "xyz789",
"creator": User,
"custodyKeysAddedCount": 123,
"grantableOAuthScopes": ["xyz789"],
"id": "4",
"isViewerCreator": true,
"otherSigners": [VaultConfigTemplateOtherSigner],
"recoveryKeysAddedCount": 987,
"recoveryProvider": RecoveryProviderPublic,
"recoveryTimelock": 987,
"requiredCustodySigners": 123,
"requiredRecoverySigners": 123,
"totalCustodySigners": 987,
"totalRecoverySigners": 123,
"updatedAt": "abc123",
"vaultName": "abc123",
"viewerSigners": [VaultConfigTemplateSigner]
}
}
}
vaultLauncherIdForAddress
Description
Find the launcher ID of the on-chain vault that owns a receive address, to restore it with restoreVaultFromChain. Works once the vault has sent funds from that address.
Response
Returns a String!
Arguments
| Name | Description |
|---|---|
address - String!
|
A receive address of the vault on this network |
Example
Query
query vaultLauncherIdForAddress($address: String!) {
vaultLauncherIdForAddress(address: $address)
}
Variables
{"address": "abc123"}
Response
{
"data": {
"vaultLauncherIdForAddress": "abc123"
}
}
vaultRecoveryReview
Description
Returns a vault recovery review.
Response
Returns a VaultRecoveryReview
Arguments
| Name | Description |
|---|---|
id - ID!
|
Vault recovery review global ID (VaultRecoveryReview_<cuid>). |
Example
Query
query vaultRecoveryReview($id: ID!) {
vaultRecoveryReview(id: $id) {
approvalReason
beforeAfterData {
...BeforeAfterDataFragment
}
createdAt
id
initiator {
...VaultRecoveryReviewInitiatorFragment
}
reason
recoveryHistory {
...VaultRecoveryReviewFragment
}
recoveryProvider {
...RecoveryProviderFragment
}
rejectionReason
reviewedAt
reviewedByUser {
...VaultRecoveryReviewReviewerFragment
}
state
updatedAt
vaultRecovery {
...VaultRecoveryFragment
}
wallet {
...VaultRecoveryReviewWalletFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"vaultRecoveryReview": {
"approvalReason": "abc123",
"beforeAfterData": BeforeAfterData,
"createdAt": "xyz789",
"id": "4",
"initiator": VaultRecoveryReviewInitiator,
"reason": "abc123",
"recoveryHistory": [VaultRecoveryReview],
"recoveryProvider": RecoveryProvider,
"rejectionReason": "abc123",
"reviewedAt": "abc123",
"reviewedByUser": VaultRecoveryReviewReviewer,
"state": "APPROVED",
"updatedAt": "xyz789",
"vaultRecovery": VaultRecovery,
"wallet": VaultRecoveryReviewWallet
}
}
}
vaultRecoveryReviews
Description
Get vault recovery reviews that are associated to user's recovery providers
Response
Returns a QueryVaultRecoveryReviewsConnection!
Arguments
| Name | Description |
|---|---|
after - String
|
|
before - String
|
|
first - Int
|
|
last - Int
|
|
query - String
|
|
signatureRequestStatuses - [SignatureRequestStatus!]
|
Filter by signature request statuses (e.g., UNSIGNED for awaiting signature) |
sortKey - VaultRecoveryReviewsSortKey
|
Default = CREATED_AT |
states - [VaultRecoveryReviewState!]
|
Filter by multiple states |
Example
Query
query vaultRecoveryReviews(
$after: String,
$before: String,
$first: Int,
$last: Int,
$query: String,
$signatureRequestStatuses: [SignatureRequestStatus!],
$sortKey: VaultRecoveryReviewsSortKey,
$states: [VaultRecoveryReviewState!]
) {
vaultRecoveryReviews(
after: $after,
before: $before,
first: $first,
last: $last,
query: $query,
signatureRequestStatuses: $signatureRequestStatuses,
sortKey: $sortKey,
states: $states
) {
edges {
...QueryVaultRecoveryReviewsConnectionEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "xyz789",
"before": "abc123",
"first": 987,
"last": 987,
"query": "abc123",
"signatureRequestStatuses": ["AWAITING_REVIEW"],
"sortKey": "CREATED_AT",
"states": ["APPROVED"]
}
Response
{
"data": {
"vaultRecoveryReviews": {
"edges": [QueryVaultRecoveryReviewsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
wallet
Description
Returns a wallet.
Example
Query
query wallet($id: ID!) {
wallet(id: $id) {
address {
...PuzzleHashFragment
}
addresses {
...WalletAddressesConnectionFragment
}
airdrops {
...WalletAirdropsConnectionFragment
}
asset {
...WalletAssetFragment
}
assets {
...WalletAssetsConnectionFragment
}
balance
canViewerAcceptOffer
canViewerCreateAirdrop
canViewerCreateAsset
canViewerCreateBroadcastMessage
canViewerCreateNft
canViewerCreateOffer
canViewerCreateTransfer
canViewerDelete
canViewerRecover
canViewerUpdate
createdAt
custodyConfig {
...WalletCustodyConfigFragment
}
grantableOAuthScopes
hasMintedAssets
hasReceiveAddress
id
messages {
...WalletMessagesConnectionFragment
}
name
needsConfigDownload
nfts {
...WalletNftsConnectionFragment
}
offers {
...WalletOffersConnectionFragment
}
pinnedTransactions {
...WalletPinnedTransactionsConnectionFragment
}
platformSubscriptions {
...WalletPlatformSubscriptionsConnectionFragment
}
recoveryEligibility {
...RecoveryEligibilityFragment
}
recoveryState
settings {
...WalletSettingsFragment
}
signerType
signers {
...WalletSignersConnectionFragment
}
state
transactions {
...WalletTransactionsConnectionFragment
}
updatedAt
user {
...UserFragment
}
vaultAddresses {
...VaultAddressFragment
}
vaultRecoveries {
...WalletVaultRecoveriesConnectionFragment
}
vaultRecovery {
...VaultRecoveryFragment
}
vaultRecoveryProvider {
...RecoveryProviderPublicFragment
}
vaultRecoverySigners {
...WalletVaultRecoverySignersConnectionFragment
}
walletSubscriptions {
...WalletWalletSubscriptionsConnectionFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"wallet": {
"address": PuzzleHash,
"addresses": WalletAddressesConnection,
"airdrops": WalletAirdropsConnection,
"asset": WalletAsset,
"assets": WalletAssetsConnection,
"balance": {},
"canViewerAcceptOffer": true,
"canViewerCreateAirdrop": false,
"canViewerCreateAsset": false,
"canViewerCreateBroadcastMessage": false,
"canViewerCreateNft": true,
"canViewerCreateOffer": false,
"canViewerCreateTransfer": false,
"canViewerDelete": true,
"canViewerRecover": true,
"canViewerUpdate": true,
"createdAt": "xyz789",
"custodyConfig": WalletCustodyConfig,
"grantableOAuthScopes": ["xyz789"],
"hasMintedAssets": false,
"hasReceiveAddress": false,
"id": "4",
"messages": WalletMessagesConnection,
"name": "xyz789",
"needsConfigDownload": true,
"nfts": WalletNftsConnection,
"offers": WalletOffersConnection,
"pinnedTransactions": WalletPinnedTransactionsConnection,
"platformSubscriptions": WalletPlatformSubscriptionsConnection,
"recoveryEligibility": RecoveryEligibility,
"recoveryState": "AWAITING_REVIEW",
"settings": WalletSettings,
"signerType": "MIXED_MULTISIG",
"signers": WalletSignersConnection,
"state": "READY",
"transactions": WalletTransactionsConnection,
"updatedAt": "xyz789",
"user": User,
"vaultAddresses": [VaultAddress],
"vaultRecoveries": WalletVaultRecoveriesConnection,
"vaultRecovery": VaultRecovery,
"vaultRecoveryProvider": RecoveryProviderPublic,
"vaultRecoverySigners": WalletVaultRecoverySignersConnection,
"walletSubscriptions": WalletWalletSubscriptionsConnection
}
}
}
Mutations
addSignersToWallet
Description
Add signers to a wallet.
Response
Returns an AddSignersToWalletPayload!
Arguments
| Name | Description |
|---|---|
input - AddSignersToWalletInput!
|
Example
Query
mutation addSignersToWallet($input: AddSignersToWalletInput!) {
addSignersToWallet(input: $input) {
walletSigners {
...WalletSignerFragment
}
}
}
Variables
{"input": AddSignersToWalletInput}
Response
{
"data": {
"addSignersToWallet": {
"walletSigners": [WalletSigner]
}
}
}
approveVaultRecoveryReview
Description
Approve a vault recovery review request. Only reviews in PENDING state can be approved.
Response
Returns an ApproveVaultRecoveryReviewPayload!
Arguments
| Name | Description |
|---|---|
input - ApproveVaultRecoveryReviewInput!
|
Example
Query
mutation approveVaultRecoveryReview($input: ApproveVaultRecoveryReviewInput!) {
approveVaultRecoveryReview(input: $input) {
vaultRecoveryReview {
...VaultRecoveryReviewFragment
}
}
}
Variables
{"input": ApproveVaultRecoveryReviewInput}
Response
{
"data": {
"approveVaultRecoveryReview": {
"vaultRecoveryReview": VaultRecoveryReview
}
}
}
createVaultConfigTemplate
Description
Create a new vault configuration template
Response
Returns a CreateVaultConfigTemplatePayload!
Arguments
| Name | Description |
|---|---|
input - CreateVaultConfigTemplateInput!
|
Example
Query
mutation createVaultConfigTemplate($input: CreateVaultConfigTemplateInput!) {
createVaultConfigTemplate(input: $input) {
vaultConfigTemplate {
...VaultConfigTemplateFragment
}
}
}
Variables
{"input": CreateVaultConfigTemplateInput}
Response
{
"data": {
"createVaultConfigTemplate": {
"vaultConfigTemplate": VaultConfigTemplate
}
}
}
createVaultFromConfigTemplate
Description
Create a new vault based on an existing vault configuration template
Response
Returns a CreateVaultFromConfigTemplatePayload!
Arguments
| Name | Description |
|---|---|
input - CreateVaultFromConfigTemplateInput!
|
Example
Query
mutation createVaultFromConfigTemplate($input: CreateVaultFromConfigTemplateInput!) {
createVaultFromConfigTemplate(input: $input) {
wallet {
...WalletFragment
}
}
}
Variables
{"input": CreateVaultFromConfigTemplateInput}
Response
{
"data": {
"createVaultFromConfigTemplate": {"wallet": Wallet}
}
}
createWallet
Description
Create a wallet. Provide exactly one custody configuration. Vault wallets remain pending until their singleton is created on chain.
Response
Returns a CreateWalletPayload!
Arguments
| Name | Description |
|---|---|
input - CreateWalletInput!
|
Example
Query
mutation createWallet($input: CreateWalletInput!) {
createWallet(input: $input) {
wallet {
...WalletFragment
}
}
}
Variables
{"input": CreateWalletInput}
Response
{"data": {"createWallet": {"wallet": Wallet}}}
deleteVaultConfigTemplate
Description
Delete a vault configuration template
Response
Returns a DeleteVaultConfigTemplatePayload!
Arguments
| Name | Description |
|---|---|
input - DeleteVaultConfigTemplateInput!
|
Example
Query
mutation deleteVaultConfigTemplate($input: DeleteVaultConfigTemplateInput!) {
deleteVaultConfigTemplate(input: $input) {
success
}
}
Variables
{"input": DeleteVaultConfigTemplateInput}
Response
{"data": {"deleteVaultConfigTemplate": {"success": false}}}
deleteWallet
Description
Delete a wallet
Response
Returns a DeleteWalletPayload!
Arguments
| Name | Description |
|---|---|
input - DeleteWalletInput!
|
Example
Query
mutation deleteWallet($input: DeleteWalletInput!) {
deleteWallet(input: $input) {
success
}
}
Variables
{"input": DeleteWalletInput}
Response
{"data": {"deleteWallet": {"success": false}}}
deriveVaultAddress
Description
Derive a new receive address for a vault wallet
Response
Returns a DeriveVaultAddressPayload!
Arguments
| Name | Description |
|---|---|
input - DeriveVaultAddressInput!
|
Example
Query
mutation deriveVaultAddress($input: DeriveVaultAddressInput!) {
deriveVaultAddress(input: $input) {
address
index
}
}
Variables
{"input": DeriveVaultAddressInput}
Response
{
"data": {
"deriveVaultAddress": {
"address": "xyz789",
"index": 987
}
}
}
notifyVaultConfigTemplateSigner
Description
Notify a vault configuration template signer to set up their signer
Response
Returns a NotifyVaultConfigTemplateSignerPayload!
Arguments
| Name | Description |
|---|---|
input - NotifyVaultConfigTemplateSignerInput!
|
Example
Query
mutation notifyVaultConfigTemplateSigner($input: NotifyVaultConfigTemplateSignerInput!) {
notifyVaultConfigTemplateSigner(input: $input) {
vaultConfigTemplateSigner {
...VaultConfigTemplateOtherSignerFragment
}
}
}
Variables
{"input": NotifyVaultConfigTemplateSignerInput}
Response
{
"data": {
"notifyVaultConfigTemplateSigner": {
"vaultConfigTemplateSigner": VaultConfigTemplateOtherSigner
}
}
}
rejectVaultRecoveryReview
Description
Reject a vault recovery review request. Only reviews in PENDING state can be rejected.
Response
Returns a RejectVaultRecoveryReviewPayload!
Arguments
| Name | Description |
|---|---|
input - RejectVaultRecoveryReviewInput!
|
Example
Query
mutation rejectVaultRecoveryReview($input: RejectVaultRecoveryReviewInput!) {
rejectVaultRecoveryReview(input: $input) {
vaultRecoveryReview {
...VaultRecoveryReviewFragment
}
}
}
Variables
{"input": RejectVaultRecoveryReviewInput}
Response
{
"data": {
"rejectVaultRecoveryReview": {
"vaultRecoveryReview": VaultRecoveryReview
}
}
}
removeSignersFromWallet
Description
Remove signers from a wallet.
Response
Returns a RemoveSignersFromWalletPayload!
Arguments
| Name | Description |
|---|---|
input - RemoveSignersFromWalletInput!
|
Example
Query
mutation removeSignersFromWallet($input: RemoveSignersFromWalletInput!) {
removeSignersFromWallet(input: $input) {
success
}
}
Variables
{"input": RemoveSignersFromWalletInput}
Response
{"data": {"removeSignersFromWallet": {"success": false}}}
requestVaultRestoreChallenge
Description
Find an on-chain vault and issue a single-use challenge to sign with one of its member keys before restoring it with restoreVaultFromChain or restoreVaultFromConfig. Expires after 10 minutes.
Response
Returns a VaultRestoreChallenge!
Example
Query
mutation requestVaultRestoreChallenge(
$configJson: String,
$launcherId: String!
) {
requestVaultRestoreChallenge(
configJson: $configJson,
launcherId: $launcherId
) {
challengeId
expiresAt
linkableSignerAppKeys {
...VaultRestoreLinkableKeyFragment
}
message
proofMethods
}
}
Variables
{
"configJson": "xyz789",
"launcherId": "abc123"
}
Response
{
"data": {
"requestVaultRestoreChallenge": {
"challengeId": "xyz789",
"expiresAt": "xyz789",
"linkableSignerAppKeys": [VaultRestoreLinkableKey],
"message": "xyz789",
"proofMethods": ["PASSKEY"]
}
}
}
restoreVaultFromChain
Description
Restore a vault from the CHIP-0043 configuration memos in its on-chain singleton lineage. Creates a wallet entry for an existing on-chain vault, including a recovery in progress. Requires proof of control of a member key; public keys held by other users are stored on the vault but not linked to their accounts.
Response
Returns a RestoreVaultFromChainPayload!
Arguments
| Name | Description |
|---|---|
input - RestoreVaultFromChainInput!
|
Example
Query
mutation restoreVaultFromChain($input: RestoreVaultFromChainInput!) {
restoreVaultFromChain(input: $input) {
wallet {
...WalletFragment
}
}
}
Variables
{"input": RestoreVaultFromChainInput}
Response
{"data": {"restoreVaultFromChain": {"wallet": Wallet}}}
restoreVaultFromConfig
Description
Restore a vault from a configuration file. Creates a wallet entry for an existing on-chain vault. Requires proof of control of a member key, from a challenge issued by requestVaultRestoreChallenge.
Response
Returns a RestoreVaultFromConfigPayload!
Arguments
| Name | Description |
|---|---|
input - RestoreVaultFromConfigInput!
|
Example
Query
mutation restoreVaultFromConfig($input: RestoreVaultFromConfigInput!) {
restoreVaultFromConfig(input: $input) {
wallet {
...WalletFragment
}
}
}
Variables
{"input": RestoreVaultFromConfigInput}
Response
{"data": {"restoreVaultFromConfig": {"wallet": Wallet}}}
setVaultAddressLabel
Description
Set or clear a label for a vault address
Response
Returns a SetVaultAddressLabelPayload!
Arguments
| Name | Description |
|---|---|
input - SetVaultAddressLabelInput!
|
Example
Query
mutation setVaultAddressLabel($input: SetVaultAddressLabelInput!) {
setVaultAddressLabel(input: $input) {
vaultAddress {
...VaultAddressFragment
}
}
}
Variables
{"input": SetVaultAddressLabelInput}
Response
{
"data": {
"setVaultAddressLabel": {"vaultAddress": VaultAddress}
}
}
updateVaultConfigTemplate
Description
Update an existing vault configuration template
Response
Returns an UpdateVaultConfigTemplatePayload!
Arguments
| Name | Description |
|---|---|
input - UpdateVaultConfigTemplateInput!
|
Example
Query
mutation updateVaultConfigTemplate($input: UpdateVaultConfigTemplateInput!) {
updateVaultConfigTemplate(input: $input) {
vaultConfigTemplate {
...VaultConfigTemplateFragment
}
}
}
Variables
{"input": UpdateVaultConfigTemplateInput}
Response
{
"data": {
"updateVaultConfigTemplate": {
"vaultConfigTemplate": VaultConfigTemplate
}
}
}
updateVaultConfigTemplateKey
Description
Update a vault configuration template signer with key configuration
Response
Returns an UpdateVaultConfigTemplateKeyPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateVaultConfigTemplateKeyInput!
|
Example
Query
mutation updateVaultConfigTemplateKey($input: UpdateVaultConfigTemplateKeyInput!) {
updateVaultConfigTemplateKey(input: $input) {
vaultConfigTemplateSigner {
...VaultConfigTemplateSignerFragment
}
}
}
Variables
{"input": UpdateVaultConfigTemplateKeyInput}
Response
{
"data": {
"updateVaultConfigTemplateKey": {
"vaultConfigTemplateSigner": VaultConfigTemplateSigner
}
}
}
updateWallet
Description
Update a wallet details
Response
Returns an UpdateWalletPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateWalletInput!
|
Example
Query
mutation updateWallet($input: UpdateWalletInput!) {
updateWallet(input: $input) {
wallet {
...WalletFragment
}
}
}
Variables
{"input": UpdateWalletInput}
Response
{"data": {"updateWallet": {"wallet": Wallet}}}
walletAction
Description
Perform action against a new wallet
Response
Returns a WalletActionPayload!
Arguments
| Name | Description |
|---|---|
input - WalletActionInput!
|
Example
Query
mutation walletAction($input: WalletActionInput!) {
walletAction(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": WalletActionInput}
Response
{
"data": {
"walletAction": {"signatureRequest": SignatureRequest}
}
}
Subscriptions
walletAdded
Description
Subscribe to wallet creation
Response
Returns a Wallet!
Example
Query
subscription walletAdded {
walletAdded {
address {
...PuzzleHashFragment
}
addresses {
...WalletAddressesConnectionFragment
}
airdrops {
...WalletAirdropsConnectionFragment
}
asset {
...WalletAssetFragment
}
assets {
...WalletAssetsConnectionFragment
}
balance
canViewerAcceptOffer
canViewerCreateAirdrop
canViewerCreateAsset
canViewerCreateBroadcastMessage
canViewerCreateNft
canViewerCreateOffer
canViewerCreateTransfer
canViewerDelete
canViewerRecover
canViewerUpdate
createdAt
custodyConfig {
...WalletCustodyConfigFragment
}
grantableOAuthScopes
hasMintedAssets
hasReceiveAddress
id
messages {
...WalletMessagesConnectionFragment
}
name
needsConfigDownload
nfts {
...WalletNftsConnectionFragment
}
offers {
...WalletOffersConnectionFragment
}
pinnedTransactions {
...WalletPinnedTransactionsConnectionFragment
}
platformSubscriptions {
...WalletPlatformSubscriptionsConnectionFragment
}
recoveryEligibility {
...RecoveryEligibilityFragment
}
recoveryState
settings {
...WalletSettingsFragment
}
signerType
signers {
...WalletSignersConnectionFragment
}
state
transactions {
...WalletTransactionsConnectionFragment
}
updatedAt
user {
...UserFragment
}
vaultAddresses {
...VaultAddressFragment
}
vaultRecoveries {
...WalletVaultRecoveriesConnectionFragment
}
vaultRecovery {
...VaultRecoveryFragment
}
vaultRecoveryProvider {
...RecoveryProviderPublicFragment
}
vaultRecoverySigners {
...WalletVaultRecoverySignersConnectionFragment
}
walletSubscriptions {
...WalletWalletSubscriptionsConnectionFragment
}
}
}
Response
{
"data": {
"walletAdded": {
"address": PuzzleHash,
"addresses": WalletAddressesConnection,
"airdrops": WalletAirdropsConnection,
"asset": WalletAsset,
"assets": WalletAssetsConnection,
"balance": {},
"canViewerAcceptOffer": true,
"canViewerCreateAirdrop": false,
"canViewerCreateAsset": true,
"canViewerCreateBroadcastMessage": false,
"canViewerCreateNft": false,
"canViewerCreateOffer": false,
"canViewerCreateTransfer": false,
"canViewerDelete": true,
"canViewerRecover": true,
"canViewerUpdate": true,
"createdAt": "abc123",
"custodyConfig": WalletCustodyConfig,
"grantableOAuthScopes": ["xyz789"],
"hasMintedAssets": true,
"hasReceiveAddress": true,
"id": 4,
"messages": WalletMessagesConnection,
"name": "xyz789",
"needsConfigDownload": true,
"nfts": WalletNftsConnection,
"offers": WalletOffersConnection,
"pinnedTransactions": WalletPinnedTransactionsConnection,
"platformSubscriptions": WalletPlatformSubscriptionsConnection,
"recoveryEligibility": RecoveryEligibility,
"recoveryState": "AWAITING_REVIEW",
"settings": WalletSettings,
"signerType": "MIXED_MULTISIG",
"signers": WalletSignersConnection,
"state": "READY",
"transactions": WalletTransactionsConnection,
"updatedAt": "abc123",
"user": User,
"vaultAddresses": [VaultAddress],
"vaultRecoveries": WalletVaultRecoveriesConnection,
"vaultRecovery": VaultRecovery,
"vaultRecoveryProvider": RecoveryProviderPublic,
"vaultRecoverySigners": WalletVaultRecoverySignersConnection,
"walletSubscriptions": WalletWalletSubscriptionsConnection
}
}
}
walletUpdated
Description
Subscribe to wallet updates
Response
Returns a Wallet!
Example
Query
subscription walletUpdated {
walletUpdated {
address {
...PuzzleHashFragment
}
addresses {
...WalletAddressesConnectionFragment
}
airdrops {
...WalletAirdropsConnectionFragment
}
asset {
...WalletAssetFragment
}
assets {
...WalletAssetsConnectionFragment
}
balance
canViewerAcceptOffer
canViewerCreateAirdrop
canViewerCreateAsset
canViewerCreateBroadcastMessage
canViewerCreateNft
canViewerCreateOffer
canViewerCreateTransfer
canViewerDelete
canViewerRecover
canViewerUpdate
createdAt
custodyConfig {
...WalletCustodyConfigFragment
}
grantableOAuthScopes
hasMintedAssets
hasReceiveAddress
id
messages {
...WalletMessagesConnectionFragment
}
name
needsConfigDownload
nfts {
...WalletNftsConnectionFragment
}
offers {
...WalletOffersConnectionFragment
}
pinnedTransactions {
...WalletPinnedTransactionsConnectionFragment
}
platformSubscriptions {
...WalletPlatformSubscriptionsConnectionFragment
}
recoveryEligibility {
...RecoveryEligibilityFragment
}
recoveryState
settings {
...WalletSettingsFragment
}
signerType
signers {
...WalletSignersConnectionFragment
}
state
transactions {
...WalletTransactionsConnectionFragment
}
updatedAt
user {
...UserFragment
}
vaultAddresses {
...VaultAddressFragment
}
vaultRecoveries {
...WalletVaultRecoveriesConnectionFragment
}
vaultRecovery {
...VaultRecoveryFragment
}
vaultRecoveryProvider {
...RecoveryProviderPublicFragment
}
vaultRecoverySigners {
...WalletVaultRecoverySignersConnectionFragment
}
walletSubscriptions {
...WalletWalletSubscriptionsConnectionFragment
}
}
}
Response
{
"data": {
"walletUpdated": {
"address": PuzzleHash,
"addresses": WalletAddressesConnection,
"airdrops": WalletAirdropsConnection,
"asset": WalletAsset,
"assets": WalletAssetsConnection,
"balance": {},
"canViewerAcceptOffer": true,
"canViewerCreateAirdrop": false,
"canViewerCreateAsset": false,
"canViewerCreateBroadcastMessage": false,
"canViewerCreateNft": true,
"canViewerCreateOffer": false,
"canViewerCreateTransfer": true,
"canViewerDelete": true,
"canViewerRecover": true,
"canViewerUpdate": true,
"createdAt": "xyz789",
"custodyConfig": WalletCustodyConfig,
"grantableOAuthScopes": ["xyz789"],
"hasMintedAssets": false,
"hasReceiveAddress": false,
"id": "4",
"messages": WalletMessagesConnection,
"name": "abc123",
"needsConfigDownload": true,
"nfts": WalletNftsConnection,
"offers": WalletOffersConnection,
"pinnedTransactions": WalletPinnedTransactionsConnection,
"platformSubscriptions": WalletPlatformSubscriptionsConnection,
"recoveryEligibility": RecoveryEligibility,
"recoveryState": "AWAITING_REVIEW",
"settings": WalletSettings,
"signerType": "MIXED_MULTISIG",
"signers": WalletSignersConnection,
"state": "READY",
"transactions": WalletTransactionsConnection,
"updatedAt": "xyz789",
"user": User,
"vaultAddresses": [VaultAddress],
"vaultRecoveries": WalletVaultRecoveriesConnection,
"vaultRecovery": VaultRecovery,
"vaultRecoveryProvider": RecoveryProviderPublic,
"vaultRecoverySigners": WalletVaultRecoverySignersConnection,
"walletSubscriptions": WalletWalletSubscriptionsConnection
}
}
}
Assets & NFTs
Queries
airdrop
Description
Returns an airdrop.
Example
Query
query airdrop($id: ID) {
airdrop(id: $id) {
coins {
...AirdropCoinsConnectionFragment
}
createdAt
csvData
id
name
progress {
...AirdropProgressFragment
}
type
updatedAt
wallet {
...WalletFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"airdrop": {
"coins": AirdropCoinsConnection,
"createdAt": "xyz789",
"csvData": "xyz789",
"id": "4",
"name": "xyz789",
"progress": AirdropProgress,
"type": "xyz789",
"updatedAt": "xyz789",
"wallet": Wallet
}
}
}
airdropAtTime
Description
Returns the airdrop for a wallet with the exact creation timestamp.
Response
Returns an Airdrop
Example
Query
query airdropAtTime(
$createdAt: String!,
$walletId: ID!
) {
airdropAtTime(
createdAt: $createdAt,
walletId: $walletId
) {
coins {
...AirdropCoinsConnectionFragment
}
createdAt
csvData
id
name
progress {
...AirdropProgressFragment
}
type
updatedAt
wallet {
...WalletFragment
}
}
}
Variables
{
"createdAt": "xyz789",
"walletId": "4"
}
Response
{
"data": {
"airdropAtTime": {
"coins": AirdropCoinsConnection,
"createdAt": "abc123",
"csvData": "abc123",
"id": 4,
"name": "xyz789",
"progress": AirdropProgress,
"type": "abc123",
"updatedAt": "xyz789",
"wallet": Wallet
}
}
}
asset
Description
Returns the Asset by hash.
Example
Query
query asset($assetHash: String) {
asset(assetHash: $assetHash) {
assetHash
canViewerUpdate
decimals
displayName
displaySymbol
id
identifier
issuerWallet {
...WalletFragment
}
mintState
multiIssuance
name
revocable
symbol
totalMelted
totalMinted
totalSupply
type
}
}
Variables
{"assetHash": "abc123"}
Response
{
"data": {
"asset": {
"assetHash": "abc123",
"canViewerUpdate": true,
"decimals": 123,
"displayName": "abc123",
"displaySymbol": "abc123",
"id": 4,
"identifier": "xyz789",
"issuerWallet": Wallet,
"mintState": "CLAWED_BACK",
"multiIssuance": true,
"name": "xyz789",
"revocable": false,
"symbol": "abc123",
"totalMelted": {},
"totalMinted": {},
"totalSupply": {},
"type": "CAT1"
}
}
}
nft
Description
Returns an NFT by its 64-character hexadecimal launcher ID.
Response
Returns a Nft
Arguments
| Name | Description |
|---|---|
launcherId - String!
|
NFT launcher ID as a 64-character hexadecimal string. |
Example
Query
query nft($launcherId: String!) {
nft(launcherId: $launcherId) {
coinId
id
launcherId
metadata {
...NftMetadataFragment
}
ownerAddress
royaltyAddress
royaltyPercentage
wallet {
...WalletFragment
}
}
}
Variables
{"launcherId": "xyz789"}
Response
{
"data": {
"nft": {
"coinId": "abc123",
"id": "4",
"launcherId": "xyz789",
"metadata": NftMetadata,
"ownerAddress": "xyz789",
"royaltyAddress": "xyz789",
"royaltyPercentage": 123,
"wallet": Wallet
}
}
}
userToken
Description
Returns a token tracked by the authenticated user.
Response
Returns a UserToken
Arguments
| Name | Description |
|---|---|
id - ID!
|
User token global ID (UserToken_<cuid>). |
Example
Query
query userToken($id: ID!) {
userToken(id: $id) {
asset {
...AssetFragment
}
assetHash
createdAt
displayName
id
image
imageMimeType
symbol
updatedAt
user {
...UserFragment
}
userId
}
}
Variables
{"id": 4}
Response
{
"data": {
"userToken": {
"asset": Asset,
"assetHash": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"displayName": "xyz789",
"id": 4,
"image": "xyz789",
"imageMimeType": "xyz789",
"symbol": "abc123",
"updatedAt": "2007-12-03T10:15:30Z",
"user": User,
"userId": "abc123"
}
}
}
userTokenByAssetHash
Description
Returns a token tracked by the authenticated user for a CAT tail hash.
Response
Returns a UserToken
Arguments
| Name | Description |
|---|---|
assetHash - String!
|
64-character lowercase hex CAT tail hash. |
Example
Query
query userTokenByAssetHash($assetHash: String!) {
userTokenByAssetHash(assetHash: $assetHash) {
asset {
...AssetFragment
}
assetHash
createdAt
displayName
id
image
imageMimeType
symbol
updatedAt
user {
...UserFragment
}
userId
}
}
Variables
{"assetHash": "xyz789"}
Response
{
"data": {
"userTokenByAssetHash": {
"asset": Asset,
"assetHash": "abc123",
"createdAt": "2007-12-03T10:15:30Z",
"displayName": "xyz789",
"id": 4,
"image": "xyz789",
"imageMimeType": "abc123",
"symbol": "xyz789",
"updatedAt": "2007-12-03T10:15:30Z",
"user": User,
"userId": "abc123"
}
}
}
Mutations
bulkMintNfts
Description
Mint up to 5,000 NFTs from a wallet. The wallet must contain one XCH mojo per NFT plus the transaction fee.
Response
Returns a BulkMintNftsPayload!
Arguments
| Name | Description |
|---|---|
input - BulkMintNftsInput!
|
Example
Query
mutation bulkMintNfts($input: BulkMintNftsInput!) {
bulkMintNfts(input: $input) {
airdropId
nftIds
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": BulkMintNftsInput}
Response
{
"data": {
"bulkMintNfts": {
"airdropId": "4",
"nftIds": ["xyz789"],
"signatureRequest": SignatureRequest
}
}
}
createAirdrop
Description
Create a new airdrop
Response
Returns a CreateAirdropPayload!
Arguments
| Name | Description |
|---|---|
input - CreateAirdropInput!
|
Example
Query
mutation createAirdrop($input: CreateAirdropInput!) {
createAirdrop(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CreateAirdropInput}
Response
{
"data": {
"createAirdrop": {
"signatureRequest": SignatureRequest
}
}
}
createAsset
Description
Create a CAT2 asset and the signature request for its initial issuance.
Response
Returns a CreateAssetPayload!
Arguments
| Name | Description |
|---|---|
input - CreateAssetInput!
|
Example
Query
mutation createAsset($input: CreateAssetInput!) {
createAsset(input: $input) {
asset {
...AssetFragment
}
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CreateAssetInput}
Response
{
"data": {
"createAsset": {
"asset": Asset,
"signatureRequest": SignatureRequest
}
}
}
createAssetAndAirdrop
Description
Create a multi-issuance CAT2 asset and distribute its supply. CSV amounts must sum to the configured issuance amount.
Response
Returns a CreateAssetAndAirdropPayload!
Arguments
| Name | Description |
|---|---|
input - CreateAssetAndAirdropInput!
|
Example
Query
mutation createAssetAndAirdrop($input: CreateAssetAndAirdropInput!) {
createAssetAndAirdrop(input: $input) {
asset {
...AssetFragment
}
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CreateAssetAndAirdropInput}
Response
{
"data": {
"createAssetAndAirdrop": {
"asset": Asset,
"signatureRequest": SignatureRequest
}
}
}
deleteAsset
Description
Delete an unminted asset
Response
Returns a DeleteAssetPayload!
Arguments
| Name | Description |
|---|---|
input - DeleteAssetInput!
|
Example
Query
mutation deleteAsset($input: DeleteAssetInput!) {
deleteAsset(input: $input) {
success
}
}
Variables
{"input": DeleteAssetInput}
Response
{"data": {"deleteAsset": {"success": false}}}
revokeAsset
Description
Revoke a revocable CAT2 from one holder address or a set of coins. Repeat while outstandingBatches is greater than zero.
Response
Returns a RevokeAssetPayload!
Arguments
| Name | Description |
|---|---|
input - RevokeAssetInput!
|
Example
Query
mutation revokeAsset($input: RevokeAssetInput!) {
revokeAsset(input: $input) {
asset {
...AssetFragment
}
outstandingBatches
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": RevokeAssetInput}
Response
{
"data": {
"revokeAsset": {
"asset": Asset,
"outstandingBatches": 123,
"signatureRequest": SignatureRequest
}
}
}
transferNfts
Description
Transfer a set of NFTs
Response
Returns a TransferNftsPayload!
Arguments
| Name | Description |
|---|---|
input - TransferNftsInput!
|
Example
Query
mutation transferNfts($input: TransferNftsInput!) {
transferNfts(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": TransferNftsInput}
Response
{
"data": {
"transferNfts": {"signatureRequest": SignatureRequest}
}
}
validateAirdropCSV
Description
Validate CSV content for an airdrop and summarize its recipients and total amount. Each row is address,amount[,clawbackExpiration], with the amount in token units (up to 3 decimals) and the optional clawback expiration as a Unix timestamp in milliseconds. A header row whose first cell is Address is ignored.
Response
Returns an AirdropValidationResult!
Arguments
| Name | Description |
|---|---|
fileContent - String!
|
Example
Query
mutation validateAirdropCSV($fileContent: String!) {
validateAirdropCSV(fileContent: $fileContent) {
error
errors {
...AirdropValidationErrorFragment
}
isValid
totalAmount
totalRecipients
}
}
Variables
{"fileContent": "xyz789"}
Response
{
"data": {
"validateAirdropCSV": {
"error": "xyz789",
"errors": [AirdropValidationError],
"isValid": true,
"totalAmount": "abc123",
"totalRecipients": 123
}
}
}
Transactions & Coins
Queries
coins
Description
Returns coins for a wallet. By default, excludes pending and spent coins and sorts by creation height.
Response
Returns a QueryCoinsConnection!
Arguments
| Name | Description |
|---|---|
after - String
|
|
assetHash - String
|
64-character lowercase hex CAT tail hash. Omit or pass null for XCH. |
before - String
|
|
excludeAmounts - [BigInt!]
|
Coin amounts in mojos to omit from the results. |
excludeCoins - [ID!]
|
Coin global IDs to omit from the results. |
first - Int
|
|
includePending - Boolean
|
Whether to include pending coins. Default = false |
includeSpent - Boolean
|
Whether to include spent coins. Default = false |
last - Int
|
|
maxAmount - BigInt
|
Maximum coin amount in mojos, inclusive. |
minAmount - BigInt
|
Minimum coin amount in mojos, inclusive. |
sortKey - CoinRecordsSortKey
|
Sort order. Default = CREATED_HEIGHT |
walletId - ID!
|
Wallet global ID (Wallet_<cuid>). |
Example
Query
query coins(
$after: String,
$assetHash: String,
$before: String,
$excludeAmounts: [BigInt!],
$excludeCoins: [ID!],
$first: Int,
$includePending: Boolean,
$includeSpent: Boolean,
$last: Int,
$maxAmount: BigInt,
$minAmount: BigInt,
$sortKey: CoinRecordsSortKey,
$walletId: ID!
) {
coins(
after: $after,
assetHash: $assetHash,
before: $before,
excludeAmounts: $excludeAmounts,
excludeCoins: $excludeCoins,
first: $first,
includePending: $includePending,
includeSpent: $includeSpent,
last: $last,
maxAmount: $maxAmount,
minAmount: $minAmount,
sortKey: $sortKey,
walletId: $walletId
) {
edges {
...QueryCoinsConnectionEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "abc123",
"assetHash": "abc123",
"before": "xyz789",
"excludeAmounts": [{}],
"excludeCoins": [4],
"first": 123,
"includePending": false,
"includeSpent": false,
"last": 987,
"maxAmount": {},
"minAmount": {},
"sortKey": "CREATED_HEIGHT",
"walletId": 4
}
Response
{
"data": {
"coins": {
"edges": [QueryCoinsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
}
}
recipientHistory
Description
Returns settled outbound payment history for an address in a wallet.
Response
Returns a RecipientHistory!
Example
Query
query recipientHistory(
$address: String!,
$walletId: ID!
) {
recipientHistory(
address: $address,
walletId: $walletId
) {
addressActivityStatus
hasSentBefore
lastSentAt
}
}
Variables
{
"address": "abc123",
"walletId": "4"
}
Response
{
"data": {
"recipientHistory": {
"addressActivityStatus": "UNAVAILABLE",
"hasSentBefore": true,
"lastSentAt": "2007-12-03T10:15:30Z"
}
}
}
walletTransaction
Description
Returns a wallet transaction.
Response
Returns a WalletTransaction
Arguments
| Name | Description |
|---|---|
id - ID!
|
Wallet transaction global ID (WalletTransaction_<cuid>). |
Example
Query
query walletTransaction($id: ID!) {
walletTransaction(id: $id) {
airdropPayoutRecipientCount
airdropSummary {
...AirdropTransactionSummaryFragment
}
amount
asset {
...AssetFragment
}
assetChanges {
...WalletTransactionAssetChangesConnectionFragment
}
associatedClawbackTransaction {
...WalletTransactionFragment
}
buyOrder {
...BuyOrderFragment
}
clawbackExpirationTime
clawbackState {
...ClawbackStateFragment
}
coinReservationTransaction {
...WalletTransactionFragment
}
confirmationHeight
confirmations
confirmedAt
createdAt
direction
fee
from
hasUnspentClawbackCoins
id
initiatingApplicationName
inputs {
...WalletTransactionInputsConnectionFragment
}
isCoinReservationForOffer
memos
message {
...MessageFragment
}
nfts {
...WalletTransactionNftsConnectionFragment
}
offer {
...WalletOfferFragment
}
outputs {
...WalletTransactionOutputsConnectionFragment
}
resubmission {
...TransactionResubmissionDetailsFragment
}
signatureRequest {
...SignatureRequestFragment
}
state
timestamp
to
type
unspentClawbackCoins {
...UnspentClawbackCoinsFragment
}
vaultRecoveryReview {
...VaultRecoveryReviewFragment
}
wallet {
...WalletFragment
}
walletFee
xchHandle
}
}
Variables
{"id": "4"}
Response
{
"data": {
"walletTransaction": {
"airdropPayoutRecipientCount": 123,
"airdropSummary": AirdropTransactionSummary,
"amount": {},
"asset": Asset,
"assetChanges": WalletTransactionAssetChangesConnection,
"associatedClawbackTransaction": WalletTransaction,
"buyOrder": BuyOrder,
"clawbackExpirationTime": "2007-12-03T10:15:30Z",
"clawbackState": ClawbackState,
"coinReservationTransaction": WalletTransaction,
"confirmationHeight": 987,
"confirmations": 123,
"confirmedAt": "abc123",
"createdAt": "xyz789",
"direction": "abc123",
"fee": {},
"from": "abc123",
"hasUnspentClawbackCoins": false,
"id": 4,
"initiatingApplicationName": "abc123",
"inputs": WalletTransactionInputsConnection,
"isCoinReservationForOffer": false,
"memos": ["abc123"],
"message": Message,
"nfts": WalletTransactionNftsConnection,
"offer": WalletOffer,
"outputs": WalletTransactionOutputsConnection,
"resubmission": TransactionResubmissionDetails,
"signatureRequest": SignatureRequest,
"state": "CLAWED_BACK",
"timestamp": "abc123",
"to": "xyz789",
"type": "AIRDROP",
"unspentClawbackCoins": UnspentClawbackCoins,
"vaultRecoveryReview": VaultRecoveryReview,
"wallet": Wallet,
"walletFee": {},
"xchHandle": "xyz789"
}
}
}
Mutations
clawBackTransaction
Description
Return an outbound CLAWBACK_V2 transfer to the sending wallet before its clawback deadline. Check clawbackState.canClawback first.
Response
Returns a ClawBackTransactionPayload!
Arguments
| Name | Description |
|---|---|
input - ClawBackTransactionInput!
|
Example
Query
mutation clawBackTransaction($input: ClawBackTransactionInput!) {
clawBackTransaction(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": ClawBackTransactionInput}
Response
{
"data": {
"clawBackTransaction": {
"signatureRequest": SignatureRequest
}
}
}
combineCoins
Description
Combine coins into one coin and automatically submit the spend after signing. Supply inputCoinIds for explicit selection, or use the automatic-selection options. Automatic selection starts with the smallest coins unless largestFirst is true. Asset omission means XCH. Limits are XCH 500, CAT 100, and revocable CAT 50 coins.
Response
Returns a CombineCoinsPayload!
Arguments
| Name | Description |
|---|---|
input - CombineCoinsInput!
|
Example
Query
mutation combineCoins($input: CombineCoinsInput!) {
combineCoins(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CombineCoinsInput}
Response
{
"data": {
"combineCoins": {"signatureRequest": SignatureRequest}
}
}
createTransaction
Description
Create a transaction and its signature request. The transaction remains unsigned until the request has all required signatures.
Response
Returns a CreateTransactionPayload!
Arguments
| Name | Description |
|---|---|
input - CreateTransactionInput!
|
Example
Query
mutation createTransaction($input: CreateTransactionInput!) {
createTransaction(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CreateTransactionInput}
Response
{
"data": {
"createTransaction": {
"signatureRequest": SignatureRequest
}
}
}
deleteTransaction
Description
Remove a pending WalletTransaction from wallet history. It may reappear if it is later confirmed on chain.
Response
Returns a DeleteTransactionPayload!
Arguments
| Name | Description |
|---|---|
input - DeleteTransactionInput!
|
Example
Query
mutation deleteTransaction($input: DeleteTransactionInput!) {
deleteTransaction(input: $input) {
success
}
}
Variables
{"input": DeleteTransactionInput}
Response
{"data": {"deleteTransaction": {"success": true}}}
finalizeTransaction
Description
Finalize an outbound CLAWBACK_V2 transaction. Before expiry this releases funds to the receiver; after expiry it pushes the transfer through. Check clawbackState.canFinalize or clawbackState.canPushThrough first.
Response
Returns a FinalizeTransactionPayload!
Arguments
| Name | Description |
|---|---|
input - FinalizeTransactionInput!
|
Example
Query
mutation finalizeTransaction($input: FinalizeTransactionInput!) {
finalizeTransaction(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": FinalizeTransactionInput}
Response
{
"data": {
"finalizeTransaction": {
"signatureRequest": SignatureRequest
}
}
}
splitCoins
Description
Split selected coins into equal-value outputs plus any remainder, then automatically submit the spend after signing.
Response
Returns a SplitCoinsPayload!
Arguments
| Name | Description |
|---|---|
input - SplitCoinsInput!
|
Example
Query
mutation splitCoins($input: SplitCoinsInput!) {
splitCoins(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": SplitCoinsInput}
Response
{
"data": {
"splitCoins": {"signatureRequest": SignatureRequest}
}
}
Offers
Queries
walletOffer
Description
Returns a wallet offer.
Response
Returns a WalletOffer
Arguments
| Name | Description |
|---|---|
id - ID!
|
Wallet offer global ID (WalletOffer_<cuid>). |
Example
Query
query walletOffer($id: ID!) {
walletOffer(id: $id) {
assets {
...WalletOfferAssetsConnectionFragment
}
bech32
createdAt
creatorIncludedFee
expiresAt
id
isCreator
nfts {
...WalletOfferNftsConnectionFragment
}
offerId
settlementType
spendBundle
state
transactions {
...TransactionFragment
}
wallet {
...WalletFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"walletOffer": {
"assets": WalletOfferAssetsConnection,
"bech32": "xyz789",
"createdAt": "xyz789",
"creatorIncludedFee": {},
"expiresAt": "2007-12-03T10:15:30Z",
"id": 4,
"isCreator": true,
"nfts": WalletOfferNftsConnection,
"offerId": 4,
"settlementType": "abc123",
"spendBundle": "xyz789",
"state": "abc123",
"transactions": [Transaction],
"wallet": Wallet
}
}
}
Mutations
addOffer
Description
Add an offer
Response
Returns an AddOfferPayload!
Arguments
| Name | Description |
|---|---|
input - AddOfferInput!
|
Example
Query
mutation addOffer($input: AddOfferInput!) {
addOffer(input: $input) {
offer {
...WalletOfferFragment
}
}
}
Variables
{"input": AddOfferInput}
Response
{"data": {"addOffer": {"offer": WalletOffer}}}
cancelOffer
Description
Cancel an offer off chain or create a signature request that cancels it on chain.
Response
Returns a CancelOfferPayload!
Arguments
| Name | Description |
|---|---|
input - CancelOfferInput!
|
Example
Query
mutation cancelOffer($input: CancelOfferInput!) {
cancelOffer(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CancelOfferInput}
Response
{
"data": {
"cancelOffer": {"signatureRequest": SignatureRequest}
}
}
createOffer
Description
Create an offer and its signature request. Provide at least one offered or requested asset or NFT; each side may contain fungible assets, NFTs, or both.
Response
Returns a CreateOfferPayload!
Arguments
| Name | Description |
|---|---|
input - CreateOfferInput!
|
Example
Query
mutation createOffer($input: CreateOfferInput!) {
createOffer(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CreateOfferInput}
Response
{
"data": {
"createOffer": {"signatureRequest": SignatureRequest}
}
}
takeOffer
Description
Accept an offer and create the signature request needed to settle it.
Response
Returns a TakeOfferPayload!
Arguments
| Name | Description |
|---|---|
input - TakeOfferInput!
|
Example
Query
mutation takeOffer($input: TakeOfferInput!) {
takeOffer(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": TakeOfferInput}
Response
{
"data": {
"takeOffer": {"signatureRequest": SignatureRequest}
}
}
Subscriptions
offerUpdated
Description
Subscribe to offer updates
Response
Returns a WalletOffer!
Example
Query
subscription offerUpdated {
offerUpdated {
assets {
...WalletOfferAssetsConnectionFragment
}
bech32
createdAt
creatorIncludedFee
expiresAt
id
isCreator
nfts {
...WalletOfferNftsConnectionFragment
}
offerId
settlementType
spendBundle
state
transactions {
...TransactionFragment
}
wallet {
...WalletFragment
}
}
}
Response
{
"data": {
"offerUpdated": {
"assets": WalletOfferAssetsConnection,
"bech32": "xyz789",
"createdAt": "abc123",
"creatorIncludedFee": {},
"expiresAt": "2007-12-03T10:15:30Z",
"id": "4",
"isCreator": true,
"nfts": WalletOfferNftsConnection,
"offerId": "4",
"settlementType": "abc123",
"spendBundle": "abc123",
"state": "xyz789",
"transactions": [Transaction],
"wallet": Wallet
}
}
}
Signers & Signatures
Queries
signatureRequest
Description
Returns a signature request.
Response
Returns a SignatureRequest
Arguments
| Name | Description |
|---|---|
id - ID!
|
Signature request global ID (SignatureRequest_<cuid>). |
Example
Query
query signatureRequest($id: ID!) {
signatureRequest(id: $id) {
autoSubmit
broadcastMessageDetails {
...BroadcastMessageDetailsFragment
}
clearSigningDetails {
...ClearSigningDetailsFragment
}
coinSpends {
...CoinSpendFragment
}
combineDetails {
...CombineDetailsFragment
}
createdAt
details
displayCloudWalletSigningPrompt
id
melt
messages {
...SignaturePayloadFragment
}
offerDetails {
...OfferDetailsFragment
}
recoveryDetails {
...RecoveryDetailsFragment
}
requestId
splitDetails {
...SplitDetailsFragment
}
status
transaction {
...WalletTransactionFragment
}
updatedAt
vault {
...VaultFragment
}
wallet {
...WalletFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"signatureRequest": {
"autoSubmit": false,
"broadcastMessageDetails": BroadcastMessageDetails,
"clearSigningDetails": ClearSigningDetails,
"coinSpends": [CoinSpend],
"combineDetails": CombineDetails,
"createdAt": "xyz789",
"details": {},
"displayCloudWalletSigningPrompt": true,
"id": 4,
"melt": true,
"messages": [SignaturePayload],
"offerDetails": OfferDetails,
"recoveryDetails": RecoveryDetails,
"requestId": "abc123",
"splitDetails": SplitDetails,
"status": "abc123",
"transaction": WalletTransaction,
"updatedAt": "abc123",
"vault": Vault,
"wallet": Wallet
}
}
}
signer
Description
Returns a signer.
Example
Query
query signer($id: ID!) {
signer(id: $id) {
canViewerDelete
canViewerUpdate
createdAt
grantableOAuthScopes
id
name
network {
...NetworkFragment
}
publicKeys {
...SignerPublicKeysConnectionFragment
}
signerPublicKeys {
...SignerSignerPublicKeysConnectionFragment
}
updatedAt
user {
...UserFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"signer": {
"canViewerDelete": false,
"canViewerUpdate": true,
"createdAt": "abc123",
"grantableOAuthScopes": ["abc123"],
"id": 4,
"name": "xyz789",
"network": Network,
"publicKeys": SignerPublicKeysConnection,
"signerPublicKeys": SignerSignerPublicKeysConnection,
"updatedAt": "abc123",
"user": User
}
}
}
Mutations
addPublicKeysToSigner
Description
Add public keys to a signer
Response
Returns an AddPublicKeysToSignerPayload!
Arguments
| Name | Description |
|---|---|
input - AddPublicKeysToSignerInput!
|
Example
Query
mutation addPublicKeysToSigner($input: AddPublicKeysToSignerInput!) {
addPublicKeysToSigner(input: $input) {
signerPublicKeys {
...SignerPublicKeyFragment
}
}
}
Variables
{"input": AddPublicKeysToSignerInput}
Response
{
"data": {
"addPublicKeysToSigner": {
"signerPublicKeys": [SignerPublicKey]
}
}
}
addSignerAppKey
Description
Adds the Chia Signer App key to the cloud wallet
Response
Returns an AddSignerAppKeyPayload!
Arguments
| Name | Description |
|---|---|
input - AddSignerAppKeyInput!
|
Example
Query
mutation addSignerAppKey($input: AddSignerAppKeyInput!) {
addSignerAppKey(input: $input) {
token
user {
...UserFragment
}
}
}
Variables
{"input": AddSignerAppKeyInput}
Response
{
"data": {
"addSignerAppKey": {
"token": "xyz789",
"user": User
}
}
}
createSigner
Description
Create a new signer
Response
Returns a CreateSignerPayload!
Arguments
| Name | Description |
|---|---|
input - CreateSignerInput!
|
Example
Query
mutation createSigner($input: CreateSignerInput!) {
createSigner(input: $input) {
signer {
...SignerFragment
}
}
}
Variables
{"input": CreateSignerInput}
Response
{"data": {"createSigner": {"signer": Signer}}}
createSignerAppAuthKeyByPublicKey
Description
Create a new signerAppAuthKey using public key verification (no authentication required)
Response
Arguments
| Name | Description |
|---|---|
input - CreateSignerAppAuthKeyByPublicKeyInput!
|
Example
Query
mutation createSignerAppAuthKeyByPublicKey($input: CreateSignerAppAuthKeyByPublicKeyInput!) {
createSignerAppAuthKeyByPublicKey(input: $input) {
signerAppAuthKey {
...SignerAppAuthKeyFragment
}
}
}
Variables
{"input": CreateSignerAppAuthKeyByPublicKeyInput}
Response
{
"data": {
"createSignerAppAuthKeyByPublicKey": {
"signerAppAuthKey": SignerAppAuthKey
}
}
}
createSigners
Description
Create multiple signers at once
Response
Returns a CreateSignersPayload!
Arguments
| Name | Description |
|---|---|
input - CreateSignersInput!
|
Example
Query
mutation createSigners($input: CreateSignersInput!) {
createSigners(input: $input) {
signers {
...SignerFragment
}
}
}
Variables
{"input": CreateSignersInput}
Response
{"data": {"createSigners": {"signers": [Signer]}}}
deleteSigner
Description
Delete a signer
Response
Returns a DeleteSignerPayload!
Arguments
| Name | Description |
|---|---|
input - DeleteSignerInput!
|
Example
Query
mutation deleteSigner($input: DeleteSignerInput!) {
deleteSigner(input: $input) {
success
}
}
Variables
{"input": DeleteSignerInput}
Response
{"data": {"deleteSigner": {"success": true}}}
removePublicKeysFromSigner
Description
Remove public keys from a signer
Response
Returns a RemovePublicKeysFromSignerPayload!
Arguments
| Name | Description |
|---|---|
input - RemovePublicKeysFromSignerInput!
|
Example
Query
mutation removePublicKeysFromSigner($input: RemovePublicKeysFromSignerInput!) {
removePublicKeysFromSigner(input: $input) {
success
}
}
Variables
{"input": RemovePublicKeysFromSignerInput}
Response
{"data": {"removePublicKeysFromSigner": {"success": true}}}
requestSignerAppVerificationToken
Description
Request token to link the Chia Signer App to the current user
Response
Example
Query
mutation requestSignerAppVerificationToken {
requestSignerAppVerificationToken {
token
}
}
Response
{
"data": {
"requestSignerAppVerificationToken": {
"token": "xyz789"
}
}
}
resendSignatureRequest
Description
Resend a signature request
Response
Returns a ResendSignatureRequestPayload!
Arguments
| Name | Description |
|---|---|
input - ResendSignatureRequestInput!
|
Example
Query
mutation resendSignatureRequest($input: ResendSignatureRequestInput!) {
resendSignatureRequest(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": ResendSignatureRequestInput}
Response
{
"data": {
"resendSignatureRequest": {
"signatureRequest": SignatureRequest
}
}
}
signSignatureRequest
Description
Attach one signature to a pending signature request. This submits the transaction only when auto-submit is enabled and the signature completes the request.
Response
Returns a SignSignatureRequestPayload!
Arguments
| Name | Description |
|---|---|
input - SignSignatureRequestInput!
|
Example
Query
mutation signSignatureRequest($input: SignSignatureRequestInput!) {
signSignatureRequest(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": SignSignatureRequestInput}
Response
{
"data": {
"signSignatureRequest": {
"signatureRequest": SignatureRequest
}
}
}
submitSignatureRequest
Description
Submit the completed spend bundle for a fully signed signature request to the Chia network.
Response
Returns a SubmitSignatureRequestPayload!
Arguments
| Name | Description |
|---|---|
input - SubmitSignatureRequestInput!
|
Example
Query
mutation submitSignatureRequest($input: SubmitSignatureRequestInput!) {
submitSignatureRequest(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": SubmitSignatureRequestInput}
Response
{
"data": {
"submitSignatureRequest": {
"signatureRequest": SignatureRequest
}
}
}
updateSigner
Description
Update a signer details
Response
Returns an UpdateSignerPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateSignerInput!
|
Example
Query
mutation updateSigner($input: UpdateSignerInput!) {
updateSigner(input: $input) {
signer {
...SignerFragment
}
}
}
Variables
{"input": UpdateSignerInput}
Response
{"data": {"updateSigner": {"signer": Signer}}}
Subscriptions
signatureRequestCreated
Description
Subscribe to signature requests created
Response
Returns a SignatureRequestCreatedPayload!
Example
Query
subscription signatureRequestCreated {
signatureRequestCreated {
signatureRequest {
...SignatureRequestFragment
}
}
}
Response
{
"data": {
"signatureRequestCreated": {
"signatureRequest": SignatureRequest
}
}
}
signatureRequestUpdated
Description
Subscribe to signature requests updated
Response
Returns a SignatureRequestUpdatedPayload!
Example
Query
subscription signatureRequestUpdated {
signatureRequestUpdated {
signatureRequest {
...SignatureRequestFragment
}
}
}
Response
{
"data": {
"signatureRequestUpdated": {
"signatureRequest": SignatureRequest
}
}
}
signerAppKeyLinked
Description
Subscribe to Chia Signer App key getting linked
Response
Returns a SignerAppKeyLinkedPayload!
Example
Query
subscription signerAppKeyLinked {
signerAppKeyLinked {
signerAppKey {
...SignerAppKeyFragment
}
token
}
}
Response
{
"data": {
"signerAppKeyLinked": {
"signerAppKey": SignerAppKey,
"token": "xyz789"
}
}
}
Contacts
Queries
contact
Description
Returns a contact.
Example
Query
query contact($id: ID!) {
contact(id: $id) {
addresses {
...ContactAddressesConnectionFragment
}
createdAt
emails {
...ContactEmailsConnectionFragment
}
grantableOAuthScopes
id
image
name
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"contact": {
"addresses": ContactAddressesConnection,
"createdAt": "abc123",
"emails": ContactEmailsConnection,
"grantableOAuthScopes": ["xyz789"],
"id": 4,
"image": "xyz789",
"name": "abc123",
"updatedAt": "abc123"
}
}
}
Mutations
addContactAddress
Description
Add a blockchain address to a contact
Response
Returns an AddContactAddressPayload!
Arguments
| Name | Description |
|---|---|
input - AddContactAddressInput!
|
Example
Query
mutation addContactAddress($input: AddContactAddressInput!) {
addContactAddress(input: $input) {
address {
...ContactAddressFragment
}
}
}
Variables
{"input": AddContactAddressInput}
Response
{
"data": {
"addContactAddress": {"address": ContactAddress}
}
}
addContactEmail
Description
Add an email to a contact
Response
Returns an AddContactEmailPayload!
Arguments
| Name | Description |
|---|---|
input - AddContactEmailInput!
|
Example
Query
mutation addContactEmail($input: AddContactEmailInput!) {
addContactEmail(input: $input) {
email {
...ContactEmailFragment
}
}
}
Variables
{"input": AddContactEmailInput}
Response
{"data": {"addContactEmail": {"email": ContactEmail}}}
createContact
Description
Create a new contact. If organizationId is provided, the contact will be associated with the organization. If not, the contact will be associated with the authenticated user.
Response
Returns a CreateContactPayload!
Arguments
| Name | Description |
|---|---|
input - CreateContactInput!
|
Example
Query
mutation createContact($input: CreateContactInput!) {
createContact(input: $input) {
contact {
...ContactFragment
}
}
}
Variables
{"input": CreateContactInput}
Response
{"data": {"createContact": {"contact": Contact}}}
deleteContact
Description
Delete a contact.
Response
Returns a DeleteContactPayload!
Arguments
| Name | Description |
|---|---|
input - DeleteContactInput!
|
Example
Query
mutation deleteContact($input: DeleteContactInput!) {
deleteContact(input: $input) {
success
}
}
Variables
{"input": DeleteContactInput}
Response
{"data": {"deleteContact": {"success": false}}}
removeContactAddress
Description
Remove a blockchain address from a contact
Response
Returns a RemoveContactAddressPayload!
Arguments
| Name | Description |
|---|---|
input - RemoveContactAddressInput!
|
Example
Query
mutation removeContactAddress($input: RemoveContactAddressInput!) {
removeContactAddress(input: $input) {
success
}
}
Variables
{"input": RemoveContactAddressInput}
Response
{"data": {"removeContactAddress": {"success": true}}}
removeContactEmail
Description
Remove an email from a contact. The contact must retain at least one email address.
Response
Returns a RemoveContactEmailPayload!
Arguments
| Name | Description |
|---|---|
input - RemoveContactEmailInput!
|
Example
Query
mutation removeContactEmail($input: RemoveContactEmailInput!) {
removeContactEmail(input: $input) {
success
}
}
Variables
{"input": RemoveContactEmailInput}
Response
{"data": {"removeContactEmail": {"success": false}}}
updateContact
Description
Update core fields of a contact
Response
Returns an UpdateContactPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateContactInput!
|
Example
Query
mutation updateContact($input: UpdateContactInput!) {
updateContact(input: $input) {
contact {
...ContactFragment
}
}
}
Variables
{"input": UpdateContactInput}
Response
{"data": {"updateContact": {"contact": Contact}}}
updateContactAddress
Description
Update an address from a contact
Response
Returns an UpdateContactAddressPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateContactAddressInput!
|
Example
Query
mutation updateContactAddress($input: UpdateContactAddressInput!) {
updateContactAddress(input: $input) {
address {
...ContactAddressFragment
}
}
}
Variables
{"input": UpdateContactAddressInput}
Response
{
"data": {
"updateContactAddress": {"address": ContactAddress}
}
}
updateContactEmail
Description
Update an email from a contact
Response
Returns an UpdateContactEmailPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateContactEmailInput!
|
Example
Query
mutation updateContactEmail($input: UpdateContactEmailInput!) {
updateContactEmail(input: $input) {
email {
...ContactEmailFragment
}
}
}
Variables
{"input": UpdateContactEmailInput}
Response
{"data": {"updateContactEmail": {"email": ContactEmail}}}
Messaging & Subscriptions
Queries
availablePlatformSubscriptions
Description
Returns platform subscriptions and whether the specified wallet subscribes to each one.
Response
Example
Query
query availablePlatformSubscriptions(
$after: String,
$before: String,
$first: Int,
$last: Int,
$query: String,
$sortKey: SubscriptionsSortKey,
$walletId: ID!
) {
availablePlatformSubscriptions(
after: $after,
before: $before,
first: $first,
last: $last,
query: $query,
sortKey: $sortKey,
walletId: $walletId
) {
edges {
...QueryAvailablePlatformSubscriptionsConnectionEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "xyz789",
"before": "abc123",
"first": 123,
"last": 123,
"query": "xyz789",
"sortKey": "CREATED_AT",
"walletId": 4
}
Response
{
"data": {
"availablePlatformSubscriptions": {
"edges": [
QueryAvailablePlatformSubscriptionsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
walletMessage
Description
Returns a wallet message.
Response
Returns a WalletMessage
Arguments
| Name | Description |
|---|---|
id - ID!
|
Wallet message global ID (WalletMessage_<cuid>). |
Example
Query
query walletMessage($id: ID!) {
walletMessage(id: $id) {
bulletinCoinName
createdAt
direction
id
isRead
message
state
topic
vaultLauncherId
wallet {
...WalletFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"walletMessage": {
"bulletinCoinName": "xyz789",
"createdAt": "abc123",
"direction": "INBOUND",
"id": "4",
"isRead": true,
"message": "xyz789",
"state": "abc123",
"topic": "abc123",
"vaultLauncherId": "abc123",
"wallet": Wallet
}
}
}
walletSubscription
Description
Returns a wallet subscription.
Response
Returns a WalletSubscription
Arguments
| Name | Description |
|---|---|
id - ID!
|
Wallet subscription global ID (WalletSubscription_<cuid>). |
Example
Query
query walletSubscription($id: ID!) {
walletSubscription(id: $id) {
allAvailableTopics {
...WalletSubscriptionAllAvailableTopicsConnectionFragment
}
autoSubscribe
avatarFileName
id
isPlatform
name
topics {
...WalletSubscriptionTopicsConnectionFragment
}
vaultAddress
vaultLauncherId
}
}
Variables
{"id": 4}
Response
{
"data": {
"walletSubscription": {
"allAvailableTopics": WalletSubscriptionAllAvailableTopicsConnection,
"autoSubscribe": true,
"avatarFileName": "abc123",
"id": 4,
"isPlatform": true,
"name": "abc123",
"topics": WalletSubscriptionTopicsConnection,
"vaultAddress": "xyz789",
"vaultLauncherId": "xyz789"
}
}
}
Mutations
addSubscriptionToWallet
Description
Link an existing platform subscription by subscriptionId, or create a custom subscription with name and either vaultLauncherId or vaultAddress.
Response
Returns an AddSubscriptionToWalletPayload!
Arguments
| Name | Description |
|---|---|
input - AddSubscriptionToWalletInput!
|
Example
Query
mutation addSubscriptionToWallet($input: AddSubscriptionToWalletInput!) {
addSubscriptionToWallet(input: $input) {
walletSubscription {
...WalletSubscriptionFragment
}
}
}
Variables
{"input": AddSubscriptionToWalletInput}
Response
{
"data": {
"addSubscriptionToWallet": {
"walletSubscription": WalletSubscription
}
}
}
addTopicsToSubscription
Description
Add topics to a wallet subscription. At least one topic or existing topic ID is required.
Response
Returns an AddTopicsToSubscriptionPayload!
Arguments
| Name | Description |
|---|---|
input - AddTopicsToSubscriptionInput!
|
Example
Query
mutation addTopicsToSubscription($input: AddTopicsToSubscriptionInput!) {
addTopicsToSubscription(input: $input) {
walletSubscription {
...WalletSubscriptionFragment
}
}
}
Variables
{"input": AddTopicsToSubscriptionInput}
Response
{
"data": {
"addTopicsToSubscription": {
"walletSubscription": WalletSubscription
}
}
}
createMessage
Description
Create a new message
Response
Returns a CreateMessagePayload!
Arguments
| Name | Description |
|---|---|
input - CreateMessageInput!
|
Example
Query
mutation createMessage($input: CreateMessageInput!) {
createMessage(input: $input) {
signatureRequest {
...SignatureRequestFragment
}
}
}
Variables
{"input": CreateMessageInput}
Response
{
"data": {
"createMessage": {
"signatureRequest": SignatureRequest
}
}
}
markMessageAsRead
Description
Mark a wallet message as read.
Response
Returns a WalletMessage!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Wallet message global ID. |
Example
Query
mutation markMessageAsRead($id: ID!) {
markMessageAsRead(id: $id) {
bulletinCoinName
createdAt
direction
id
isRead
message
state
topic
vaultLauncherId
wallet {
...WalletFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"markMessageAsRead": {
"bulletinCoinName": "abc123",
"createdAt": "xyz789",
"direction": "INBOUND",
"id": "4",
"isRead": true,
"message": "abc123",
"state": "abc123",
"topic": "abc123",
"vaultLauncherId": "abc123",
"wallet": Wallet
}
}
}
removeSubscriptionFromWallet
Description
Remove subscription from a wallet
Response
Returns a RemoveSubscriptionFromWalletPayload!
Arguments
| Name | Description |
|---|---|
input - RemoveSubscriptionFromWalletInput!
|
Example
Query
mutation removeSubscriptionFromWallet($input: RemoveSubscriptionFromWalletInput!) {
removeSubscriptionFromWallet(input: $input) {
wallet {
...WalletFragment
}
}
}
Variables
{"input": RemoveSubscriptionFromWalletInput}
Response
{
"data": {
"removeSubscriptionFromWallet": {"wallet": Wallet}
}
}
removeTopicFromSubscription
Description
Remove topic from a subscription
Response
Returns a RemoveTopicFromSubscriptionPayload!
Arguments
| Name | Description |
|---|---|
input - RemoveTopicFromSubscriptionInput!
|
Example
Query
mutation removeTopicFromSubscription($input: RemoveTopicFromSubscriptionInput!) {
removeTopicFromSubscription(input: $input) {
walletSubscription {
...WalletSubscriptionFragment
}
}
}
Variables
{"input": RemoveTopicFromSubscriptionInput}
Response
{
"data": {
"removeTopicFromSubscription": {
"walletSubscription": WalletSubscription
}
}
}
updateAutoSubscribe
Description
Update the autoSubscribe setting for a wallet subscription
Response
Returns an UpdateAutoSubscribePayload!
Arguments
| Name | Description |
|---|---|
input - UpdateAutoSubscribeInput!
|
Example
Query
mutation updateAutoSubscribe($input: UpdateAutoSubscribeInput!) {
updateAutoSubscribe(input: $input) {
walletSubscription {
...WalletSubscriptionFragment
}
}
}
Variables
{"input": UpdateAutoSubscribeInput}
Response
{
"data": {
"updateAutoSubscribe": {
"walletSubscription": WalletSubscription
}
}
}
updateSubscriptionTopic
Description
Update a subscription topic (name and/or path)
Response
Returns an UpdateSubscriptionTopicPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateSubscriptionTopicInput!
|
Example
Query
mutation updateSubscriptionTopic($input: UpdateSubscriptionTopicInput!) {
updateSubscriptionTopic(input: $input) {
subscriptionTopic {
...SubscriptionTopicFragment
}
}
}
Variables
{"input": UpdateSubscriptionTopicInput}
Response
{
"data": {
"updateSubscriptionTopic": {
"subscriptionTopic": SubscriptionTopic
}
}
}
updateWalletSubscription
Description
Update a user-created subscription
Response
Returns an UpdateWalletSubscriptionPayload!
Arguments
| Name | Description |
|---|---|
input - UpdateWalletSubscriptionInput!
|
Example
Query
mutation updateWalletSubscription($input: UpdateWalletSubscriptionInput!) {
updateWalletSubscription(input: $input) {
walletSubscription {
...WalletSubscriptionFragment
}
}
}
Variables
{"input": UpdateWalletSubscriptionInput}
Response
{
"data": {
"updateWalletSubscription": {
"walletSubscription": WalletSubscription
}
}
}
Snapshots
Queries
savedSnapshots
Description
Returns saved snapshots for a CAT asset.
Response
Returns [SavedSnapshot!]
Arguments
| Name | Description |
|---|---|
input - SavedSnapshotsInput!
|
Example
Query
query savedSnapshots($input: SavedSnapshotsInput!) {
savedSnapshots(input: $input) {
asset {
...AssetFragment
}
createdAt
id
name
snapshot {
...SnapshotFragment
}
}
}
Variables
{"input": SavedSnapshotsInput}
Response
{
"data": {
"savedSnapshots": [
{
"asset": Asset,
"createdAt": "abc123",
"id": "4",
"name": "xyz789",
"snapshot": Snapshot
}
]
}
}
snapshot
Description
Creates and persists an ownership snapshot, then returns it with its asset.
Response
Returns a Snapshot!
Arguments
| Name | Description |
|---|---|
input - SnapshotInput!
|
Example
Query
query snapshot($input: SnapshotInput!) {
snapshot(input: $input) {
asset {
...AssetFragment
}
createdAt
headerHash
id
result
snapshotTime
}
}
Variables
{"input": SnapshotInput}
Response
{
"data": {
"snapshot": {
"asset": Asset,
"createdAt": "xyz789",
"headerHash": "abc123",
"id": 4,
"result": "abc123",
"snapshotTime": "xyz789"
}
}
}
snapshotConnection
Description
Computes an ownership snapshot without persisting it and returns paginated owner totals.
Response
Returns a SnapshotConnectionWrapper!
Arguments
| Name | Description |
|---|---|
after - String
|
|
before - String
|
|
first - Int
|
|
input - SnapshotInput!
|
|
last - Int
|
Example
Query
query snapshotConnection(
$after: String,
$before: String,
$first: Int,
$input: SnapshotInput!,
$last: Int
) {
snapshotConnection(
after: $after,
before: $before,
first: $first,
input: $input,
last: $last
) {
asset {
...AssetFragment
}
blockRecord {
...BlockRecordFragment
}
connection {
...SnapshotConnectionWrapperConnectionFragment
}
}
}
Variables
{
"after": "xyz789",
"before": "abc123",
"first": 123,
"input": SnapshotInput,
"last": 123
}
Response
{
"data": {
"snapshotConnection": {
"asset": Asset,
"blockRecord": BlockRecord,
"connection": SnapshotConnectionWrapperConnection
}
}
}
snapshotDownload
Description
Creates and persists an ownership snapshot, then returns it as a base64-encoded CSV file.
Response
Returns a FileDownloadPayload!
Arguments
| Name | Description |
|---|---|
input - SnapshotInput!
|
Example
Query
query snapshotDownload($input: SnapshotInput!) {
snapshotDownload(input: $input) {
content
filename
mimeType
}
}
Variables
{"input": SnapshotInput}
Response
{
"data": {
"snapshotDownload": {
"content": "xyz789",
"filename": "abc123",
"mimeType": "abc123"
}
}
}
snapshots
Description
Returns persisted snapshots for a CAT asset.
Response
Returns [SavedSnapshot!]!
Arguments
| Name | Description |
|---|---|
input - SnapshotsInput!
|
Example
Query
query snapshots($input: SnapshotsInput!) {
snapshots(input: $input) {
asset {
...AssetFragment
}
createdAt
id
name
snapshot {
...SnapshotFragment
}
}
}
Variables
{"input": SnapshotsInput}
Response
{
"data": {
"snapshots": [
{
"asset": Asset,
"createdAt": "abc123",
"id": "4",
"name": "xyz789",
"snapshot": Snapshot
}
]
}
}
Mutations
saveSnapshot
Description
Create a new snapshot
Response
Returns a SaveSnapshotPayload!
Arguments
| Name | Description |
|---|---|
input - SaveSnapshotInput!
|
Example
Query
mutation saveSnapshot($input: SaveSnapshotInput!) {
saveSnapshot(input: $input) {
savedSnapshot {
...SavedSnapshotFragment
}
}
}
Variables
{"input": SaveSnapshotInput}
Response
{
"data": {
"saveSnapshot": {"savedSnapshot": SavedSnapshot}
}
}
Network & Service
Queries
ping
Description
Returns true if the server is running.
Response
Returns a Boolean!
Example
Query
query ping {
ping
}
Response
{"data": {"ping": false}}
publicAnnouncements
Description
Returns active public announcements. Authentication is not required.
Response
Returns [AnnouncementPublic!]!
Example
Query
query publicAnnouncements {
publicAnnouncements {
body
ctaLabel
ctaUrl
dismissible
id
severity
title
}
}
Response
{
"data": {
"publicAnnouncements": [
{
"body": "abc123",
"ctaLabel": "xyz789",
"ctaUrl": "xyz789",
"dismissible": true,
"id": 4,
"severity": "CRITICAL",
"title": "abc123"
}
]
}
}
resolveXchHandle
Description
Resolve an XCHandle to its current payment address
Response
Returns a XchHandleResolution!
Arguments
| Name | Description |
|---|---|
handle - String!
|
Example
Query
query resolveXchHandle($handle: String!) {
resolveXchHandle(handle: $handle) {
address
expiration
handle
indexedPeakHeight
status
}
}
Variables
{"handle": "xyz789"}
Response
{
"data": {
"resolveXchHandle": {
"address": "xyz789",
"expiration": "xyz789",
"handle": "abc123",
"indexedPeakHeight": 987,
"status": "EXPIRED"
}
}
}
Mutations
coinset
Description
Forward a request to a documented public Coinset Full Node endpoint.
Response
Returns a CoinsetPayload!
Arguments
| Name | Description |
|---|---|
input - CoinsetInput!
|
Example
Query
mutation coinset($input: CoinsetInput!) {
coinset(input: $input) {
response
}
}
Variables
{"input": CoinsetInput}
Response
{"data": {"coinset": {"response": {}}}}
Types
AddContactAddressInput
AddContactAddressPayload
Fields
| Field Name | Description |
|---|---|
address - ContactAddress!
|
The newly added blockchain address |
Example
{"address": ContactAddress}
AddContactEmailInput
AddContactEmailPayload
Fields
| Field Name | Description |
|---|---|
email - ContactEmail!
|
The newly added email |
Example
{"email": ContactEmail}
AdditionalEmailChangeAction
Description
The type of action for additional email changes
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ADD"
AddOfferInput
AddOfferPayload
Fields
| Field Name | Description |
|---|---|
offer - WalletOffer!
|
Example
{"offer": WalletOffer}
AddPublicKeysToSignerInput
AddPublicKeysToSignerPayload
Fields
| Field Name | Description |
|---|---|
signerPublicKeys - [SignerPublicKey!]!
|
Public keys assigned to signer |
Example
{"signerPublicKeys": [SignerPublicKey]}
AddressInput
AddSignerAppKeyInput
Example
{
"appId": "xyz789",
"curve": "BLS12_381",
"oneTimeVerificationToken": "abc123",
"publicKey": "abc123",
"signature": "xyz789"
}
AddSignerAppKeyPayload
AddSignersToWalletInput
AddSignersToWalletPayload
Fields
| Field Name | Description |
|---|---|
walletSigners - [WalletSigner!]!
|
Example
{"walletSigners": [WalletSigner]}
AddSubscriptionToWalletInput
Fields
| Input Field | Description |
|---|---|
autoSubscribe - Boolean
|
Automatically subscribe the wallet to new topics. Default = false |
avatar - String
|
Base64-encoded subscription avatar, up to 10 MB. Supported formats: JPEG, PNG, and GIF. |
name - String
|
Custom subscription name. Required when subscriptionId is omitted. |
subscriptionId - ID
|
Existing platform subscription to link. Omit when creating a custom subscription. |
vaultAddress - String
|
Vault receive address (xch/txch). Resolved to a launcher ID on the server. |
vaultLauncherId - Bytea
|
Vault launcher ID for a custom subscription. Required unless vaultAddress is provided. |
walletId - ID!
|
Wallet receiving the subscription. |
Example
{
"autoSubscribe": true,
"avatar": "xyz789",
"name": "xyz789",
"subscriptionId": "4",
"vaultAddress": "abc123",
"vaultLauncherId": Bytea,
"walletId": 4
}
AddSubscriptionToWalletPayload
Fields
| Field Name | Description |
|---|---|
walletSubscription - WalletSubscription!
|
Example
{"walletSubscription": WalletSubscription}
AddTopicInput
AddTopicsToSubscriptionInput
Fields
| Input Field | Description |
|---|---|
subscriptionTopicIds - [ID!]
|
Existing platform topic IDs to add. Default = [] |
topics - [AddTopicInput!]
|
Custom topics to create and add. Default = [] |
walletSubscriptionId - ID!
|
Wallet subscription global ID. |
Example
{
"subscriptionTopicIds": ["4"],
"topics": [AddTopicInput],
"walletSubscriptionId": 4
}
AddTopicsToSubscriptionPayload
Fields
| Field Name | Description |
|---|---|
walletSubscription - WalletSubscription
|
Example
{"walletSubscription": WalletSubscription}
AdvancedMultiIssuanceCAT2Config
Fields
| Input Field | Description |
|---|---|
tailNonce - String
|
The tail nonce to use for creating a new multi issuance CAT. If not provided, the origin coin will be used as the tail nonce. |
Example
{"tailNonce": "xyz789"}
Airdrop
Fields
| Field Name | Description |
|---|---|
coins - AirdropCoinsConnection!
|
Coins included in the airdrop. |
createdAt - String!
|
|
csvData - String
|
The csv data of the airdrop |
id - ID!
|
|
name - String!
|
The name of the airdrop |
progress - AirdropProgress!
|
Progress information for this airdrop |
type - String!
|
The type of the airdrop |
updatedAt - String!
|
|
wallet - Wallet!
|
The wallet this airdrop belongs to |
Example
{
"coins": AirdropCoinsConnection,
"createdAt": "xyz789",
"csvData": "abc123",
"id": 4,
"name": "xyz789",
"progress": AirdropProgress,
"type": "abc123",
"updatedAt": "xyz789",
"wallet": Wallet
}
AirdropClawbackPayment
Description
A payment an airdrop made with a clawback, and the payout that made it.
Fields
| Field Name | Description |
|---|---|
address - String!
|
The address of the recipient. |
amount - BigInt!
|
The amount paid, in mojos. |
expirationTime - DateTime!
|
When the clawback window of the payment ends. |
payoutId - ID!
|
The global ID of the payout wallet transaction, such as WalletTransaction_<id>, matching one of AirdropTransactionSummary.payouts. Each payout pays one batch of the airdrop. |
receiverPuzzleHash - String!
|
The puzzle hash of the recipient, in hex. |
Example
{
"address": "abc123",
"amount": {},
"expirationTime": "2007-12-03T10:15:30Z",
"payoutId": "4",
"receiverPuzzleHash": "xyz789"
}
AirdropCoinRecord
Fields
| Field Name | Description |
|---|---|
coinRecord - CoinRecord!
|
The state of the coin |
id - ID!
|
|
state - String!
|
The state of the coin |
Example
{
"coinRecord": CoinRecord,
"id": "4",
"state": "xyz789"
}
AirdropCoinsConnection
Fields
| Field Name | Description |
|---|---|
edges - [AirdropCoinsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [AirdropCoinsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
AirdropCoinsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - AirdropCoinRecord!
|
Example
{
"cursor": "abc123",
"node": AirdropCoinRecord
}
AirdropCoinStateCount
Description
Count of coins in each state for a specific coin type
Example
{"calculated": 123, "created": 123, "spent": 123, "submitted": 987}
AirdropCoinStatuses
Description
Breakdown of coins by type and their states
Fields
| Field Name | Description |
|---|---|
mint - AirdropCoinStateCount
|
Mint coin states |
node - AirdropCoinStateCount
|
Intermediate node coin states |
root - AirdropCoinStateCount
|
Root coin states |
target - AirdropCoinStateCount
|
Target coin states |
Example
{
"mint": AirdropCoinStateCount,
"node": AirdropCoinStateCount,
"root": AirdropCoinStateCount,
"target": AirdropCoinStateCount
}
AirdropConfig
Fields
| Input Field | Description |
|---|---|
secureTheBagAirdropConfig - SecureTheBagAirdropConfigInput
|
Example
{
"secureTheBagAirdropConfig": SecureTheBagAirdropConfigInput
}
AirdropInterface
AirdropPendingPayment
AirdropProgress
Fields
| Field Name | Description |
|---|---|
coinStatuses - AirdropCoinStatuses!
|
Breakdown of coins by type and state |
totalCoins - Int!
|
The total number of coins in the airdrop |
unrolledCoins - Int!
|
The number of coins that have been unrolled (CREATED targets or SPENT nodes/mints) |
Example
{
"coinStatuses": AirdropCoinStatuses,
"totalCoins": 987,
"unrolledCoins": 123
}
AirdropsSortKey
Description
The set of valid sort keys for the Airdrops query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
AirdropTransactionSummary
Fields
| Field Name | Description |
|---|---|
clawbackExpirationTime - DateTime
|
The latest expiration time among those clawback coins. |
clawbackPayments - [AirdropClawbackPayment!]!
|
Every clawback payment of the airdrop that exists on chain, including ones already clawed back, finalized, or pushed through. Payments without a clawback are not listed. |
clawbackRecipientCount - Int!
|
The number of recipients whose clawback coins are not yet finalized, pushed through, or clawed back. |
deliveredRecipientCount - Int!
|
The number of recipients whose coins exist on chain. After the funding transaction settles, the airdrop creates the recipient coins over the following blocks, so this can trail recipientCount. A clawback coin can be clawed back only once it exists. |
isClawbackPending - Boolean!
|
Whether any of those clawback coins can still be clawed back. |
payouts - [WalletTransaction!]!
|
The transactions that paid recipients with a clawback. They are left out of the wallet transaction list and are listed here instead. |
pendingPayments - [AirdropPendingPayment!]!
|
The airdrop's payments whose coins are not on chain yet. The airdrop creates them batch by batch after the funding transaction settles, so this shrinks as batches arrive and is empty once deliveredRecipientCount reaches recipientCount. |
recipientCount - Int!
|
The number of recipients in the airdrop. |
Example
{
"clawbackExpirationTime": "2007-12-03T10:15:30Z",
"clawbackPayments": [AirdropClawbackPayment],
"clawbackRecipientCount": 123,
"deliveredRecipientCount": 987,
"isClawbackPending": true,
"payouts": [WalletTransaction],
"pendingPayments": [AirdropPendingPayment],
"recipientCount": 123
}
AirdropType
Description
The set of valid airdrop types.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"SECURE_THE_BAG"
AirdropValidationError
AirdropValidationResult
Fields
| Field Name | Description |
|---|---|
error - String
|
The first error, prefixed with its row number. |
errors - [AirdropValidationError!]!
|
Every validation error, in file order. |
isValid - Boolean!
|
|
totalAmount - String!
|
Sum of the amounts in rows that passed validation, in token units. |
totalRecipients - Int!
|
Number of rows that passed validation. |
Example
{
"error": "abc123",
"errors": [AirdropValidationError],
"isValid": true,
"totalAmount": "abc123",
"totalRecipients": 987
}
AnnouncementPublic
Description
Active announcement fields safe for client banner surfaces
Example
{
"body": "xyz789",
"ctaLabel": "xyz789",
"ctaUrl": "abc123",
"dismissible": false,
"id": "4",
"severity": "CRITICAL",
"title": "abc123"
}
AnnouncementSeverity
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"CRITICAL"
ApproveVaultRecoveryReviewInput
ApproveVaultRecoveryReviewPayload
Fields
| Field Name | Description |
|---|---|
vaultRecoveryReview - VaultRecoveryReview!
|
The approved recovery review |
Example
{"vaultRecoveryReview": VaultRecoveryReview}
Asset
Fields
| Field Name | Description |
|---|---|
assetHash - String
|
The CAT asset hash. Null for XCH. |
canViewerUpdate - Boolean!
|
Whether viewer can update asset or not |
decimals - Int!
|
|
displayName - String!
|
The user's custom display name for the asset (falls back to the asset's actual name if not customized) Use name instead. |
displaySymbol - String
|
The user's custom display symbol for the asset (falls back to the asset's actual symbol if not customized) Use symbol instead. |
id - ID!
|
|
identifier - String!
|
The CAT asset hash, or the network genesis challenge for XCH. Use assetHash for CAT assets and network.genesisChallenge for XCH. |
issuerWallet - Wallet
|
|
mintState - TransactionStateString
|
|
multiIssuance - Boolean!
|
Whether this asset supports multiple issuances |
name - String!
|
|
revocable - Boolean!
|
Whether this asset is revocable |
symbol - String
|
|
totalMelted - BigInt!
|
The total amount of this asset that has been melted (cumulative) |
totalMinted - BigInt!
|
The total amount of this asset that has been minted (cumulative) |
totalSupply - BigInt!
|
The current circulating supply of this asset (totalMinted - totalMelted) |
type - AssetType!
|
Use assetHash to distinguish CAT2 assets from XCH. |
Example
{
"assetHash": "xyz789",
"canViewerUpdate": false,
"decimals": 987,
"displayName": "abc123",
"displaySymbol": "abc123",
"id": "4",
"identifier": "xyz789",
"issuerWallet": Wallet,
"mintState": "CLAWED_BACK",
"multiIssuance": false,
"name": "xyz789",
"revocable": true,
"symbol": "abc123",
"totalMelted": {},
"totalMinted": {},
"totalSupply": {},
"type": "CAT1"
}
AssetConfig
Fields
| Input Field | Description |
|---|---|
cat2Config - CAT2Config
|
Example
{"cat2Config": CAT2Config}
AssetInterface
Fields
| Field Name | Description |
|---|---|
assetHash - String
|
The CAT asset hash. Null for XCH. |
canViewerUpdate - Boolean!
|
Whether viewer can update asset or not |
decimals - Int!
|
|
displayName - String!
|
The user's custom display name for the asset (falls back to the asset's actual name if not customized) Use name instead. |
displaySymbol - String
|
The user's custom display symbol for the asset (falls back to the asset's actual symbol if not customized) Use symbol instead. |
id - ID!
|
|
identifier - String!
|
The CAT asset hash, or the network genesis challenge for XCH. Use assetHash for CAT assets and network.genesisChallenge for XCH. |
issuerWallet - Wallet
|
|
mintState - TransactionStateString
|
|
multiIssuance - Boolean!
|
Whether this asset supports multiple issuances |
name - String!
|
|
revocable - Boolean!
|
Whether this asset is revocable |
symbol - String
|
|
totalMelted - BigInt!
|
The total amount of this asset that has been melted (cumulative) |
totalMinted - BigInt!
|
The total amount of this asset that has been minted (cumulative) |
totalSupply - BigInt!
|
The current circulating supply of this asset (totalMinted - totalMelted) |
type - AssetType!
|
Use assetHash to distinguish CAT2 assets from XCH. |
Possible Types
| AssetInterface Types |
|---|
Example
{
"assetHash": "abc123",
"canViewerUpdate": true,
"decimals": 987,
"displayName": "abc123",
"displaySymbol": "abc123",
"id": "4",
"identifier": "abc123",
"issuerWallet": Wallet,
"mintState": "CLAWED_BACK",
"multiIssuance": false,
"name": "xyz789",
"revocable": false,
"symbol": "xyz789",
"totalMelted": {},
"totalMinted": {},
"totalSupply": {},
"type": "CAT1"
}
AssetType
Description
The set of valid asset types.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CAT1"
AuthorizationResourceType
Description
The resource families supported by scoped authorization.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CONTACT"
AvailablePlatformSubscription
Description
A platform subscription with subscription status for the requested wallet.
Fields
| Field Name | Description |
|---|---|
avatarFileName - String
|
Avatar file name of the subscription |
id - ID!
|
The unique identifier of the subscription |
isSubscribed - Boolean!
|
Whether the requested wallet subscribes to this platform subscription. |
name - String
|
Name of the subscription |
topics - AvailablePlatformSubscriptionTopicsConnection!
|
Topics associated with the subscription |
Arguments |
|
vaultLauncherId - String!
|
Vault launcher ID as a 64-character hexadecimal string. |
walletSubscriptionId - ID
|
Wallet subscription global ID (WalletSubscription_<cuid>) when subscribed. |
Example
{
"avatarFileName": "abc123",
"id": 4,
"isSubscribed": false,
"name": "xyz789",
"topics": AvailablePlatformSubscriptionTopicsConnection,
"vaultLauncherId": "abc123",
"walletSubscriptionId": 4
}
AvailablePlatformSubscriptionTopicsConnection
Fields
| Field Name | Description |
|---|---|
edges - [AvailablePlatformSubscriptionTopicsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [
AvailablePlatformSubscriptionTopicsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 987
}
AvailablePlatformSubscriptionTopicsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SubscriptionTopic!
|
Example
{
"cursor": "abc123",
"node": SubscriptionTopic
}
BeforeAfterData
Fields
| Field Name | Description |
|---|---|
after - [KeyChangeItem!]!
|
The key configuration after the recovery |
before - [KeyChangeItem!]!
|
The key configuration before the recovery |
Example
{
"after": [KeyChangeItem],
"before": [KeyChangeItem]
}
BigInt
Description
A signed whole integer whose magnitude fits in 64 bits. JSON clients should send values outside the safe JavaScript integer range as decimal strings.
Example
{}
BlockRecord
Boolean
Description
The Boolean scalar type represents true or false.
Example
true
BroadcastMessageDetails
BulkMintNftsInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Submit automatically after all required signatures are collected. Default = false |
fee - BigInt!
|
Blockchain fee in XCH mojos. Default = 0 |
mints - [MintNftItemInput!]!
|
NFTs to mint. A request can contain at most 5,000 items. |
walletId - ID!
|
Source wallet global ID in Wallet_<cuid> format. |
Example
{
"autoSubmit": true,
"fee": {},
"mints": [MintNftItemInput],
"walletId": "4"
}
BulkMintNftsPayload
Fields
| Field Name | Description |
|---|---|
airdropId - ID!
|
The Secure The Mint airdrop ID |
nftIds - [String!]!
|
|
signatureRequest - SignatureRequest!
|
Example
{
"airdropId": "4",
"nftIds": ["xyz789"],
"signatureRequest": SignatureRequest
}
BuyOrder
Fields
| Field Name | Description |
|---|---|
address - String!
|
The address to send the XCH to |
autoFinalizeEnabled - Boolean!
|
Effective auto-finalize status for this order, based on global setting, buy order override, and tier threshold policy. |
autoFinalizeOverrideEnabled - Boolean
|
Per-buy-order override for automatic finalization. Null means the default system behavior is applied. |
createdAt - String!
|
|
estimatedCompletionDate - DateTime
|
The estimated completion date for this buy order |
estimatedSettlementDate - String
|
The estimated settlement date from Stripe (when funds become available) |
fiatAmount - String!
|
The amount in fiat currency that the user wants to spend |
fiatCurrency - String!
|
The fiat currency code (e.g., USD, EUR, GBP) |
id - ID!
|
|
paymentStatus - BuyOrderPaymentStatus!
|
Derived payment status for display and filtering |
payoutErrorMessage - String
|
Error message from the latest failed payout attempt (if any) |
stripePaymentSession - StripePaymentSession!
|
The Stripe payment session used for payment |
stripePaymentStatus - StripePaymentStatus!
|
Current state of the Stripe payment |
tierContribution - TierContribution
|
Whether this purchase contributes to tier progression. Null if no payment method purchase record exists. |
timeline - [BuyOrderTimelineEvent!]!
|
Timeline of events for this buy order |
updatedAt - String!
|
|
wallet - Wallet
|
The wallet/vault where XCH will be deposited |
walletTransaction - WalletTransaction
|
The wallet transaction associated with this buy order |
xchAmount - BigInt!
|
The amount of XCH to be purchased |
xchPricePerUnit - String!
|
The price of XCH in the specified fiat currency at the time of order |
xchStatus - XCHStatus!
|
Current state of the XCH purchase |
Example
{
"address": "xyz789",
"autoFinalizeEnabled": true,
"autoFinalizeOverrideEnabled": false,
"createdAt": "xyz789",
"estimatedCompletionDate": "2007-12-03T10:15:30Z",
"estimatedSettlementDate": "xyz789",
"fiatAmount": "xyz789",
"fiatCurrency": "abc123",
"id": "4",
"paymentStatus": "CANCELED",
"payoutErrorMessage": "xyz789",
"stripePaymentSession": StripePaymentSession,
"stripePaymentStatus": "CANCELED",
"tierContribution": "EXCLUDED",
"timeline": [BuyOrderTimelineEvent],
"updatedAt": "xyz789",
"wallet": Wallet,
"walletTransaction": WalletTransaction,
"xchAmount": {},
"xchPricePerUnit": "xyz789",
"xchStatus": "CLAWBACK_EXPIRED"
}
BuyOrderEventType
Description
Types of events in a buy order timeline
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLAWBACK_CREATED"
BuyOrderPaymentStatus
Description
Derived payment status for buy orders
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELED"
BuyOrderTimelineErrorDetails
BuyOrderTimelineEvent
Description
An event in a buy order timeline
Fields
| Field Name | Description |
|---|---|
errorDetails - BuyOrderTimelineErrorDetails
|
Error details if this is a failure event |
status - TimelineEventStatus!
|
Status of the event (completed, failed, or pending) |
timestamp - DateTime!
|
When the event occurred |
type - BuyOrderEventType!
|
Type of the event |
Example
{
"errorDetails": BuyOrderTimelineErrorDetails,
"status": "COMPLETED",
"timestamp": "2007-12-03T10:15:30Z",
"type": "CLAWBACK_CREATED"
}
Bytea
Description
A byte array. Send a hexadecimal string, with or without a 0x prefix; responses omit the prefix.
Example
Bytea
CancelOfferInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Submit the cancellation automatically after all required signatures are collected. Used only on chain. Default = false |
cancelOffChain - Boolean
|
Cancel only in Cloud Wallet without an on-chain spend. Off-chain cancellation cannot prevent another holder from taking the offer. Default = false |
fee - BigInt
|
Blockchain fee in XCH mojos. Used only for on-chain cancellation. |
offerId - ID!
|
Offer global ID in Offer_<hex> format. |
walletId - ID!
|
Wallet global ID in Wallet_<cuid> format. |
Example
{
"autoSubmit": true,
"cancelOffChain": true,
"fee": {},
"offerId": 4,
"walletId": 4
}
CancelOfferPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest
|
The signature request to cancel the offer (only when cancelling on chain) |
Example
{"signatureRequest": SignatureRequest}
CAT2Config
Fields
| Input Field | Description |
|---|---|
multiIssuance - MultiIssuanceCAT2Config
|
|
singleIssuance - SingleIssuanceCAT2Config
|
Example
{
"multiIssuance": MultiIssuanceCAT2Config,
"singleIssuance": SingleIssuanceCAT2Config
}
ClawbackInput
Fields
| Input Field | Description |
|---|---|
timestamp - DateTime
|
The date and time when this transaction finalizes. Until then, the transaction can be clawed back |
Example
{"timestamp": "2007-12-03T10:15:30Z"}
ClawbackState
Fields
| Field Name | Description |
|---|---|
canClawback - Boolean!
|
Whether the sender can claw back the transaction (before timer expires) |
canFinalize - Boolean!
|
Whether the sender can finalize the transaction (push funds to receiver) |
canPushThrough - Boolean!
|
Whether the sender can push through the transaction after timer expired on-chain |
isClawbackClawedBack - Boolean!
|
Whether the clawback transaction has been clawed back |
isClawbackExpired - Boolean!
|
Whether the clawback timer has expired |
isClawbackFinalized - Boolean!
|
Whether the clawback transaction has been finalized |
isClawbackPending - Boolean!
|
Whether the clawback timer has not yet expired |
Example
{
"canClawback": false,
"canFinalize": true,
"canPushThrough": true,
"isClawbackClawedBack": false,
"isClawbackExpired": true,
"isClawbackFinalized": true,
"isClawbackPending": true
}
ClawBackTransactionInput
Example
{
"autoSubmit": true,
"fee": {},
"walletTransactionId": "4"
}
ClawBackTransactionPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Signature request for transaction |
Example
{"signatureRequest": SignatureRequest}
ClearSigningDetails
Description
Additional clear-signing data that allows a signer to securely verify a signature request
Fields
| Field Name | Description |
|---|---|
p2Clawbacks - [P2ClawbackDetails!]!
|
Clawback puzzle metadata for the input coins being spent |
p2ConditionsOrSingletons - [P2ConditionsOrSingletonDetails!]!
|
P2 conditions-or-singleton puzzle metadata for the input and output coins referenced by this signature request |
reservedOfferCoinSpends - [CoinSpend!]
|
Future offer coin spends for coin-reservation offer flows, including requested-payment reveal spends |
vaultNonces - [Int!]!
|
All known nonces (address indices) for this signature request's wallet vault |
Example
{
"p2Clawbacks": [P2ClawbackDetails],
"p2ConditionsOrSingletons": [
P2ConditionsOrSingletonDetails
],
"reservedOfferCoinSpends": [CoinSpend],
"vaultNonces": [987]
}
Coin
CoinRecord
Fields
| Field Name | Description |
|---|---|
address - String!
|
The address of the coin record |
amount - BigInt!
|
Coin amount in mojos. |
asset - Asset!
|
CAT asset for this coin, or the XCH asset when the coin is XCH. |
createdBlockHeight - Int
|
The block height at which the coin record was created |
id - ID!
|
|
isLinkedToOpenOffer - Boolean!
|
Whether the coin is linked to an open offer |
isLocked - Boolean!
|
Whether the coin is locked in an active offer |
name - Bytea!
|
The name of the coin record |
parentCoinName - Bytea!
|
The parent coin name of the coin record |
puzzleHash - Bytea!
|
The puzzle hash of the coin record |
spentBlockHeight - Int
|
The block height at which the coin record was spent |
state - CoinRecordState!
|
The state of the coin record |
Example
{
"address": "xyz789",
"amount": {},
"asset": Asset,
"createdBlockHeight": 987,
"id": "4",
"isLinkedToOpenOffer": false,
"isLocked": false,
"name": Bytea,
"parentCoinName": Bytea,
"puzzleHash": Bytea,
"spentBlockHeight": 987,
"state": "LOCKED"
}
CoinRecordsSortKey
Description
The set of valid sort keys for the CoinRecords query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"AMOUNT"
CoinRecordState
Description
The state of the coin record
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"LOCKED"
CoinsetInput
CoinsetPayload
Fields
| Field Name | Description |
|---|---|
response - JSON!
|
JSON response returned by Coinset |
Example
{"response": {}}
CoinSpend
CombineCoinsInput
Fields
| Input Field | Description |
|---|---|
assetHash - String
|
Optional CAT asset hash to combine. If omitted, XCH is assumed. |
fee - BigInt
|
An optional blockchain fee, in mojos |
fromAddressIndex - Int
|
Optional vault address derivation index to combine from. Automatic selection and the combined coin both use that address. Defaults to 0 (primary address). |
inputCoinIds - [ID!]
|
Coin global IDs in CoinRecord_<hex> format. When provided, only these coins are combined. |
largestFirst - Boolean
|
Whether to select the largest-value coins first. Default = false |
maxCoinAmount - BigInt
|
Maximum value in mojos for each selected coin. Coins above this value are excluded. |
maxNumberOfCoins - Int
|
The maximum number of coins to combine. This option takes precedence over the others. The server additionally enforces a per-asset-variant hard cap to keep spend bundle cost under the block cost limit. |
numberOfCoins - Int
|
The number of coins to auto-select for combining. Minimum 2; the upper bound depends on asset type (see mutation description). |
targetAmount - BigInt
|
Select coins until their total reaches this value in mojos. One XCH is 1,000,000,000,000 mojos; one CAT is 1,000 mojos. |
walletId - ID!
|
The wallet ID for the origin of the transaction |
Example
{
"assetHash": "abc123",
"fee": {},
"fromAddressIndex": 123,
"inputCoinIds": ["4"],
"largestFirst": false,
"maxCoinAmount": {},
"maxNumberOfCoins": 987,
"numberOfCoins": 123,
"targetAmount": {},
"walletId": 4
}
CombineCoinsPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
The signature request for the transaction |
Example
{"signatureRequest": SignatureRequest}
CombineDetails
Example
{
"inputCoinsCount": 123,
"outputAmount": {},
"totalAmount": {},
"vaultId": "abc123",
"vaultName": "xyz789"
}
Contact
Fields
| Field Name | Description |
|---|---|
addresses - ContactAddressesConnection!
|
Contact blockchain addresses |
Arguments |
|
createdAt - String!
|
The date and time when the contact was created |
emails - ContactEmailsConnection!
|
Contact email addresses |
Arguments |
|
grantableOAuthScopes - [String!]!
|
|
Arguments
|
|
id - ID!
|
|
image - String
|
Base64 encoded image of the contact, currently disabled |
name - String
|
The name of the contact |
updatedAt - String!
|
The date and time when the contact was last updated |
Example
{
"addresses": ContactAddressesConnection,
"createdAt": "xyz789",
"emails": ContactEmailsConnection,
"grantableOAuthScopes": ["xyz789"],
"id": "4",
"image": "xyz789",
"name": "xyz789",
"updatedAt": "xyz789"
}
ContactAddress
Example
{
"address": "xyz789",
"contact": Contact,
"createdAt": "abc123",
"id": "4",
"label": "xyz789",
"updatedAt": "abc123"
}
ContactAddressesConnection
Fields
| Field Name | Description |
|---|---|
edges - [ContactAddressesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [ContactAddressesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
ContactAddressesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - ContactAddress!
|
Example
{
"cursor": "xyz789",
"node": ContactAddress
}
ContactAddressesSortKey
Description
The set of valid sort keys for the ContactAddresses query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ADDRESS"
ContactEmail
Example
{
"contact": Contact,
"createdAt": "xyz789",
"email": "xyz789",
"id": 4,
"updatedAt": "xyz789"
}
ContactEmailsConnection
Fields
| Field Name | Description |
|---|---|
edges - [ContactEmailsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [ContactEmailsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
ContactEmailsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - ContactEmail!
|
Example
{
"cursor": "abc123",
"node": ContactEmail
}
ContactEmailsSortKey
Description
The set of valid sort keys for the ContactEmails query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CREATED_AT"
ContactsSortKey
Description
The set of valid sort keys for the Contacts query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CREATED_AT"
CreateAirdropInput
Fields
| Input Field | Description |
|---|---|
airdropConfig - AirdropConfig!
|
|
assetHash - String
|
64-character lowercase hex CAT tail hash. Required by the current implementation; XCH airdrops are not supported. |
autoSubmit - Boolean
|
Submit automatically after all required signatures are collected. Default = true |
csv - String
|
CSV content containing the airdrop recipients and amounts, not a file path. |
fee - BigInt
|
Blockchain fee in XCH mojos. |
name - String
|
|
requestId - String
|
Caller-generated idempotency key for safe retries. |
walletId - ID!
|
Example
{
"airdropConfig": AirdropConfig,
"assetHash": "abc123",
"autoSubmit": true,
"csv": "abc123",
"fee": {},
"name": "abc123",
"requestId": "abc123",
"walletId": "4"
}
CreateAirdropPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
CreateAssetAndAirdropInput
Fields
| Input Field | Description |
|---|---|
assetConfig - AssetConfig!
|
Multi-issuance CAT2 configuration. Single-issuance assets are not supported by this mutation. |
autoSubmit - Boolean!
|
Submit automatically after all required signatures are collected. Default = true |
csv - String!
|
CSV content containing recipient addresses and CAT mojo amounts, not a file path. |
fee - BigInt!
|
Blockchain fee in XCH mojos. Default = 0 |
name - String!
|
Asset display name. |
requestId - String
|
Caller-generated idempotency key for safe retries. |
symbol - String
|
Optional asset ticker symbol. |
walletId - ID!
|
Wallet global ID in Wallet_<cuid> format. |
Example
{
"assetConfig": AssetConfig,
"autoSubmit": false,
"csv": "xyz789",
"fee": {},
"name": "abc123",
"requestId": "abc123",
"symbol": "abc123",
"walletId": "4"
}
CreateAssetAndAirdropPayload
Fields
| Field Name | Description |
|---|---|
asset - Asset
|
|
signatureRequest - SignatureRequest!
|
Example
{
"asset": Asset,
"signatureRequest": SignatureRequest
}
CreateAssetInput
Fields
| Input Field | Description |
|---|---|
address - String!
|
Bech32m address that receives the initial issuance. |
assetConfig - AssetConfig!
|
CAT2 issuance configuration. |
autoSubmit - Boolean!
|
Submit automatically after all required signatures are collected. Default = true |
fee - BigInt!
|
Blockchain fee in XCH mojos. Default = 0 |
name - String!
|
Asset display name. |
requestId - String
|
Caller-generated idempotency key for safe retries. |
symbol - String
|
Optional asset ticker symbol. |
walletId - ID!
|
Wallet global ID in Wallet_<cuid> format. |
Example
{
"address": "xyz789",
"assetConfig": AssetConfig,
"autoSubmit": true,
"fee": {},
"name": "abc123",
"requestId": "xyz789",
"symbol": "xyz789",
"walletId": "4"
}
CreateAssetPayload
Fields
| Field Name | Description |
|---|---|
asset - Asset
|
|
signatureRequest - SignatureRequest!
|
Example
{
"asset": Asset,
"signatureRequest": SignatureRequest
}
CreateContactInput
Fields
| Input Field | Description |
|---|---|
addresses - [AddressInput!]
|
List of blockchain addresses with optional labels |
emails - [String!]!
|
Non-empty list of email addresses associated with the contact. |
name - String!
|
Name of the contact |
organizationId - ID
|
Organization ID the contact belongs to |
Example
{
"addresses": [AddressInput],
"emails": ["abc123"],
"name": "abc123",
"organizationId": "4"
}
CreateContactPayload
Fields
| Field Name | Description |
|---|---|
contact - Contact!
|
New contact that has been created |
Example
{"contact": Contact}
CreateMessageInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Whether to automatically submit the transaction when all signatures are provided. Default = true |
fee - BigInt
|
The fee to pay |
message - String!
|
The message to publish |
topic - String!
|
The topic of the message to publish |
walletId - ID!
|
ID of wallet publishing the message |
Example
{
"autoSubmit": true,
"fee": {},
"message": "xyz789",
"topic": "xyz789",
"walletId": "4"
}
CreateMessagePayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Signature request for transaction |
Example
{"signatureRequest": SignatureRequest}
CreateOfferAssetInput
Example
{"amount": {}, "assetHash": "abc123"}
CreateOfferInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Submit the preliminary coin split automatically after all required signatures are collected. Applies only when splitInputCoins requires a split; the offer is recorded when the request is signed either way. Default = true |
expiresAt - DateTime
|
The date and time when the offer expires |
extraConditions - [String!]
|
Hex-encoded serialized CLVM conditions to include in one maker spend |
fee - BigInt
|
Blockchain fee in XCH mojos. |
fromAddressIndex - Int
|
Optional vault address derivation index to offer from. Defaults to 0 (primary address). The offered coins and NFTs, fee, change, and requested payments all use that address, so offered NFTs must be held there. |
offered - [CreateOfferAssetInput!]!
|
|
offeredNftIds - [String!]
|
NFT launcher IDs as 64-character hex strings. |
receiverAddress - String
|
Optional receiver address that is allowed to accept a one-sided offer |
requested - [CreateOfferAssetInput!]!
|
|
requestedNftIds - [String!]
|
NFT launcher IDs as 64-character hex strings. |
splitInputCoins - Boolean
|
Split input coins before creating the offer to avoid locking more balance than needed. Defaults to false. |
splitInputCoinsFee - BigInt
|
Fee for the preliminary coin split, in XCH mojos. Used only when splitInputCoins is true. |
walletId - ID!
|
Example
{
"autoSubmit": true,
"expiresAt": "2007-12-03T10:15:30Z",
"extraConditions": ["abc123"],
"fee": {},
"fromAddressIndex": 987,
"offered": [CreateOfferAssetInput],
"offeredNftIds": ["xyz789"],
"receiverAddress": "xyz789",
"requested": [CreateOfferAssetInput],
"requestedNftIds": ["xyz789"],
"splitInputCoins": true,
"splitInputCoinsFee": {},
"walletId": "4"
}
CreateOfferPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
CreateSignerAppAuthKeyByPublicKeyInput
Fields
| Input Field | Description |
|---|---|
curve - Curve
|
The cryptographic curve used for the public key. If not provided, it will be auto-detected from the public key. |
expiresAt - String!
|
When should the signerAppAuthKey expire. Can be any date in the future. Provide in ISO 8601 format. |
publicKey - String!
|
The public key that proves ownership of the signer app |
signature - String!
|
A signature of the message (signerAppId + timestamp) using the public key |
signerAppId - String!
|
The signerAppId to which the signerAppAuthKey will be bound |
timestamp - String!
|
The current time in seconds since epoch |
Example
{
"curve": "BLS12_381",
"expiresAt": "xyz789",
"publicKey": "xyz789",
"signature": "xyz789",
"signerAppId": "abc123",
"timestamp": "xyz789"
}
CreateSignerAppAuthKeyByPublicKeyPayload
Fields
| Field Name | Description |
|---|---|
signerAppAuthKey - SignerAppAuthKey
|
Example
{"signerAppAuthKey": SignerAppAuthKey}
CreateSignerInput
Fields
| Input Field | Description |
|---|---|
deduplicateName - Boolean
|
When the owner already has a signer with this name, append the next free counter, such as (2), instead of failing. Meant for generated names. |
keys - [Key!]!
|
Public keys to associate with new signer |
name - String
|
Name of new signer |
networkId - ID
|
ID of network to create new signer for |
userId - ID
|
New signer owner userId (if different than the authenticated user) |
Example
{
"deduplicateName": true,
"keys": [Key],
"name": "abc123",
"networkId": "4",
"userId": "4"
}
CreateSignerPayload
Fields
| Field Name | Description |
|---|---|
signer - Signer
|
New signer that has been created |
Example
{"signer": Signer}
CreateSignersInput
Fields
| Input Field | Description |
|---|---|
networkId - ID
|
|
signers - [SignerInput!]!
|
Array of signers to create |
userId - ID
|
New signer owner userId (if different than the authenticated user) |
Example
{"networkId": 4, "signers": [SignerInput], "userId": 4}
CreateSignersPayload
Fields
| Field Name | Description |
|---|---|
signers - [Signer!]
|
Example
{"signers": [Signer]}
CreateTransactionInput
Fields
| Input Field | Description |
|---|---|
address - String!
|
Destination bech32m address, beginning with xch or txch. |
amount - BigInt!
|
Amount in mojos. One XCH is 1,000,000,000,000 mojos; one CAT is 1,000 mojos. |
assetHash - String
|
64-character lowercase hex CAT tail hash. Omit for XCH; do not use an internal Asset ID. |
autoSubmit - Boolean
|
Submit to the network automatically after all required signatures are collected. Default = true |
clawback - ClawbackInput
|
Optional clawback configuration for the transaction |
fee - BigInt
|
Blockchain fee in XCH mojos. |
fromAddressIndex - Int
|
Optional vault address derivation index to send from. Defaults to 0 (primary address). |
memos - [String!]
|
Memos provided with transaction |
type - String
|
Transaction type. Only TRANSFER is supported, and it is the default. |
walletId - ID!
|
Wallet global ID in Wallet_<cuid> format. |
xchHandle - String
|
Optional XCHandle that resolved to address. Fails if the handle no longer resolves to address. |
Example
{
"address": "abc123",
"amount": {},
"assetHash": "abc123",
"autoSubmit": true,
"clawback": ClawbackInput,
"fee": {},
"fromAddressIndex": 123,
"memos": ["abc123"],
"type": "abc123",
"walletId": "4",
"xchHandle": "xyz789"
}
CreateTransactionPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Signature request for transaction |
Example
{"signatureRequest": SignatureRequest}
CreateVaultConfigTemplateInput
Example
{
"recoveryProviderId": 4,
"recoveryTimelock": 987,
"requiredCustodySigners": 987,
"requiredRecoverySigners": 123,
"signers": [VaultConfigTemplateSignerInput],
"vaultName": "abc123"
}
CreateVaultConfigTemplatePayload
Fields
| Field Name | Description |
|---|---|
vaultConfigTemplate - VaultConfigTemplate!
|
Example
{"vaultConfigTemplate": VaultConfigTemplate}
CreateVaultFromConfigTemplateInput
Fields
| Input Field | Description |
|---|---|
templateId - ID!
|
ID of the vault configuration template to use |
Example
{"templateId": "4"}
CreateVaultFromConfigTemplatePayload
Fields
| Field Name | Description |
|---|---|
wallet - Wallet
|
Example
{"wallet": Wallet}
CreateWalletInput
Fields
| Input Field | Description |
|---|---|
custodyConfig - CustodyConfig!
|
Custody configuration which defines the type and behavior of new wallet |
keys - [Key!]
|
Public keys to associate with the new wallet. |
name - String
|
Wallet display name, up to 50 characters. |
networkId - ID
|
Network global ID. Required when keys is not empty; otherwise the request network is used. |
userId - ID
|
New wallet owner userId (if different than the authenticated user) |
watchtower - Boolean
|
Whether the new wallet receives activity alerts. Recovery alerts are sent either way. Default = true |
watchtowerAlertSettings - [CreateWalletWatchtowerAlertSettingInput!]
|
Per-type watchtower alert settings for the new wallet. They have no effect while watchtower is false. A type not listed keeps its default. The recovery alerts are always sent and cannot be listed. Listing the same type twice is rejected. |
Example
{
"custodyConfig": CustodyConfig,
"keys": [Key],
"name": "abc123",
"networkId": "4",
"userId": "4",
"watchtower": false,
"watchtowerAlertSettings": [
CreateWalletWatchtowerAlertSettingInput
]
}
CreateWalletPayload
Fields
| Field Name | Description |
|---|---|
wallet - Wallet
|
Example
{"wallet": Wallet}
CreateWalletWatchtowerAlertSettingInput
Fields
| Input Field | Description |
|---|---|
alertType - WatchtowerAlertType!
|
The alert type to configure |
enabled - Boolean!
|
Whether the alert is sent at all |
frequency - WatchtowerAlertFrequency
|
How often the alert is emailed. Defaults to IMMEDIATE. Only IMMEDIATE is accepted for alert types that are not digestable. |
Example
{"alertType": "CLAWBACK_FINALIZED", "enabled": true, "frequency": "DAILY"}
Curve
Description
The set of valid curve types.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"BLS12_381"
CustodyConfig
Fields
| Input Field | Description |
|---|---|
standardCustodyConfig - StandardCustodyConfigInput
|
Standard wallet custody settings. Provide this or vaultCustodyConfig, but not both. |
vaultCustodyConfig - VaultCustodyConfigInput
|
Vault custody and recovery settings. Provide this or standardCustodyConfig, but not both. |
Example
{
"standardCustodyConfig": StandardCustodyConfigInput,
"vaultCustodyConfig": VaultCustodyConfigInput
}
DateTime
Description
A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the date-time format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.
Example
"2007-12-03T10:15:30Z"
DeleteAssetInput
Fields
| Input Field | Description |
|---|---|
assetHash - String!
|
Example
{"assetHash": "abc123"}
DeleteAssetPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Example
{"success": false}
DeleteContactInput
Fields
| Input Field | Description |
|---|---|
id - ID!
|
ID of the contact to delete |
Example
{"id": "4"}
DeleteContactPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the contact was deleted. |
Example
{"success": false}
DeleteSignerInput
Fields
| Input Field | Description |
|---|---|
id - ID!
|
ID of signer to delete |
Example
{"id": 4}
DeleteSignerPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the signer was successfully deleted or not |
Example
{"success": false}
DeleteTransactionInput
Fields
| Input Field | Description |
|---|---|
id - ID!
|
ID of wallet transaction to remove |
Example
{"id": 4}
DeleteTransactionPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the wallet transaction was successfully removed from history |
Example
{"success": false}
DeleteVaultConfigTemplateInput
Fields
| Input Field | Description |
|---|---|
id - ID!
|
ID of vault configuration template to delete |
Example
{"id": 4}
DeleteVaultConfigTemplatePayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the delete vault configuration template operation was successful or not |
Example
{"success": false}
DeleteWalletInput
Fields
| Input Field | Description |
|---|---|
id - ID!
|
ID of wallet to delete |
Example
{"id": 4}
DeleteWalletPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the delete wallet operation was successful or not |
Example
{"success": true}
DeriveVaultAddressInput
Fields
| Input Field | Description |
|---|---|
walletId - ID!
|
Minted vault wallet global ID in Wallet_<cuid> format. |
Example
{"walletId": 4}
DeriveVaultAddressPayload
FeatureFlag
FileDownloadPayload
FinalizeTransactionInput
Example
{"autoSubmit": true, "fee": {}, "walletTransactionId": 4}
FinalizeTransactionPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Signature request for transaction |
Example
{"signatureRequest": SignatureRequest}
GroupedCoinMetadataResult
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Example
4
IdentityVerificationStatus
Description
The status of user identity verification
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"FAILED"
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
123
JSON
Description
The JSON scalar type represents JSON values as specified by ECMA-404.
Example
{}
Key
KeyChangeItem
Fields
| Field Name | Description |
|---|---|
fingerprint - String
|
The fingerprint of the app key (only for APP and APP_SOFTWARE key types) |
keyType - KeyType!
|
The type of key |
passkeyName - String
|
The name of the passkey (only for PASSKEY key type) |
role - KeyRole!
|
The role of the key |
walletName - String
|
The name of the wallet (only for VAULT key type) |
Example
{
"fingerprint": "abc123",
"keyType": "APP",
"passkeyName": "abc123",
"role": "CUSTODY",
"walletName": "abc123"
}
KeyRole
Description
The set of key roles.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CUSTODY"
KeyType
Description
The set of valid key types.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"APP"
Message
Fields
| Field Name | Description |
|---|---|
bulletinCoinName - String!
|
The coin ID of the bulletin coin that contains this message |
createdAt - String!
|
Creation date of message |
id - ID!
|
|
message - String
|
The message |
state - MessageState
|
The state of the message |
topic - String
|
Topic message was published to |
vaultLauncherId - String!
|
Launcher ID of the vault that sent the message |
Example
{
"bulletinCoinName": "xyz789",
"createdAt": "xyz789",
"id": "4",
"message": "abc123",
"state": "PENDING",
"topic": "xyz789",
"vaultLauncherId": "xyz789"
}
MessageInterface
MessageState
Description
The set of valid MessageState types.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"PENDING"
MintNftItemInput
Fields
| Input Field | Description |
|---|---|
dataHash - String!
|
32-byte NFT data hash as 64 hexadecimal characters. |
dataUris - [String!]!
|
NFT data locations. The first item must be a valid URL. |
editionNumber - BigInt
|
Edition number. Omit for a one-of-one NFT. |
editionTotal - BigInt
|
Edition size. Omit for a one-of-one NFT. |
licenseHash - String
|
32-byte license hash as 64 hexadecimal characters. |
licenseUris - [String!]
|
NFT license locations. The first item must be a valid URL. |
metadataHash - String!
|
32-byte metadata hash as 64 hexadecimal characters. |
metadataUris - [String!]!
|
NFT metadata locations. The first item must be a valid URL. |
ownerAddress - String
|
Owner bech32m address. Omit to mint to the wallet. |
royaltyAddress - String
|
Royalty bech32m address. |
royaltyBasisPoints - Int!
|
Royalty in basis points. 100 basis points equals 1%. |
Example
{
"dataHash": "xyz789",
"dataUris": ["abc123"],
"editionNumber": {},
"editionTotal": {},
"licenseHash": "abc123",
"licenseUris": ["xyz789"],
"metadataHash": "xyz789",
"metadataUris": ["abc123"],
"ownerAddress": "abc123",
"royaltyAddress": "xyz789",
"royaltyBasisPoints": 987
}
MultiIssuanceCAT2Config
Fields
| Input Field | Description |
|---|---|
advanced - AdvancedMultiIssuanceCAT2Config
|
Advanced asset configuration. Only use if you know what you are doing |
amount - BigInt!
|
Amount of the multi issuance CAT2 to issue |
assetHash - String
|
The asset hash of an existing multi issuance CAT, to issue more of the same asset. |
revocable - Boolean!
|
Whether the multi issuance CAT2 is revocable |
Example
{
"advanced": AdvancedMultiIssuanceCAT2Config,
"amount": {},
"assetHash": "xyz789",
"revocable": false
}
Network
Example
{
"blockchainTime": "xyz789",
"createdAt": "abc123",
"genesisChallenge": "xyz789",
"height": 987,
"id": 4,
"name": "xyz789",
"prefix": "abc123",
"synced": true,
"updatedAt": "abc123"
}
Nft
Fields
| Field Name | Description |
|---|---|
coinId - String!
|
Our primary key, the hex-encoded coin ID of the NFT |
id - ID!
|
|
launcherId - String!
|
The hex-encoded launcher ID of the NFT |
metadata - NftMetadata
|
The parsed blockchain metadata of the NFT |
ownerAddress - String
|
The Bech32m address of the NFT owner |
royaltyAddress - String!
|
The Bech32m address of the NFT royalty receiver |
royaltyPercentage - Int!
|
The royalty percentage of the NFT expressed as basis points |
wallet - Wallet!
|
The wallet containing this NFT |
Example
{
"coinId": "abc123",
"id": 4,
"launcherId": "xyz789",
"metadata": NftMetadata,
"ownerAddress": "abc123",
"royaltyAddress": "abc123",
"royaltyPercentage": 123,
"wallet": Wallet
}
NftMetadata
Fields
| Field Name | Description |
|---|---|
dataHash - String
|
|
dataUris - [String!]!
|
|
editionNumber - Int!
|
|
editionTotal - Int!
|
|
licenseHash - String
|
|
licenseUris - [String!]!
|
|
metadataHash - String
|
|
metadataUris - [String!]!
|
Example
{
"dataHash": "xyz789",
"dataUris": ["xyz789"],
"editionNumber": 123,
"editionTotal": 123,
"licenseHash": "abc123",
"licenseUris": ["xyz789"],
"metadataHash": "xyz789",
"metadataUris": ["xyz789"]
}
NftOnChain
Fields
| Field Name | Description |
|---|---|
coinId - String!
|
Our primary key, the hex-encoded coin ID of the NFT |
id - ID!
|
|
launcherId - String!
|
The hex-encoded launcher ID of the NFT |
metadata - NftMetadata
|
The parsed blockchain metadata of the NFT |
ownerAddress - String
|
The Bech32m address of the NFT owner |
royaltyAddress - String!
|
The Bech32m address of the NFT royalty receiver |
royaltyPercentage - Int!
|
The royalty percentage of the NFT expressed as basis points |
Example
{
"coinId": "xyz789",
"id": "4",
"launcherId": "xyz789",
"metadata": NftMetadata,
"ownerAddress": "abc123",
"royaltyAddress": "abc123",
"royaltyPercentage": 987
}
NftsSortKey
Description
The set of valid sort keys for the nfts query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
Node
Fields
| Field Name | Description |
|---|---|
id - ID!
|
Possible Types
| Node Types |
|---|
Example
{"id": "4"}
NotifyVaultConfigTemplateSignerInput
Fields
| Input Field | Description |
|---|---|
vaultConfigTemplateSignerId - ID!
|
ID of the vault config template signer to send a notification for |
Example
{"vaultConfigTemplateSignerId": 4}
NotifyVaultConfigTemplateSignerPayload
Fields
| Field Name | Description |
|---|---|
vaultConfigTemplateSigner - VaultConfigTemplateOtherSigner
|
Example
{
"vaultConfigTemplateSigner": VaultConfigTemplateOtherSigner
}
OAuthScope
Fields
| Field Name | Description |
|---|---|
category - String!
|
Category used to group related permissions. |
creationResourceTypes - [AuthorizationResourceType!]!
|
Resource types this permission may create. |
description - String!
|
User-facing description of the permission. |
id - ID!
|
Stable permission identifier. |
resourceGrantNotRequired - Boolean!
|
Whether consent can grant this permission without selecting a resource. |
resourceType - AuthorizationResourceType!
|
Resource type to which the permission applies. |
scope - String!
|
Permission name requested during OAuth consent. |
Example
{
"category": "xyz789",
"creationResourceTypes": ["CONTACT"],
"description": "abc123",
"id": 4,
"resourceGrantNotRequired": true,
"resourceType": "CONTACT",
"scope": "xyz789"
}
OfferAsset
OfferAssetsSortKey
Description
The set of valid sort keys for the OfferAssetsSortKey query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CREATED_AT"
OfferDetails
Fields
| Field Name | Description |
|---|---|
assets - [SignatureRequestOfferAsset!]!
|
The assets that are associated with this offer. |
expiresAt - DateTime
|
The date and time when the offer expires |
fee - BigInt!
|
The fee that is associated with this offer |
nfts - [OfferNft!]!
|
The NFTs that are associated with this offer. |
Example
{
"assets": [SignatureRequestOfferAsset],
"expiresAt": "2007-12-03T10:15:30Z",
"fee": {},
"nfts": [OfferNft]
}
OfferInterface
Fields
| Field Name | Description |
|---|---|
bech32 - String!
|
|
createdAt - String!
|
The date and time when the offer was created |
creatorIncludedFee - BigInt
|
The fee included by the offer creator |
expiresAt - DateTime
|
|
spendBundle - String!
|
|
state - String
|
Possible Types
| OfferInterface Types |
|---|
Example
{
"bech32": "xyz789",
"createdAt": "abc123",
"creatorIncludedFee": {},
"expiresAt": "2007-12-03T10:15:30Z",
"spendBundle": "xyz789",
"state": "xyz789"
}
OfferNft
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
nft - NftOnChain
|
The NFT |
nftId - Bytea!
|
The launcher id of the NFT |
type - String!
|
Example
{
"id": 4,
"nft": NftOnChain,
"nftId": Bytea,
"type": "abc123"
}
OfferNftsSortKey
Description
The set of valid sort keys for the OfferNftsSortKey query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"ID"
OfferSettlementType
Description
The set of valid settlement types for the Offer.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
OfferState
Description
The set of valid states for an Offer.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"EXPIRED"
Organization
Fields
| Field Name | Description |
|---|---|
canViewerCreateApiKeys - Boolean!
|
Whether the viewer can create API keys for members of this organization. |
canViewerCreateUsers - Boolean!
|
Whether the viewer can add users to this organization. Requires the user management feature on the organization. |
canViewerDelete - Boolean!
|
|
canViewerReadOAuthClients - Boolean!
|
Whether the viewer can list this organization's OAuth app registrations. |
canViewerReadRecoveryReviews - Boolean!
|
Whether the viewer can review vault recoveries assigned to this organization as a recovery provider. |
canViewerReadUsers - Boolean!
|
Whether the viewer can review this organization's users. True for platform user readers, and for organization admins when the organization has the user management feature. |
canViewerUpdate - Boolean!
|
|
canViewerWriteOAuthClients - Boolean!
|
Whether the viewer can create and update this organization's OAuth app registrations. |
contacts - OrganizationContactsConnection!
|
The contacts that are associated with this organization |
Arguments |
|
createdAt - String!
|
|
featureFlags - [FeatureFlag!]!
|
Which feature flags and their limits are enabled for this organization |
grantableOAuthScopes - [String!]!
|
|
Arguments
|
|
id - ID!
|
|
name - String
|
The name of the organization |
plan - Plan!
|
The plan that this organization is subscribed to |
recoveryProviders - [RecoveryProviderPublic!]!
|
The recovery providers that are enabled for this organization |
sessionDuration - Int
|
The duration in milliseconds after which the user's sessions will expire due to inactivity |
updatedAt - String!
|
|
userAuthKeys - OrganizationUserAuthKeysConnection!
|
The user auth keys (API keys) from all users in this organization |
users - OrganizationUsersConnection!
|
|
Arguments |
|
Example
{
"canViewerCreateApiKeys": false,
"canViewerCreateUsers": false,
"canViewerDelete": false,
"canViewerReadOAuthClients": true,
"canViewerReadRecoveryReviews": true,
"canViewerReadUsers": false,
"canViewerUpdate": true,
"canViewerWriteOAuthClients": true,
"contacts": OrganizationContactsConnection,
"createdAt": "abc123",
"featureFlags": [FeatureFlag],
"grantableOAuthScopes": ["abc123"],
"id": 4,
"name": "abc123",
"plan": Plan,
"recoveryProviders": [RecoveryProviderPublic],
"sessionDuration": 987,
"updatedAt": "xyz789",
"userAuthKeys": OrganizationUserAuthKeysConnection,
"users": OrganizationUsersConnection
}
OrganizationContactsConnection
Fields
| Field Name | Description |
|---|---|
edges - [OrganizationContactsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [OrganizationContactsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
OrganizationContactsConnectionEdge
OrganizationUserAuthKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [OrganizationUserAuthKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [OrganizationUserAuthKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
OrganizationUserAuthKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - UserAuthKey!
|
Example
{
"cursor": "abc123",
"node": UserAuthKey
}
OrganizationUsersConnection
Fields
| Field Name | Description |
|---|---|
edges - [OrganizationUsersConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [OrganizationUsersConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
OrganizationUsersConnectionEdge
P2ClawbackDetails
Description
Metadata for a p2 clawback puzzle used by an input coin, exposed for clear signing
Fields
| Field Name | Description |
|---|---|
amount - BigInt!
|
The amount the clawback puzzle is committed to |
hinted - Boolean!
|
Whether the clawback puzzle is hinted (true for CAT/NFT clawbacks, false for plain XCH clawbacks) |
receiverPuzzleHash - Bytea!
|
The puzzle hash of the clawback receiver |
seconds - BigInt!
|
The unix timestamp (in seconds) at which the clawback expires |
senderPuzzleHash - Bytea!
|
The puzzle hash of the clawback sender |
Example
{
"amount": {},
"hinted": false,
"receiverPuzzleHash": Bytea,
"seconds": {},
"senderPuzzleHash": Bytea
}
P2ConditionsOrSingletonDetails
Description
Metadata for a p2 conditions-or-singleton puzzle referenced by this signature request, exposed for clear signing
Fields
| Field Name | Description |
|---|---|
fixedConditionsHash - Bytea!
|
The tree hash of the puzzle's fixed path, which commits to the fixed conditions in the format of its version |
launcherId - Bytea!
|
The launcher ID of the singleton authorized to spend this puzzle |
nonce - Int!
|
The nonce (address index) of the derived address |
version - P2ConditionsOrSingletonVersion!
|
The version of this puzzle. The launcher ID, nonce and fixed conditions hash give its puzzle hash in either version, so the version is informational for clear signing. |
Example
{
"fixedConditionsHash": Bytea,
"launcherId": Bytea,
"nonce": 987,
"version": "FIXED_PUZZLE_MEMBER"
}
P2ConditionsOrSingletonVersion
Description
The version of a p2 conditions-or-singleton puzzle, which determines the format of its fixed path's member.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"FIXED_PUZZLE_MEMBER"
P2PuzzleType
Description
The set of valid p2 puzzle types.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLAWBACK_V2"
PageInfo
Passkey
Fields
| Field Name | Description |
|---|---|
aaguid - String
|
AAGUID used for provider display/labeling. Set from the authenticator at registration (self-asserted) and editable via updatePasskey. For display only — not verified. |
archivedAt - String
|
The date and time when the login key was archived (soft-deleted), if applicable |
createdAt - String!
|
The date and time when the passkey was created |
id - ID!
|
|
name - String
|
The name of the passkey |
provider - PasskeyProvider!
|
The authenticator provider (name + icon) resolved from aaguid. Resolves to "Unknown" when aaguid is unset or unrecognized. For display only. |
publicKey - Bytea!
|
The public key of the passkey |
purposes - [PasskeyPurpose!]!
|
The purposes the passkey can be used for |
user - User
|
The user that owns the passkey |
webAuthnUserId - String!
|
The WebAuthn user handle for this passkey |
Example
{
"aaguid": "abc123",
"archivedAt": "xyz789",
"createdAt": "abc123",
"id": "4",
"name": "xyz789",
"provider": PasskeyProvider,
"publicKey": Bytea,
"purposes": ["LOGIN"],
"user": User,
"webAuthnUserId": "xyz789"
}
PasskeyCounts
Description
Passkey counts grouped by login archive state and active vault usage
Fields
| Field Name | Description |
|---|---|
fullyArchived - Int!
|
Passkeys without active login or vault access |
inactive - Int!
|
Unarchived passkeys without effective login access because the user is inactive |
loginAndVault - Int!
|
Passkeys with active login access and an active vault role |
loginOnly - Int!
|
Passkeys with active login access and no active vault role |
vaultOnly - Int!
|
Passkeys without login access that remain active on a vault |
Example
{
"fullyArchived": 987,
"inactive": 987,
"loginAndVault": 987,
"loginOnly": 123,
"vaultOnly": 123
}
PasskeyProvider
Description
The authenticator provider a passkey was created with, resolved from its self-asserted AAGUID. For display only.
Fields
| Field Name | Description |
|---|---|
icon - String
|
Public path to the provider icon (served from the web app public folder), or null if unavailable. Icons with distinct light/dark variants contain a "{theme}" placeholder in the path (e.g. "/passkey-providers/ |
name - String!
|
The human-readable provider name, or "Unknown" when the AAGUID is missing or unrecognised |
Example
{
"icon": "abc123",
"name": "abc123"
}
PasskeyPurpose
Description
The intended use for a passkey credential.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LOGIN"
PasskeysSortKey
Description
The set of valid sort keys for the Passkeys query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
PaymentMethodUserLimit
Fields
| Field Name | Description |
|---|---|
currentTier - PurchaseLimitTier
|
The current purchase limit tier assigned to this payment method |
fingerprint - String!
|
Stripe fingerprint string for the payment method |
hasDispute - Boolean!
|
Whether this payment method fingerprint has been flagged due to a dispute |
id - ID!
|
|
paymentMethodType - String!
|
Payment method type (e.g., "us_bank_account", "card") |
qualifyingTransactionsInTier - Int!
|
Number of transactions in the current tier that meet all progression criteria |
remainingTransactionsToProgress - Int!
|
Number of additional qualifying transactions needed to progress to the next tier |
Example
{
"currentTier": PurchaseLimitTier,
"fingerprint": "xyz789",
"hasDispute": true,
"id": 4,
"paymentMethodType": "abc123",
"qualifyingTransactionsInTier": 987,
"remainingTransactionsToProgress": 123
}
Plan
Fields
| Field Name | Description |
|---|---|
featureFlags - [FeatureFlag!]!
|
Feature flags included in this plan |
id - ID!
|
|
maxAssetCount - Int
|
Maximum number of assets allowed |
maxVaultCount - Int
|
Maximum number of vaults allowed |
name - String!
|
Example
{
"featureFlags": [FeatureFlag],
"id": "4",
"maxAssetCount": 987,
"maxVaultCount": 987,
"name": "xyz789"
}
Platform
Description
Mobile platform for signer app push notifications
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ANDROID"
PlatformPermission
Description
A permission granted on the platform as a whole, such as reading every buy order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PLATFORM_ANNOUNCEMENT_DELETE"
PublicKey
PublicKeysSortKey
Description
The set of valid sort keys for the PublicKeys query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CREATED_AT"
PublicKeyWithType
PurchaseLimitTier
Fields
| Field Name | Description |
|---|---|
autoFinalizeEnabled - Boolean!
|
Whether transactions in this tier should auto-finalize |
autoFinalizeThresholdAmountUsd - Int
|
Threshold amount in USD below which transactions auto-finalize |
clawbackDays - Int!
|
Number of days for the clawback period in this tier |
createdAt - String!
|
The date and time when the tier was created |
id - ID!
|
|
isActive - Boolean!
|
Whether this tier is currently active and available |
limitAmountUsd - Int!
|
Maximum purchase amount in USD for this tier |
minTransactionValuePercent - Int
|
Minimum % of tier limit that a transaction must be to count towards progression |
name - String!
|
The name of the tier (e.g., "Starter", "Bronze") |
order - Int!
|
The order of the tier for display and progression (1 = first tier) |
postCompletionDelayDays - Int
|
Number of days to wait after completion before counting a transaction towards progression |
requiredCompletedCount - Int!
|
Number of completed purchases required to progress to next tier |
requiredTimeInPreviousTierDays - Int
|
Number of days required in the previous tier before progression |
updatedAt - String!
|
The date and time when the tier was last updated |
Example
{
"autoFinalizeEnabled": false,
"autoFinalizeThresholdAmountUsd": 987,
"clawbackDays": 987,
"createdAt": "abc123",
"id": "4",
"isActive": true,
"limitAmountUsd": 123,
"minTransactionValuePercent": 123,
"name": "abc123",
"order": 123,
"postCompletionDelayDays": 987,
"requiredCompletedCount": 987,
"requiredTimeInPreviousTierDays": 123,
"updatedAt": "abc123"
}
PurchaseProgramState
Description
The state of the XCH purchase program
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"HALTED"
PuzzleHash
Fields
| Field Name | Description |
|---|---|
address - String!
|
Address associated with the puzzleHash |
publicKey - PublicKey!
|
|
puzzleHash - Bytea!
|
The puzzleHash |
type - P2PuzzleType!
|
The p2 puzzle type for this puzzle hash. |
Example
{
"address": "abc123",
"publicKey": PublicKey,
"puzzleHash": Bytea,
"type": "CLAWBACK_V2"
}
PuzzleHashesSortKey
Description
The set of valid sort keys for the PuzzleHashes query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
QueryAvailablePlatformSubscriptionsConnection
Fields
| Field Name | Description |
|---|---|
edges - [QueryAvailablePlatformSubscriptionsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [
QueryAvailablePlatformSubscriptionsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 123
}
QueryAvailablePlatformSubscriptionsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - AvailablePlatformSubscription!
|
Example
{
"cursor": "xyz789",
"node": AvailablePlatformSubscription
}
QueryCoinsConnection
Fields
| Field Name | Description |
|---|---|
edges - [QueryCoinsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [QueryCoinsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
QueryCoinsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - CoinRecord!
|
Example
{
"cursor": "xyz789",
"node": CoinRecord
}
QueryOauthScopesConnection
Fields
| Field Name | Description |
|---|---|
edges - [QueryOauthScopesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [QueryOauthScopesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
QueryOAuthScopesConnection
Fields
| Field Name | Description |
|---|---|
edges - [QueryOAuthScopesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [QueryOAuthScopesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
QueryOauthScopesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - OAuthScope!
|
Example
{
"cursor": "abc123",
"node": OAuthScope
}
QueryOAuthScopesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - OAuthScope!
|
Example
{
"cursor": "xyz789",
"node": OAuthScope
}
QueryVaultRecoveryReviewsConnection
Fields
| Field Name | Description |
|---|---|
edges - [QueryVaultRecoveryReviewsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [QueryVaultRecoveryReviewsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
QueryVaultRecoveryReviewsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - VaultRecoveryReview!
|
Example
{
"cursor": "xyz789",
"node": VaultRecoveryReview
}
RecipientAddressActivityStatus
Description
Whether an address has prior on-chain activity
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"UNAVAILABLE"
RecipientHistory
Fields
| Field Name | Description |
|---|---|
addressActivityStatus - RecipientAddressActivityStatus!
|
Whether the address has prior on-chain activity, or the lookup was unavailable. |
hasSentBefore - Boolean!
|
Whether this wallet has a settled outbound payment to the address. |
lastSentAt - DateTime
|
Creation time of the latest settled outbound payment to the address. |
Example
{
"addressActivityStatus": "UNAVAILABLE",
"hasSentBefore": true,
"lastSentAt": "2007-12-03T10:15:30Z"
}
RecoveryDetails
Fields
| Field Name | Description |
|---|---|
reason - String
|
The reason provided for the recovery |
recoveryKeyType - String
|
The type of the new recovery key |
recoveryMethod - String!
|
The recovery method used (INSTANT or DELAYED) |
spendKeyType - String!
|
The type of the new spend key |
timelockSeconds - Int!
|
The recovery clawback timelock in seconds |
vaultId - String!
|
ID of the vault being recovered |
vaultName - String
|
Name of the vault being recovered |
Example
{
"reason": "abc123",
"recoveryKeyType": "xyz789",
"recoveryMethod": "xyz789",
"spendKeyType": "abc123",
"timelockSeconds": 123,
"vaultId": "xyz789",
"vaultName": "abc123"
}
RecoveryEligibility
Description
Whether a vault recovery can currently be initiated.
Example
{
"eligible": false,
"message": "abc123",
"title": "xyz789"
}
RecoveryMethod
Values
| Enum Value | Description |
|---|---|
|
|
Uses recovery keys, with timelock |
|
|
Uses custody keys, no timelock |
Example
"DELAYED"
RecoveryProvider
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
The date and time when the recovery provider was created |
emails - [String!]!
|
|
enabled - Boolean!
|
Whether the recovery provider is enabled and available for selection |
id - ID!
|
|
isInUse - Boolean!
|
Whether the recovery provider is in use |
name - String!
|
|
thumbnail - String!
|
Thumbnail image, currently disabled |
thumbnailMimeType - String
|
MIME type of the thumbnail, currently disabled |
updatedAt - String!
|
The date and time when the recovery provider was last updated |
vaultAddress - PuzzleHash
|
The address of the recovery provider |
Example
{
"createdAt": "abc123",
"emails": ["abc123"],
"enabled": true,
"id": 4,
"isInUse": false,
"name": "xyz789",
"thumbnail": "abc123",
"thumbnailMimeType": "abc123",
"updatedAt": "abc123",
"vaultAddress": PuzzleHash
}
RecoveryProviderCommon
Description
Common interface for recovery provider types
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the recovery provider |
name - String!
|
The name of the recovery provider |
thumbnail - String!
|
The thumbnail image of the recovery provider, currently disabled |
Possible Types
| RecoveryProviderCommon Types |
|---|
Example
{
"id": 4,
"name": "abc123",
"thumbnail": "abc123"
}
RecoveryProviderPublic
Description
Public recovery provider information for selection during vault creation
Example
{
"id": "4",
"name": "xyz789",
"thumbnail": "xyz789"
}
RejectVaultRecoveryReviewInput
RejectVaultRecoveryReviewPayload
Fields
| Field Name | Description |
|---|---|
vaultRecoveryReview - VaultRecoveryReview!
|
The rejected recovery review |
Example
{"vaultRecoveryReview": VaultRecoveryReview}
RemoveContactAddressInput
RemoveContactAddressPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Indicates whether the removal was successful |
Example
{"success": true}
RemoveContactEmailInput
RemoveContactEmailPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Indicates whether the removal was successful |
Example
{"success": true}
RemovePublicKeysFromSignerInput
RemovePublicKeysFromSignerPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether public keys where successfully removed from signer or not |
Example
{"success": false}
RemoveSignersFromWalletInput
RemoveSignersFromWalletPayload
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Example
{"success": false}
RemoveSubscriptionFromWalletInput
Fields
| Input Field | Description |
|---|---|
walletSubscriptionId - ID!
|
Example
{"walletSubscriptionId": 4}
RemoveSubscriptionFromWalletPayload
Fields
| Field Name | Description |
|---|---|
wallet - Wallet!
|
Example
{"wallet": Wallet}
RemoveTopicFromSubscriptionInput
RemoveTopicFromSubscriptionPayload
Fields
| Field Name | Description |
|---|---|
walletSubscription - WalletSubscription!
|
Example
{"walletSubscription": WalletSubscription}
RequestSignerAppVerificationTokenPayload
Fields
| Field Name | Description |
|---|---|
token - String!
|
The token to be used to link the Chia Signer App. |
Example
{"token": "abc123"}
ResendSignatureRequestInput
Fields
| Input Field | Description |
|---|---|
signatureRequestId - ID!
|
Example
{"signatureRequestId": 4}
ResendSignatureRequestPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
RestoreVaultFromChainInput
Fields
| Input Field | Description |
|---|---|
launcherId - String!
|
The launcher ID of the vault singleton, as 32 bytes of hex with an optional 0x prefix |
name - String!
|
The name for the restored wallet (2-50 characters) |
proof - VaultKeyProofInput!
|
Proof that the viewer controls a custody or recovery key of the vault |
Example
{
"launcherId": "xyz789",
"name": "abc123",
"proof": VaultKeyProofInput
}
RestoreVaultFromChainPayload
Fields
| Field Name | Description |
|---|---|
wallet - Wallet
|
The restored wallet, or null if restoration failed |
Example
{"wallet": Wallet}
RestoreVaultFromConfigInput
Fields
| Input Field | Description |
|---|---|
configJson - String!
|
The vault configuration JSON string exported from vaultConfigDownload |
name - String!
|
The name for the restored wallet (2-50 characters) |
proof - VaultKeyProofInput!
|
Proof that the viewer controls a custody or recovery key of the vault in the configuration |
Example
{
"configJson": "xyz789",
"name": "xyz789",
"proof": VaultKeyProofInput
}
RestoreVaultFromConfigPayload
Fields
| Field Name | Description |
|---|---|
wallet - Wallet
|
The restored wallet, or null if restoration failed |
Example
{"wallet": Wallet}
RevokeAssetInput
Fields
| Input Field | Description |
|---|---|
addressToRevoke - String
|
Holder bech32m address to revoke from. Do not combine with coinIdsToRevoke. |
amount - BigInt
|
Amount in CAT mojos. Supported only with addressToRevoke; any change returns to the original holder. |
assetHash - String!
|
64-character lowercase hex CAT tail hash. Do not use an internal Asset ID. |
autoSubmit - Boolean!
|
Submit automatically after all required signatures are collected. Default = true |
coinIdsToRevoke - [ID!]
|
Coin global IDs in CoinRecord_<hex> format. Do not combine with addressToRevoke. |
fee - BigInt!
|
Blockchain fee in XCH mojos. Default = 0 |
melt - Boolean
|
Destroy the revoked tokens instead of sending them to targetAddress. |
memos - [String!]
|
Memos provided with transaction |
targetAddress - String
|
Bech32m destination for revoked tokens. Required unless melt is true. |
walletId - ID!
|
Vault wallet global ID in Wallet_<cuid> format. |
Example
{
"addressToRevoke": "xyz789",
"amount": {},
"assetHash": "abc123",
"autoSubmit": true,
"coinIdsToRevoke": ["4"],
"fee": {},
"melt": false,
"memos": ["abc123"],
"targetAddress": "xyz789",
"walletId": "4"
}
RevokeAssetPayload
Fields
| Field Name | Description |
|---|---|
asset - Asset
|
|
outstandingBatches - Int!
|
The number of batches that need to be revoked to fully revoke the asset. If 0, the asset has been fully revoked. |
signatureRequest - SignatureRequest!
|
Example
{
"asset": Asset,
"outstandingBatches": 987,
"signatureRequest": SignatureRequest
}
SavedSnapshot
Example
{
"asset": Asset,
"createdAt": "xyz789",
"id": "4",
"name": "abc123",
"snapshot": Snapshot
}
SavedSnapshotsInput
Fields
| Input Field | Description |
|---|---|
assetHash - String!
|
64-character lowercase hex CAT tail hash. |
Example
{"assetHash": "abc123"}
SaveSnapshotInput
SaveSnapshotPayload
Fields
| Field Name | Description |
|---|---|
savedSnapshot - SavedSnapshot!
|
Example
{"savedSnapshot": SavedSnapshot}
SecureTheBagAirdropConfigInput
Fields
| Input Field | Description |
|---|---|
leafWidth - Int
|
Example
{"leafWidth": 123}
SetVaultAddressLabelInput
Example
{
"addressIndex": 123,
"label": "abc123",
"walletId": 4
}
SetVaultAddressLabelPayload
Fields
| Field Name | Description |
|---|---|
vaultAddress - VaultAddress!
|
Vault address with updated label |
Example
{"vaultAddress": VaultAddress}
SignaturePayload
SignatureRequest
Fields
| Field Name | Description |
|---|---|
autoSubmit - Boolean!
|
Whether the request should automatically submit after signing |
broadcastMessageDetails - BroadcastMessageDetails
|
Detailed information about broadcast message operation |
clearSigningDetails - ClearSigningDetails!
|
Additional clear-signing data that allows a signer to securely verify a signature request |
coinSpends - [CoinSpend!]
|
The coin spends associated with the transaction |
combineDetails - CombineDetails
|
Detailed information about coin combine operation |
createdAt - String!
|
The date and time when the wallet transaction was created |
details - JSON!
|
|
displayCloudWalletSigningPrompt - Boolean!
|
Whether Cloud Wallet web should automatically show the signing prompt |
id - ID!
|
|
melt - Boolean
|
Whether this is a melt operation |
messages - [SignaturePayload!]!
|
|
offerDetails - OfferDetails
|
|
recoveryDetails - RecoveryDetails
|
Detailed information about vault recovery operation |
requestId - String
|
|
splitDetails - SplitDetails
|
Detailed information about coin split operation |
status - String!
|
|
transaction - WalletTransaction!
|
The wallet transaction associated with the signature request |
updatedAt - String!
|
The date and time when the wallet transaction was last updated |
vault - Vault
|
The vault information to securely parse a transaction |
wallet - Wallet!
|
The wallet associated with the wallet transaction |
Example
{
"autoSubmit": false,
"broadcastMessageDetails": BroadcastMessageDetails,
"clearSigningDetails": ClearSigningDetails,
"coinSpends": [CoinSpend],
"combineDetails": CombineDetails,
"createdAt": "abc123",
"details": {},
"displayCloudWalletSigningPrompt": false,
"id": "4",
"melt": false,
"messages": [SignaturePayload],
"offerDetails": OfferDetails,
"recoveryDetails": RecoveryDetails,
"requestId": "xyz789",
"splitDetails": SplitDetails,
"status": "abc123",
"transaction": WalletTransaction,
"updatedAt": "abc123",
"vault": Vault,
"wallet": Wallet
}
SignatureRequestCreatedPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
SignatureRequestOfferAsset
Example
{
"amount": {},
"asset": Asset,
"id": "4",
"royalty": {},
"type": "abc123"
}
SignatureRequestStatus
Description
The set of valid signature request status keys.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AWAITING_REVIEW"
SignatureRequestUpdatedPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
Signer
Description
A Signer represents an entity that can authenticate and authorize transactions in the system. It is associated with a group of public keys, which are used to verify the signatures on transactions.
Fields
| Field Name | Description |
|---|---|
canViewerDelete - Boolean!
|
Whether viewer can delete signer or not |
canViewerUpdate - Boolean!
|
Whether viewer can update signer or not |
createdAt - String!
|
|
grantableOAuthScopes - [String!]!
|
|
Arguments
|
|
id - ID!
|
|
name - String
|
Name of signer |
network - Network!
|
Network associated with signer |
publicKeys - SignerPublicKeysConnection!
|
Public keys associated with signer |
signerPublicKeys - SignerSignerPublicKeysConnection!
|
Public keys associated with signer |
Arguments |
|
updatedAt - String!
|
|
user - User!
|
User associated with signer |
Example
{
"canViewerDelete": false,
"canViewerUpdate": false,
"createdAt": "abc123",
"grantableOAuthScopes": ["abc123"],
"id": 4,
"name": "abc123",
"network": Network,
"publicKeys": SignerPublicKeysConnection,
"signerPublicKeys": SignerSignerPublicKeysConnection,
"updatedAt": "abc123",
"user": User
}
SignerAppAuthKey
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
The date and time when the key was created |
expiresAt - String!
|
The date and time when the key will expire |
id - ID!
|
|
privateKey - String
|
The private key (will only be returned when creating a new key). It's not stored in the database. |
publicKey - String!
|
The public key |
signerAppId - String!
|
The signerAppId that bound this signerAppAuthKey |
updatedAt - String!
|
The date and time when the key was last updated |
Example
{
"createdAt": "abc123",
"expiresAt": "abc123",
"id": 4,
"privateKey": "abc123",
"publicKey": "xyz789",
"signerAppId": "xyz789",
"updatedAt": "abc123"
}
SignerAppKey
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
The date and time when the Chia Signer App key was created |
id - ID!
|
|
keyType - KeyType
|
Inferred hardware (APP) or software (APP_SOFTWARE) type from any vault custody/recovery signer (active or replaced) that uses this public key. Independent of the active roles reported by purposes. |
name - String
|
The name of the Chia Signer App key |
platform - Platform
|
Mobile platform for the signer app associated with this key |
publicKey - Bytea!
|
Public key associated with Chia Signer App |
purposes - [PasskeyPurpose!]!
|
The vault-signer roles (Spend/Recovery) this key currently fills, derived from active vault custody/recovery signers |
signerAppId - String!
|
The Chia Signer App identifier used to link this key |
Example
{
"createdAt": "abc123",
"id": 4,
"keyType": "APP",
"name": "xyz789",
"platform": "ANDROID",
"publicKey": Bytea,
"purposes": ["LOGIN"],
"signerAppId": "xyz789"
}
SignerAppKeyLinkedPayload
Fields
| Field Name | Description |
|---|---|
signerAppKey - SignerAppKey!
|
|
token - String!
|
Example
{
"signerAppKey": SignerAppKey,
"token": "abc123"
}
SignerAppKeyTypeFilter
Description
Filters SignerAppKeys by inferred hardware (APP) or software (APP_SOFTWARE) type, or keys with no vault link (UNLINKED).
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"APP"
SignerAppsSortKey
Description
The set of valid sort keys for the SignerApps query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
SignerInput
Example
{
"deduplicateName": true,
"keys": [Key],
"name": "xyz789"
}
SignerPublicKey
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
|
id - ID!
|
|
publicKey - PublicKey!
|
Public keys associated with signer |
signer - Signer!
|
Signer which has public keys associated with it |
updatedAt - String!
|
Example
{
"createdAt": "xyz789",
"id": 4,
"publicKey": PublicKey,
"signer": Signer,
"updatedAt": "xyz789"
}
SignerPublicKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [SignerPublicKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [SignerPublicKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
SignerPublicKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - PublicKey!
|
Example
{
"cursor": "xyz789",
"node": PublicKey
}
SignerPublicKeysSortKey
Description
The set of valid sort keys for the SignerPublicKeys query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
SignerSignerPublicKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [SignerSignerPublicKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [SignerSignerPublicKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
SignerSignerPublicKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SignerPublicKey!
|
Example
{
"cursor": "abc123",
"node": SignerPublicKey
}
SignersSortKey
Description
The set of valid sort keys for the Signers query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
SignerType
Description
The set of valid sort keys for the SignerType query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MIXED_MULTISIG"
SignSignatureRequestInput
Fields
| Input Field | Description |
|---|---|
message - Bytea!
|
Hex-encoded message from the signature request. It must exactly match the requested message. |
publicKey - Bytea!
|
Hex-encoded public key from the signature request. It must exactly match the requested public key. |
signature - Bytea!
|
Hex-encoded signature over message by publicKey, in the format for the request's curve. |
signatureRequestId - ID!
|
Signature request global ID in SignatureRequest_<cuid> format. |
Example
{
"message": Bytea,
"publicKey": Bytea,
"signature": Bytea,
"signatureRequestId": "4"
}
SignSignatureRequestPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
SingleIssuanceCAT2Config
Fields
| Input Field | Description |
|---|---|
supply - BigInt!
|
Initial and total supply of the single issuance CAT2 |
Example
{"supply": {}}
Snapshot
Fields
| Field Name | Description |
|---|---|
asset - Asset!
|
CAT asset captured by the snapshot. |
createdAt - String!
|
ISO 8601 timestamp when the snapshot row was created. |
headerHash - String!
|
Snapshot block header hash as a 64-character hexadecimal string. |
id - ID!
|
|
result - String
|
Snapshot result encoded as a JSON string. |
snapshotTime - String
|
Requested snapshot time as an ISO 8601 string. |
Example
{
"asset": Asset,
"createdAt": "abc123",
"headerHash": "abc123",
"id": 4,
"result": "xyz789",
"snapshotTime": "abc123"
}
SnapshotConnectionWrapper
Fields
| Field Name | Description |
|---|---|
asset - Asset!
|
|
blockRecord - BlockRecord!
|
|
connection - SnapshotConnectionWrapperConnection!
|
|
Example
{
"asset": Asset,
"blockRecord": BlockRecord,
"connection": SnapshotConnectionWrapperConnection
}
SnapshotConnectionWrapperConnection
Fields
| Field Name | Description |
|---|---|
edges - [SnapshotConnectionWrapperConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [SnapshotConnectionWrapperConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
SnapshotConnectionWrapperConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - GroupedCoinMetadataResult!
|
Example
{
"cursor": "abc123",
"node": GroupedCoinMetadataResult
}
SnapshotInput
Example
{
"assetHash": "xyz789",
"headerHash": "abc123",
"snapshotTime": "xyz789"
}
SnapshotsInput
Fields
| Input Field | Description |
|---|---|
assetHash - String!
|
64-character lowercase hex CAT tail hash. |
Example
{"assetHash": "abc123"}
Spend
SplitCoinsInput
Fields
| Input Field | Description |
|---|---|
amountPerCoin - BigInt!
|
The amount of each newly created coin, in mojos |
coinIds - [ID!]!
|
Coin global IDs in CoinRecord_<hex> format. All coins must belong to the wallet and same asset. |
fee - BigInt
|
An optional blockchain fee, in mojos |
fromAddressIndex - Int
|
Optional vault address derivation index the selected coins belong to. The new coins and any remainder land at that address. Defaults to 0 (primary address). |
numberOfCoins - Int!
|
The number of new coins to create, excluding the remainder coin. Minimum 1; maximum 300 for XCH, 100 for CAT, and 80 for revocable CAT. |
walletId - ID!
|
The wallet ID for the origin of the transaction |
Example
{
"amountPerCoin": {},
"coinIds": [4],
"fee": {},
"fromAddressIndex": 123,
"numberOfCoins": 123,
"walletId": 4
}
SplitCoinsPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
The signature request for the transaction |
Example
{"signatureRequest": SignatureRequest}
SplitDetails
Fields
| Field Name | Description |
|---|---|
amountPerCoin - BigInt!
|
Amount for each output coin |
inputCoinsCount - Int!
|
Number of input coins |
outputCoinsCount - Int!
|
Number of output coins to create |
remainderAmount - BigInt!
|
Remainder amount after splitting |
totalAmount - BigInt!
|
Total amount of input coins |
vaultId - String!
|
ID of the vault |
vaultName - String
|
Name of the vault |
Example
{
"amountPerCoin": {},
"inputCoinsCount": 123,
"outputCoinsCount": 987,
"remainderAmount": {},
"totalAmount": {},
"vaultId": "abc123",
"vaultName": "xyz789"
}
StandardCustodyConfig
StandardCustodyConfigInput
Fields
| Input Field | Description |
|---|---|
cat2 - Boolean
|
Example
{"cat2": false}
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"xyz789"
StripePaymentMethodType
Description
Type of payment method used (card, us_bank_account)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CARD"
StripePaymentSession
Fields
| Field Name | Description |
|---|---|
bankName - String
|
Name of the linked bank |
createdAt - String!
|
|
errorCode - String
|
Error code if the session failed |
errorMessage - String
|
Error message if the session failed |
id - ID!
|
|
last4 - String
|
Last 4 digits of the bank account |
paymentMethodType - StripePaymentMethodType
|
Type of payment method from Stripe (e.g., card, us_bank_account) |
status - StripePaymentSessionStatus!
|
Current state of the payment session |
stripePaymentIntentId - String
|
Stripe payment intent ID |
updatedAt - String!
|
|
user - User!
|
Example
{
"bankName": "xyz789",
"createdAt": "abc123",
"errorCode": "abc123",
"errorMessage": "xyz789",
"id": "4",
"last4": "xyz789",
"paymentMethodType": "CARD",
"status": "CANCELLED",
"stripePaymentIntentId": "xyz789",
"updatedAt": "xyz789",
"user": User
}
StripePaymentSessionStatus
Description
Possible states for a Stripe payment session
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
StripePaymentStatus
Description
Possible states for Stripe payment in buy order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELED"
SubmitSignatureRequestInput
Fields
| Input Field | Description |
|---|---|
signatureRequestId - ID!
|
Fully signed signature request global ID in SignatureRequest_<cuid> format. |
Example
{"signatureRequestId": "4"}
SubmitSignatureRequestPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
SubscriptionEntity
Fields
| Field Name | Description |
|---|---|
avatarFileName - String
|
Avatar file name of the subscription |
canDelete - Boolean!
|
Whether this subscription can be deleted (no active subscribers) |
enabled - Boolean!
|
Whether the subscription is enabled and visible to users |
id - ID!
|
|
name - String
|
Name of the subscription |
subscriberCount - Int!
|
Number of wallets subscribed to this subscription |
topics - SubscriptionEntityTopicsConnection!
|
Topics associated with the subscription |
Arguments |
|
vaultAddress - String
|
Vault receive address derived from the launcher id |
vaultLauncherId - String
|
Vault launcher id of the subscription |
Example
{
"avatarFileName": "abc123",
"canDelete": true,
"enabled": true,
"id": 4,
"name": "abc123",
"subscriberCount": 987,
"topics": SubscriptionEntityTopicsConnection,
"vaultAddress": "abc123",
"vaultLauncherId": "xyz789"
}
SubscriptionEntityTopicsConnection
Fields
| Field Name | Description |
|---|---|
edges - [SubscriptionEntityTopicsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [SubscriptionEntityTopicsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
SubscriptionEntityTopicsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SubscriptionTopic!
|
Example
{
"cursor": "xyz789",
"node": SubscriptionTopic
}
SubscriptionsSortKey
Description
The set of valid sort keys for the Subscriptions query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
SubscriptionTopic
SubscriptionTopicsSortKey
Description
The set of valid sort keys for the SubscriptionTopics query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
SupportTicket
Fields
| Field Name | Description |
|---|---|
id - String!
|
|
status - SupportTicketStatus!
|
|
subject - String!
|
|
updatedAt - String!
|
Example
{
"id": "xyz789",
"status": "CLOSED",
"subject": "xyz789",
"updatedAt": "xyz789"
}
SupportTicketConnection
Fields
| Field Name | Description |
|---|---|
edges - [SupportTicketEdge!]!
|
|
pageInfo - SupportTicketPageInfo!
|
Example
{
"edges": [SupportTicketEdge],
"pageInfo": SupportTicketPageInfo
}
SupportTicketEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SupportTicket!
|
Example
{
"cursor": "xyz789",
"node": SupportTicket
}
SupportTicketFilterStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ALL"
SupportTicketPageInfo
SupportTicketStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLOSED"
TakeOfferInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Submit automatically after all required signatures are collected. Default = false |
fee - BigInt
|
Blockchain fee in XCH mojos. |
fromAddressIndex - Int
|
Optional vault address derivation index to take the offer from. Defaults to 0 (primary address). The coins given, the fee, change, and what the offer pays out all use that address, so an NFT the offer requests must be held there. |
offerId - ID!
|
Offer global ID in Offer_<hex> format. |
walletId - ID!
|
Wallet global ID in Wallet_<cuid> format. |
Example
{
"autoSubmit": true,
"fee": {},
"fromAddressIndex": 123,
"offerId": "4",
"walletId": "4"
}
TakeOfferPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
TierContribution
Description
Whether a purchase contributes to tier progression
Values
| Enum Value | Description |
|---|---|
|
|
Purchase is excluded from tier progression |
|
|
Purchase counts toward tier progression |
Example
"EXCLUDED"
TimelineEventStatus
Description
Status of a timeline event (completed, failed, or pending)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"COMPLETED"
Transaction
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
Creation date of transaction |
fee - BigInt
|
Fee provided as part of transaction |
id - ID!
|
|
inputs - TransactionInputsConnection!
|
Input coins to the transaction. |
Arguments |
|
outputs - TransactionOutputsConnection!
|
Output coins from the transaction. |
Arguments |
|
state - TransactionStateString!
|
|
timestamp - String
|
Timestamp of transaction |
type - TransactionType
|
Type of transaction |
Example
{
"createdAt": "abc123",
"fee": {},
"id": 4,
"inputs": TransactionInputsConnection,
"outputs": TransactionOutputsConnection,
"state": "CLAWED_BACK",
"timestamp": "abc123",
"type": "AIRDROP"
}
TransactionCoinRecord
Fields
| Field Name | Description |
|---|---|
amount - BigInt
|
|
coinRecord - CoinRecord
|
Coin record associated with transaction |
createdAt - String!
|
|
id - ID!
|
|
type - String
|
Example
{
"amount": {},
"coinRecord": CoinRecord,
"createdAt": "xyz789",
"id": "4",
"type": "xyz789"
}
TransactionDirection
Description
The set of valid directions for a transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"INBOUND"
TransactionInput
Fields
| Field Name | Description |
|---|---|
address - String!
|
The address of the coin record |
amount - BigInt!
|
The amount of the coin record |
asset - Asset!
|
|
id - ID!
|
|
name - Bytea!
|
The name of the coin record |
parentCoinName - Bytea!
|
The parent coin name of the coin record |
puzzleHash - Bytea!
|
The puzzle hash of the coin record |
Example
{
"address": "abc123",
"amount": {},
"asset": Asset,
"id": 4,
"name": Bytea,
"parentCoinName": Bytea,
"puzzleHash": Bytea
}
TransactionInputsConnection
Fields
| Field Name | Description |
|---|---|
edges - [TransactionInputsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [TransactionInputsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
TransactionInputsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - CoinRecord!
|
Example
{
"cursor": "xyz789",
"node": CoinRecord
}
TransactionInterface
Fields
| Field Name | Description |
|---|---|
asset - Asset
|
|
createdAt - String!
|
|
fee - BigInt
|
The fee of the transaction |
id - ID!
|
|
timestamp - String
|
|
type - TransactionType
|
Possible Types
| TransactionInterface Types |
|---|
Example
{
"asset": Asset,
"createdAt": "abc123",
"fee": {},
"id": 4,
"timestamp": "xyz789",
"type": "AIRDROP"
}
TransactionNftsSortKey
Description
The set of valid sort keys for the transaction nfts query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"LAUNCHER_ID"
TransactionOutput
Fields
| Field Name | Description |
|---|---|
address - String!
|
The address of the coin record |
amount - BigInt!
|
The amount of the coin record |
asset - Asset!
|
|
clawbackExpirationTime - DateTime
|
The expiration time of this clawback output |
id - ID!
|
|
name - Bytea!
|
The name of the coin record |
parentCoinName - Bytea!
|
The parent coin name of the coin record |
puzzleHash - Bytea!
|
The puzzle hash of the coin record |
Example
{
"address": "xyz789",
"amount": {},
"asset": Asset,
"clawbackExpirationTime": "2007-12-03T10:15:30Z",
"id": 4,
"name": Bytea,
"parentCoinName": Bytea,
"puzzleHash": Bytea
}
TransactionOutputsConnection
Fields
| Field Name | Description |
|---|---|
edges - [TransactionOutputsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [TransactionOutputsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
TransactionOutputsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - CoinRecord!
|
Example
{
"cursor": "abc123",
"node": CoinRecord
}
TransactionResubmissionDetails
Fields
| Field Name | Description |
|---|---|
eligible - Boolean!
|
Whether the existing signed transaction can be submitted again. |
errorMessage - String
|
A normalized explanation of the submission rejection. |
isFinal - Boolean!
|
Whether the latest submission rejection made the transaction invalid. |
message - String
|
A user-facing explanation of the available action. |
signatureRequest - SignatureRequest
|
The existing signed request used to resubmit the transaction. |
Example
{
"eligible": false,
"errorMessage": "abc123",
"isFinal": false,
"message": "abc123",
"signatureRequest": SignatureRequest
}
TransactionsSortKey
Description
The set of valid sort keys for the TransactionsSortKey query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
TransactionStateString
Description
The set of valid sort keys for the TransactionStateString query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLAWED_BACK"
TransactionTransferInterface
Fields
| Field Name | Description |
|---|---|
address - String!
|
The address of the coin record |
amount - BigInt!
|
The amount of the coin record |
asset - Asset!
|
|
name - Bytea!
|
The name of the coin record |
parentCoinName - Bytea!
|
The parent coin name of the coin record |
puzzleHash - Bytea!
|
The puzzle hash of the coin record |
Possible Types
| TransactionTransferInterface Types |
|---|
Example
{
"address": "abc123",
"amount": {},
"asset": Asset,
"name": Bytea,
"parentCoinName": Bytea,
"puzzleHash": Bytea
}
TransactionType
Description
The set of valid types for a transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AIRDROP"
TransferNftItemInput
TransferNftsInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Submit automatically after all required signatures are collected. Default = false |
fee - BigInt!
|
Blockchain fee in XCH mojos. Default = 0 |
fromAddressIndex - Int
|
Optional vault address derivation index to send from. Defaults to 0 (primary address). The NFTs must be held at that address, which also pays the fee and receives the change. |
memos - [String!]
|
Memos provided with transaction |
transfers - [TransferNftItemInput!]!
|
The NFTs to transfer |
walletId - ID!
|
The wallet to transfer the NFTs from |
xchHandle - String
|
Optional XCHandle that resolved to the transfer address. Fails if the handle no longer resolves to it. |
Example
{
"autoSubmit": true,
"fee": {},
"fromAddressIndex": 987,
"memos": ["abc123"],
"transfers": [TransferNftItemInput],
"walletId": "4",
"xchHandle": "xyz789"
}
TransferNftsPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Example
{"signatureRequest": SignatureRequest}
UnspentClawbackCoins
Example
{
"amount": {},
"receiverAddress": "xyz789",
"recipientCount": 987
}
UpdateAutoSubscribeInput
UpdateAutoSubscribePayload
Fields
| Field Name | Description |
|---|---|
walletSubscription - WalletSubscription!
|
Example
{"walletSubscription": WalletSubscription}
UpdateContactAddressInput
Example
{
"address": "xyz789",
"contactAddressId": "4",
"contactId": 4,
"label": "abc123"
}
UpdateContactAddressPayload
Fields
| Field Name | Description |
|---|---|
address - ContactAddress!
|
The updated blockchain address |
Example
{"address": ContactAddress}
UpdateContactEmailInput
UpdateContactEmailPayload
Fields
| Field Name | Description |
|---|---|
email - ContactEmail!
|
The updated email |
Example
{"email": ContactEmail}
UpdateContactInput
UpdateContactPayload
Fields
| Field Name | Description |
|---|---|
contact - Contact!
|
The updated contact |
Example
{"contact": Contact}
UpdateSignerInput
UpdateSignerPayload
Fields
| Field Name | Description |
|---|---|
signer - Signer
|
Signer that has been updated |
Example
{"signer": Signer}
UpdateSubscriptionTopicInput
UpdateSubscriptionTopicPayload
Fields
| Field Name | Description |
|---|---|
subscriptionTopic - SubscriptionTopic!
|
Example
{"subscriptionTopic": SubscriptionTopic}
UpdateVaultConfigTemplateInput
Example
{
"id": "4",
"recoveryProviderId": 4,
"recoveryTimelock": 987,
"requiredCustodySigners": 987,
"requiredRecoverySigners": 123,
"signers": [UpdateVaultConfigTemplateSignerInput],
"vaultName": "abc123"
}
UpdateVaultConfigTemplateKeyInput
Fields
| Input Field | Description |
|---|---|
selectedKeyType - KeyType
|
The selected key type that was used |
signerId - ID
|
ID of the signer to associate with the vault config template signer (mutually exclusive with walletId) |
vaultConfigTemplateSignerId - ID!
|
ID of the vault config template signer to update |
walletId - ID
|
ID of the wallet to associate with the vault config template signer (mutually exclusive with signerId) |
Example
{
"selectedKeyType": "APP",
"signerId": 4,
"vaultConfigTemplateSignerId": 4,
"walletId": 4
}
UpdateVaultConfigTemplateKeyPayload
Fields
| Field Name | Description |
|---|---|
vaultConfigTemplateSigner - VaultConfigTemplateSigner
|
Example
{"vaultConfigTemplateSigner": VaultConfigTemplateSigner}
UpdateVaultConfigTemplatePayload
Fields
| Field Name | Description |
|---|---|
vaultConfigTemplate - VaultConfigTemplate!
|
Example
{"vaultConfigTemplate": VaultConfigTemplate}
UpdateVaultConfigTemplateSignerInput
Fields
| Input Field | Description |
|---|---|
allowedKeyTypes - [KeyType!]!
|
|
email - String!
|
|
id - ID
|
ID of the signer to update |
keyName - String!
|
|
keyRole - KeyRole!
|
Example
{
"allowedKeyTypes": ["APP"],
"email": "xyz789",
"id": "4",
"keyName": "xyz789",
"keyRole": "CUSTODY"
}
UpdateWalletInput
UpdateWalletPayload
Fields
| Field Name | Description |
|---|---|
wallet - Wallet
|
Wallet which has been updated |
Example
{"wallet": Wallet}
UpdateWalletSubscriptionInput
Example
{
"name": "xyz789",
"vaultAddress": "xyz789",
"vaultLauncherId": Bytea,
"walletSubscriptionId": "4"
}
UpdateWalletSubscriptionPayload
Fields
| Field Name | Description |
|---|---|
walletSubscription - WalletSubscription!
|
Example
{"walletSubscription": WalletSubscription}
User
Fields
| Field Name | Description |
|---|---|
buyLimitOverride - Int
|
Buy limit override in USD |
canViewerCreateBuyOrder - Boolean!
|
Whether this user is the current viewer and can buy XCH. Always false for other users. |
canViewerCreatePlatformOAuthClients - Boolean!
|
Whether this user is the current viewer and can create approved platform OAuth clients. Always false for other users. |
canViewerDelete - Boolean!
|
Whether the current viewer can delete this user |
canViewerReadOAuthReviews - Boolean!
|
Whether this user is the current viewer and can read the platform OAuth client review queue. Always false for other users. |
canViewerSubmitSupportTicket - Boolean!
|
Whether this user is the current viewer and can open support tickets. Always false for other users. |
canViewerUpdate - Boolean!
|
Whether the current viewer can edit this user |
contacts - UserContactsConnection!
|
The contacts that are associated with this user |
createdAt - String!
|
The date and time when the user was created |
deactivatedAt - String
|
The date and time when the user was deactivated |
deactivatedBy - User
|
The user who deactivated this account |
deactivationNotes - String
|
Notes about why the user account was deactivated |
deactivationReason - UserDeactivationReason
|
The reason the user account was deactivated |
email - String!
|
The email of the user |
emailChangeInProgress - UserEmailChangeToken
|
The email change update data if the user is in the process of changing their email |
emailUpdatedAt - String
|
The date and time when the user last updated their email |
grantableOAuthScopes - [String!]!
|
|
Arguments
|
|
hasDisputedPaymentMethod - Boolean!
|
Whether the user has any payment method with a dispute flag |
hasExceededMaxVerificationAttempts - Boolean!
|
Whether the user has exceeded the maximum identity verification attempts |
hasVaultNeedingConfigDownload - Boolean!
|
Whether any of the user's vaults need a config download (never downloaded or recovered since last download) |
id - ID!
|
|
identityVerificationFailedAttempts - Int!
|
The number of failed identity verification attempts |
identityVerificationStatus - IdentityVerificationStatus!
|
The current identity verification status of the user |
identityVerifiedAt - String
|
The date and time when the user completed identity verification |
isViewer - Boolean!
|
Whether the user is the current viewer (authentificated user) |
issuedAssets - UserIssuedAssetsConnection!
|
The assets that are associated with this users wallets |
messages - UserMessagesConnection!
|
The messages that are associated with this user across all their wallets. |
Arguments
|
|
name - String
|
The name of the user |
nfts - UserNftsConnection!
|
The NFTs that are associated with this user. |
offers - UserOffersConnection!
|
The offers that are associated with this user. |
Arguments
|
|
organization - Organization!
|
The organization that this user belongs to |
passkeyCounts - PasskeyCounts!
|
Passkey counts grouped by login archive state and active vault usage |
passkeys - UserPasskeysConnection!
|
The passkeys that are associated with this user |
passwordExpiresAt - String
|
If the user is required to change their password, this will be a date, otherwise null |
paymentMethodUserLimits - [PaymentMethodUserLimit!]
|
Payment method user limits with tier information |
platformPermissions - [PlatformPermission!]!
|
The platform permissions the viewer holds, such as PLATFORM_BUY_ORDER_READ. Only readable on the viewer. Empty when the request comes from an API key or an OAuth client, even if that credential acts with the owner's permissions. |
purchaseProgramState - PurchaseProgramState!
|
The current state of the XCH purchase program |
role - UserRole
|
The role of the user |
signerAppKeys - UserSignerAppKeysConnection!
|
The Chia Signer App keys that are associated with this user |
Arguments
|
|
signers - UserSignersConnection!
|
The signers that are associated with this user |
Arguments |
|
status - UserStatus!
|
The status of the user account |
supportTickets - SupportTicketConnection!
|
The support tickets associated with this user |
Arguments
|
|
temporaryFeatureFlags - [FeatureFlag!]!
|
Global temporary feature flags that are currently enabled |
unsignedOfferSignatureRequests - UserUnsignedOfferSignatureRequestsConnection!
|
Unsigned signature requests for offer-related transactions across all user wallets. |
updatedAt - String!
|
The date and time when the user was last updated |
userAdditionalEmails - [UserAdditionalEmail!]!
|
The additional email addresses associated with this user |
userAuthKeys - UserUserAuthKeysConnection!
|
The user auth keys (API keys with long expiration dates) that are associated with this user |
userTokens - UserUserTokensConnection!
|
The tokens that are associated with this user |
Arguments |
|
vaultConfigTemplates - UserVaultConfigTemplatesConnection!
|
The vault configuration templates associated with this user (pending vaults to be created) |
Arguments |
|
wallets - UserWalletsConnection!
|
The wallets that are associated with this user |
Example
{
"buyLimitOverride": 987,
"canViewerCreateBuyOrder": false,
"canViewerCreatePlatformOAuthClients": true,
"canViewerDelete": true,
"canViewerReadOAuthReviews": true,
"canViewerSubmitSupportTicket": true,
"canViewerUpdate": true,
"contacts": UserContactsConnection,
"createdAt": "xyz789",
"deactivatedAt": "abc123",
"deactivatedBy": User,
"deactivationNotes": "abc123",
"deactivationReason": "FRAUD_SUSPICIOUS_ACTIVITY",
"email": "xyz789",
"emailChangeInProgress": UserEmailChangeToken,
"emailUpdatedAt": "abc123",
"grantableOAuthScopes": ["abc123"],
"hasDisputedPaymentMethod": true,
"hasExceededMaxVerificationAttempts": false,
"hasVaultNeedingConfigDownload": false,
"id": "4",
"identityVerificationFailedAttempts": 987,
"identityVerificationStatus": "FAILED",
"identityVerifiedAt": "abc123",
"isViewer": true,
"issuedAssets": UserIssuedAssetsConnection,
"messages": UserMessagesConnection,
"name": "xyz789",
"nfts": UserNftsConnection,
"offers": UserOffersConnection,
"organization": Organization,
"passkeyCounts": PasskeyCounts,
"passkeys": UserPasskeysConnection,
"passwordExpiresAt": "abc123",
"paymentMethodUserLimits": [PaymentMethodUserLimit],
"platformPermissions": ["PLATFORM_ANNOUNCEMENT_DELETE"],
"purchaseProgramState": "HALTED",
"role": "FINANCE_ADMIN",
"signerAppKeys": UserSignerAppKeysConnection,
"signers": UserSignersConnection,
"status": "ACTIVE",
"supportTickets": SupportTicketConnection,
"temporaryFeatureFlags": [FeatureFlag],
"unsignedOfferSignatureRequests": UserUnsignedOfferSignatureRequestsConnection,
"updatedAt": "abc123",
"userAdditionalEmails": [UserAdditionalEmail],
"userAuthKeys": UserUserAuthKeysConnection,
"userTokens": UserUserTokensConnection,
"vaultConfigTemplates": UserVaultConfigTemplatesConnection,
"wallets": UserWalletsConnection
}
UserAdditionalEmail
Fields
| Field Name | Description |
|---|---|
action - AdditionalEmailChangeAction
|
The pending action type (add, change, delete) |
additionalEmailId - ID
|
ID of the email being changed or deleted |
createdAt - String!
|
|
email - String!
|
|
expiresAt - String
|
When the pending action expires |
finalizeAt - String
|
When the pending action will be finalized |
id - ID!
|
|
pendingTokenId - ID
|
ID of the pending token (for cancellation) |
previousEmail - String
|
Previous email address (for change actions) |
updatedAt - String!
|
|
verified - Boolean!
|
|
verifiedAt - String
|
Example
{
"action": "ADD",
"additionalEmailId": 4,
"createdAt": "abc123",
"email": "abc123",
"expiresAt": "abc123",
"finalizeAt": "abc123",
"id": "4",
"pendingTokenId": "4",
"previousEmail": "abc123",
"updatedAt": "xyz789",
"verified": true,
"verifiedAt": "abc123"
}
UserAuthKey
Fields
| Field Name | Description |
|---|---|
canViewerDelete - Boolean!
|
Whether the current viewer can delete this userAuthKey |
canViewerUpdate - Boolean!
|
Whether the current viewer can edit this userAuthKey |
createdAt - String!
|
The date and time when the key was created |
createdBy - User
|
The user that created this userAuthKey, or null when the viewer cannot read them |
expiresAt - String!
|
The date and time when the key will expire |
id - ID!
|
|
lastUsedAt - String
|
The date and time when the key was last used. It's null if the key has never been used. It's throttled to once per 5 seconds. |
name - String!
|
The name of the public key |
privateKey - String
|
Private key returned only when the key is created. It is not stored. |
publicKey - String!
|
The public key |
user - User!
|
The user that owns this userAuthKey |
Example
{
"canViewerDelete": false,
"canViewerUpdate": false,
"createdAt": "abc123",
"createdBy": User,
"expiresAt": "xyz789",
"id": 4,
"lastUsedAt": "abc123",
"name": "abc123",
"privateKey": "abc123",
"publicKey": "xyz789",
"user": User
}
UserAuthKeysSortKey
Description
The set of valid sort keys for the UserAuthKeys query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
UserContactsConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserContactsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserContactsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserContactsConnectionEdge
UserDeactivationReason
Description
The reason a user account was deactivated
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"FRAUD_SUSPICIOUS_ACTIVITY"
UserEmailChangeToken
Fields
| Field Name | Description |
|---|---|
expiresAt - String!
|
The date and time when the email change token expires |
finalizeAt - String
|
The date and time when the email change token will be effective after its verified |
newEmail - String!
|
The new email address |
verifiedAt - String
|
The date and time when the email change token was verified |
Example
{
"expiresAt": "abc123",
"finalizeAt": "xyz789",
"newEmail": "abc123",
"verifiedAt": "xyz789"
}
UserInterface
UserIssuedAssetsConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserIssuedAssetsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserIssuedAssetsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserIssuedAssetsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletAsset!
|
Example
{
"cursor": "xyz789",
"node": WalletAsset
}
UserMessagesConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserMessagesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserMessagesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserMessagesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletMessage!
|
Example
{
"cursor": "abc123",
"node": WalletMessage
}
UserNftsConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserNftsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserNftsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserNftsConnectionEdge
UserOffersConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserOffersConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserOffersConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserOffersConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletOffer!
|
Example
{
"cursor": "xyz789",
"node": WalletOffer
}
UserPasskeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserPasskeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserPasskeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserPasskeysConnectionEdge
UserRole
Description
The set of valid roles for the User.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"FINANCE_ADMIN"
UserSignerAppKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserSignerAppKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserSignerAppKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserSignerAppKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SignerAppKey!
|
Example
{
"cursor": "abc123",
"node": SignerAppKey
}
UserSignersConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserSignersConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserSignersConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserSignersConnectionEdge
UsersSortKey
Description
The set of valid sort keys for the Users query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
UserStatus
Description
The status of a user account
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ACTIVE"
UserToken
Fields
| Field Name | Description |
|---|---|
asset - Asset
|
|
assetHash - String!
|
The CAT asset hash for this user token |
createdAt - DateTime!
|
|
displayName - String!
|
The display name of the token |
id - ID!
|
|
image - String
|
Optional base64 encoded image data for the token |
imageMimeType - String
|
MIME type of the token image (image/jpeg or image/png), currently disabled |
symbol - String!
|
The symbol of the token (up to 5 characters) |
updatedAt - DateTime!
|
|
user - User!
|
|
userId - String!
|
Use asset instead |
Example
{
"asset": Asset,
"assetHash": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"displayName": "abc123",
"id": 4,
"image": "abc123",
"imageMimeType": "abc123",
"symbol": "abc123",
"updatedAt": "2007-12-03T10:15:30Z",
"user": User,
"userId": "abc123"
}
UserTokensSortKey
Description
The set of valid sort keys for the UserTokens query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"CREATED_AT"
UserUnsignedOfferSignatureRequestsConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserUnsignedOfferSignatureRequestsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [
UserUnsignedOfferSignatureRequestsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 987
}
UserUnsignedOfferSignatureRequestsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SignatureRequest!
|
Example
{
"cursor": "xyz789",
"node": SignatureRequest
}
UserUserAuthKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserUserAuthKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserUserAuthKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserUserAuthKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - UserAuthKey!
|
Example
{
"cursor": "abc123",
"node": UserAuthKey
}
UserUserTokensConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserUserTokensConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserUserTokensConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
UserUserTokensConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - UserToken!
|
Example
{
"cursor": "xyz789",
"node": UserToken
}
UserVaultConfigTemplatesConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserVaultConfigTemplatesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserVaultConfigTemplatesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
UserVaultConfigTemplatesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - VaultConfigTemplate!
|
Example
{
"cursor": "abc123",
"node": VaultConfigTemplate
}
UserWalletsConnection
Fields
| Field Name | Description |
|---|---|
edges - [UserWalletsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [UserWalletsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
UserWalletsConnectionEdge
Vault
VaultAction
Fields
| Input Field | Description |
|---|---|
vaultRecovery - VaultRecoveryAction
|
|
vaultRecoveryClawback - VaultRecoveryClawbackAction
|
|
vaultRecoveryFinish - Boolean
|
Example
{
"vaultRecovery": VaultRecoveryAction,
"vaultRecoveryClawback": VaultRecoveryClawbackAction,
"vaultRecoveryFinish": true
}
VaultAddress
Example
{
"address": "xyz789",
"index": 123,
"label": "xyz789",
"puzzleHash": "abc123"
}
VaultConfigDownloadPayload
VaultConfigTemplate
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
The date and time when the template was created |
creator - User
|
The user who created this vault configuration template |
custodyKeysAddedCount - Int!
|
The number of custody keys added to this vault configuration template |
grantableOAuthScopes - [String!]!
|
|
Arguments
|
|
id - ID!
|
|
isViewerCreator - Boolean!
|
Whether the current user is the creator of the vault configuration template |
otherSigners - [VaultConfigTemplateOtherSigner!]!
|
Other users' signers in this vault configuration template (only available to template creator) |
recoveryKeysAddedCount - Int!
|
The number of recovery keys added to this vault configuration template |
recoveryProvider - RecoveryProviderPublic
|
The recovery provider associated with this vault configuration template (only visible to creator) |
recoveryTimelock - Int!
|
The timelock period in seconds for recovery operations |
requiredCustodySigners - Int!
|
The number of spend keys required for this vault configuration |
requiredRecoverySigners - Int!
|
The number of recovery keys required for this vault configuration |
totalCustodySigners - Int!
|
The total number of spend keys in this vault configuration |
totalRecoverySigners - Int!
|
The total number of recovery keys in this vault configuration |
updatedAt - String!
|
The date and time when the template was last updated |
vaultName - String!
|
The name of the vault configuration template |
viewerSigners - [VaultConfigTemplateSigner!]!
|
The signers associated with this vault configuration template that belong to the current user (viewer) |
Example
{
"createdAt": "abc123",
"creator": User,
"custodyKeysAddedCount": 123,
"grantableOAuthScopes": ["xyz789"],
"id": "4",
"isViewerCreator": false,
"otherSigners": [VaultConfigTemplateOtherSigner],
"recoveryKeysAddedCount": 123,
"recoveryProvider": RecoveryProviderPublic,
"recoveryTimelock": 123,
"requiredCustodySigners": 123,
"requiredRecoverySigners": 123,
"totalCustodySigners": 123,
"totalRecoverySigners": 123,
"updatedAt": "abc123",
"vaultName": "xyz789",
"viewerSigners": [VaultConfigTemplateSigner]
}
VaultConfigTemplateOtherSigner
Fields
| Field Name | Description |
|---|---|
allowedKeyTypes - [String!]!
|
The types of keys allowed for this signer |
createdAt - String!
|
The date and time when the signer was created |
email - String!
|
The email of the signer |
hasCompletedSetup - Boolean!
|
Whether the signer has completed setup by selecting a key |
id - ID!
|
|
keyName - String!
|
The name of the key |
keyRole - String!
|
The role of the key (spend/recovery) |
lastNotified - String
|
The date and time when the signer was last notified |
selectedKeyType - KeyType
|
The type of key that was selected |
updatedAt - String!
|
The date and time when the signer was last updated |
user - User
|
Use email field directly instead |
Example
{
"allowedKeyTypes": ["abc123"],
"createdAt": "abc123",
"email": "xyz789",
"hasCompletedSetup": false,
"id": 4,
"keyName": "abc123",
"keyRole": "xyz789",
"lastNotified": "xyz789",
"selectedKeyType": "APP",
"updatedAt": "abc123",
"user": User
}
VaultConfigTemplateSigner
Fields
| Field Name | Description |
|---|---|
allowedKeyTypes - [String!]!
|
The types of keys allowed for this signer |
createdAt - String!
|
The date and time when the signer was created |
email - String!
|
The email of the signer |
hasCompletedSetup - Boolean!
|
Whether the signer has completed setup by selecting a key |
id - ID!
|
|
keyName - String!
|
The name of the key |
keyRole - String!
|
The role of the key (spend/recovery) |
lastNotified - String
|
The date and time when the signer was last notified |
selectedKeyType - KeyType
|
The type of key that was selected |
signer - Signer
|
|
updatedAt - String!
|
The date and time when the signer was last updated |
user - User
|
Use email field directly instead |
wallet - Wallet
|
Example
{
"allowedKeyTypes": ["xyz789"],
"createdAt": "abc123",
"email": "abc123",
"hasCompletedSetup": false,
"id": "4",
"keyName": "abc123",
"keyRole": "abc123",
"lastNotified": "abc123",
"selectedKeyType": "APP",
"signer": Signer,
"updatedAt": "xyz789",
"user": User,
"wallet": Wallet
}
VaultConfigTemplateSignerInput
Fields
| Input Field | Description |
|---|---|
allowedKeyTypes - [KeyType!]!
|
|
email - String!
|
|
keyName - String!
|
|
keyRole - KeyRole!
|
Example
{
"allowedKeyTypes": ["APP"],
"email": "abc123",
"keyName": "xyz789",
"keyRole": "CUSTODY"
}
VaultConfigTemplatesSortKey
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CREATED_AT"
VaultCustody
Fields
| Input Field | Description |
|---|---|
authorizedWalletIds - [ID!]
|
|
keyTypes - [PublicKeyWithType!]
|
|
publicKeyIds - [ID!]
|
|
threshold - Int!
|
Example
{
"authorizedWalletIds": [4],
"keyTypes": [PublicKeyWithType],
"publicKeyIds": ["4"],
"threshold": 987
}
VaultCustodyConfig
Fields
| Field Name | Description |
|---|---|
custodyAuthorizedWallets - VaultCustodyConfigCustodyAuthorizedWalletsConnection!
|
Wallets that are authorized to perform custody spends for this vault |
Arguments |
|
custodyKeys - VaultCustodyConfigCustodyKeysConnection!
|
Public keys associated with this vault custody config |
Arguments |
|
custodyThreshold - Int
|
Threshold for the vault custody keys |
id - ID!
|
|
needsVaultPuzzleMigration - Boolean!
|
Whether this vault should be upgraded to the current vault puzzle version |
puzzleVersion - VaultPuzzleVersion
|
The version of the vault's puzzle. A signer needs it to rebuild the recovery path's restrictions when clear signing. Null when the wallet is not a vault. |
recoveryAuthorizedWallets - VaultCustodyConfigRecoveryAuthorizedWalletsConnection!
|
Wallets that are authorized to perform recovery for this vault |
Arguments |
|
recoveryClawbackTimelock - Int
|
Timelock for the vault recovery clawback |
recoveryKeys - VaultCustodyConfigRecoveryKeysConnection!
|
Recovery keys associated with this vault custody config |
Arguments |
|
recoveryThreshold - Int
|
Threshold for the vault recovery keys |
vaultLauncherId - Bytea
|
The launcher ID of the vault |
Example
{
"custodyAuthorizedWallets": VaultCustodyConfigCustodyAuthorizedWalletsConnection,
"custodyKeys": VaultCustodyConfigCustodyKeysConnection,
"custodyThreshold": 123,
"id": 4,
"needsVaultPuzzleMigration": true,
"puzzleVersion": "FORCE_SINGLETON_RECREATION",
"recoveryAuthorizedWallets": VaultCustodyConfigRecoveryAuthorizedWalletsConnection,
"recoveryClawbackTimelock": 123,
"recoveryKeys": VaultCustodyConfigRecoveryKeysConnection,
"recoveryThreshold": 123,
"vaultLauncherId": Bytea
}
VaultCustodyConfigCustodyAuthorizedWalletsConnection
Fields
| Field Name | Description |
|---|---|
edges - [VaultCustodyConfigCustodyAuthorizedWalletsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [
VaultCustodyConfigCustodyAuthorizedWalletsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 987
}
VaultCustodyConfigCustodyAuthorizedWalletsConnectionEdge
VaultCustodyConfigCustodyKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [VaultCustodyConfigCustodyKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [VaultCustodyConfigCustodyKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
VaultCustodyConfigCustodyKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - PublicKey!
|
Example
{
"cursor": "abc123",
"node": PublicKey
}
VaultCustodyConfigInput
Fields
| Input Field | Description |
|---|---|
custody - VaultCustody!
|
|
recovery - VaultRecoveryConfig!
|
|
signerIds - [ID!]!
|
Example
{
"custody": VaultCustody,
"recovery": VaultRecoveryConfig,
"signerIds": ["4"]
}
VaultCustodyConfigRecoveryAuthorizedWalletsConnection
Fields
| Field Name | Description |
|---|---|
edges - [VaultCustodyConfigRecoveryAuthorizedWalletsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [
VaultCustodyConfigRecoveryAuthorizedWalletsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 987
}
VaultCustodyConfigRecoveryAuthorizedWalletsConnectionEdge
VaultCustodyConfigRecoveryKeysConnection
Fields
| Field Name | Description |
|---|---|
edges - [VaultCustodyConfigRecoveryKeysConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [VaultCustodyConfigRecoveryKeysConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
VaultCustodyConfigRecoveryKeysConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - PublicKey!
|
Example
{
"cursor": "abc123",
"node": PublicKey
}
VaultKeyProofInput
Description
Proof that the viewer controls a custody or recovery key of the vault being restored
Fields
| Input Field | Description |
|---|---|
challengeId - String!
|
The ID returned by requestVaultRestoreChallenge for this launcher ID |
publicKey - String
|
Hex public key that produced the signature. When omitted, every member key is tried. |
signature - String
|
Hex signature over the challenge message. BLS12_381 signs with the AUG scheme, SECP256R1 signs its SHA-256, and a passkey sends hex JSON of its authenticatorData, clientDataJSON, and signature. |
type - VaultKeyProofType!
|
Example
{
"challengeId": "xyz789",
"publicKey": "abc123",
"signature": "abc123",
"type": "SIGNATURE"
}
VaultKeyProofMethod
Values
| Enum Value | Description |
|---|---|
|
|
Sign the challenge with a passkey that is a member of the vault |
|
|
Sign with the key derived from a recovery phrase. The chain does not say whether a BLS key came from a recovery phrase or the Chia Signer app, so this is offered for every unlinked BLS key it could be. |
|
|
A member key is already linked from the viewer's Chia Signer app |
Example
"PASSKEY"
VaultKeyProofType
Values
| Enum Value | Description |
|---|---|
|
|
A signature over the restore challenge message by a member key of the vault |
|
|
A member key the viewer already linked from the Chia Signer app |
Example
"SIGNATURE"
VaultPuzzleVersion
Description
The version of a vault's puzzle, which determines the restrictions on its recovery path.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"FORCE_SINGLETON_RECREATION"
VaultRecoveriesSortKey
Description
The set of valid sort keys for the VaultRecoveries query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
VaultRecovery
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
The date and time when the vault recovery was created |
id - ID!
|
|
postRecoveryTimelock - Int
|
The clawback timelock, in seconds, of the proposed post-recovery vault config. Null for a recovery initiated outside Cloud Wallet. |
reason - String
|
The reason provided for the vault recovery |
recoveryComplete - String
|
The date and time when the recovery timelock expires |
recoveryEndedAt - String
|
The date and time when the recovery actually finished or was cancelled, derived from the on-chain transition |
signatureRequest - SignatureRequest
|
The signature request that proposed this recovery. Null for a recovery initiated outside Cloud Wallet. |
state - VaultRecoveryState!
|
The current state of the vault recovery |
wallet - Wallet!
|
Example
{
"createdAt": "abc123",
"id": "4",
"postRecoveryTimelock": 987,
"reason": "xyz789",
"recoveryComplete": "xyz789",
"recoveryEndedAt": "abc123",
"signatureRequest": SignatureRequest,
"state": "CLAWED_BACK",
"wallet": Wallet
}
VaultRecoveryAction
Fields
| Input Field | Description |
|---|---|
autoRecovery - Boolean
|
|
custody - VaultCustody!
|
|
reason - String
|
Reason for the recovery request |
recovery - VaultRecoveryConfig!
|
|
recoveryMethod - RecoveryMethod
|
Recovery method: INSTANT (custody keys, no timelock) or DELAYED (recovery keys, with timelock). Default = DELAYED |
signerWalletIds - [ID!]
|
Vault wallet IDs to involve as signers. When omitted, all current vault-type signers are included. Pass an empty list to exclude all vault signers (e.g. for passphrase-only recovery). |
upgradeVaultPuzzle - Boolean
|
Upgrade a legacy vault to the current puzzle version during recovery. Default = false |
Example
{
"autoRecovery": false,
"custody": VaultCustody,
"reason": "xyz789",
"recovery": VaultRecoveryConfig,
"recoveryMethod": "DELAYED",
"signerWalletIds": [4],
"upgradeVaultPuzzle": true
}
VaultRecoveryClawbackAction
Fields
| Input Field | Description |
|---|---|
clawback - Boolean
|
Example
{"clawback": true}
VaultRecoveryConfig
Example
{
"authorizedWalletIds": ["4"],
"clawbackTimelock": 123,
"keyTypes": [PublicKeyWithType],
"publicKeyIds": [4],
"recoveryProviderId": 4,
"threshold": 123
}
VaultRecoveryReview
Fields
| Field Name | Description |
|---|---|
approvalReason - String
|
The reason for the recovery review approval |
beforeAfterData - BeforeAfterData
|
The before and after key configuration changes |
createdAt - String!
|
The date and time when the recovery review was created |
id - ID!
|
|
initiator - VaultRecoveryReviewInitiator
|
|
reason - String!
|
The reason for the recovery review |
recoveryHistory - [VaultRecoveryReview!]!
|
The history of all completed (approved or rejected) recovery reviews for the wallet associated with this review |
recoveryProvider - RecoveryProvider!
|
|
rejectionReason - String
|
The reason for the recovery review rejection |
reviewedAt - String
|
The date and time when the recovery review was reviewed (approved or rejected) |
reviewedByUser - VaultRecoveryReviewReviewer
|
The user who reviewed (approved or rejected) this recovery review |
state - VaultRecoveryReviewState!
|
|
updatedAt - String!
|
The date and time when the recovery review was last updated |
vaultRecovery - VaultRecovery!
|
|
wallet - VaultRecoveryReviewWallet!
|
The wallet associated with this recovery review. Returns a restricted VaultRecoveryReviewWallet type instead of the full Wallet type because recovery review owners do not have permission to access the complete wallet object. |
Example
{
"approvalReason": "xyz789",
"beforeAfterData": BeforeAfterData,
"createdAt": "xyz789",
"id": "4",
"initiator": VaultRecoveryReviewInitiator,
"reason": "abc123",
"recoveryHistory": [VaultRecoveryReview],
"recoveryProvider": RecoveryProvider,
"rejectionReason": "abc123",
"reviewedAt": "abc123",
"reviewedByUser": VaultRecoveryReviewReviewer,
"state": "APPROVED",
"updatedAt": "abc123",
"vaultRecovery": VaultRecovery,
"wallet": VaultRecoveryReviewWallet
}
VaultRecoveryReviewInitiator
VaultRecoveryReviewReviewer
VaultRecoveryReviewsSortKey
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CREATED_AT"
VaultRecoveryReviewState
Description
The set of valid sort keys for the VaultRecoveryReviewState query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"APPROVED"
VaultRecoveryReviewWallet
VaultRecoverySigner
Example
{
"authorizedWallet": Wallet,
"createdAt": "xyz789",
"id": "4",
"keyType": "APP",
"publicKey": PublicKey
}
VaultRecoverySignersSortKey
Description
The set of valid sort keys for the VaultRecoverySigners query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
VaultRecoveryState
Description
The state of a vault recovery attempt.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLAWED_BACK"
VaultRestoreChallenge
Fields
| Field Name | Description |
|---|---|
challengeId - String!
|
Pass this back in the proof of restoreVaultFromChain or restoreVaultFromConfig |
expiresAt - String!
|
When the challenge stops being accepted |
linkableSignerAppKeys - [VaultRestoreLinkableKey!]!
|
Member keys that could be in a Chia Signer app but are not linked to the viewer. Linking one from the app and requesting a new challenge makes SIGNER_APP available. |
message - String!
|
Hex bytes a member key of the vault signs |
proofMethods - [VaultKeyProofMethod!]!
|
The ways the viewer can prove control of a member key of this vault |
Example
{
"challengeId": "abc123",
"expiresAt": "abc123",
"linkableSignerAppKeys": [VaultRestoreLinkableKey],
"message": "xyz789",
"proofMethods": ["PASSKEY"]
}
VaultRestoreLinkableKey
Description
A member key of the vault that may be in a Chia Signer app but is not linked to the viewer
Fields
| Field Name | Description |
|---|---|
keyType - VaultSignerAppKeyType!
|
|
publicKey - String!
|
Hex public key, to request when relinking it from the app |
Example
{
"keyType": "HARDWARE",
"publicKey": "xyz789"
}
VaultSignerAppKeyType
Values
| Enum Value | Description |
|---|---|
|
|
A spend key the Chia Signer app keeps in secure hardware (SECP256R1) |
|
|
A recovery key the Chia Signer app keeps in software (BLS12_381) |
Example
"HARDWARE"
VaultSignerState
Description
Where a signer stands in its vault's custody as a custody-changing recovery moves it along
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
Wallet
Fields
| Field Name | Description |
|---|---|
address - PuzzleHash
|
One of the wallet's puzzle hashes and its address. For a vault's receive addresses, use vaultAddresses. |
addresses - WalletAddressesConnection!
|
Addresses associated with this wallet |
Arguments |
|
airdrops - WalletAirdropsConnection!
|
The airdrops that are associated with this wallet. |
Arguments
|
|
asset - WalletAsset
|
The assets that are associated with this wallet |
Arguments
|
|
assets - WalletAssetsConnection!
|
The assets that are associated with this wallet. |
balance - BigInt!
|
The total balance of this wallet Use assets instead
|
canViewerAcceptOffer - Boolean!
|
Whether the current viewer can accept offers with this wallet. Always false for OAuth client sessions. |
canViewerCreateAirdrop - Boolean!
|
Whether the current viewer can create airdrops from this wallet. Always false for OAuth client sessions. |
canViewerCreateAsset - Boolean!
|
Whether the current viewer can issue new tokens from this wallet. Always false for OAuth client sessions. |
canViewerCreateBroadcastMessage - Boolean!
|
Whether the current viewer can create broadcast messages from this wallet. Always false for OAuth client sessions. |
canViewerCreateNft - Boolean!
|
Whether the current viewer can mint NFTs from this wallet. Always false for OAuth client sessions. |
canViewerCreateOffer - Boolean!
|
Whether the current viewer can create offers from this wallet. Always false for OAuth client sessions. |
canViewerCreateTransfer - Boolean!
|
Whether the current viewer can send from this wallet, including coin splits, coin combines and NFT transfers. Always false for OAuth client sessions. |
canViewerDelete - Boolean!
|
Whether the current viewer can delete this wallet. Always false for OAuth client sessions. |
canViewerRecover - Boolean!
|
Whether the current viewer can start or manage a recovery of this vault. Always false for OAuth client sessions. |
canViewerUpdate - Boolean!
|
Whether the current viewer can edit this wallet. Always false for OAuth client sessions. |
createdAt - String!
|
The date and time when the wallet was created |
custodyConfig - WalletCustodyConfig!
|
Custody configuration which defines the type and behavior of this wallet |
grantableOAuthScopes - [String!]!
|
|
Arguments
|
|
hasMintedAssets - Boolean!
|
Whether this wallet has minted any CAT2 assets |
hasReceiveAddress - Boolean!
|
Whether the wallet has a derived receive address |
id - ID!
|
|
messages - WalletMessagesConnection!
|
The messages that are associated with this wallet. |
Arguments
|
|
name - String
|
The name of the wallet |
needsConfigDownload - Boolean!
|
Whether the vault config has changed since last download (e.g. after recovery) |
nfts - WalletNftsConnection!
|
The NFTs that are associated with this wallet. |
Arguments |
|
offers - WalletOffersConnection!
|
The offers that are associated with this wallet. |
Arguments
|
|
pinnedTransactions - WalletPinnedTransactionsConnection!
|
Unsigned and retryable rejected transactions pinned for user action. |
Arguments
|
|
platformSubscriptions - WalletPlatformSubscriptionsConnection!
|
The subscriptions that are associated with this wallet. |
Arguments |
|
recoveryEligibility - RecoveryEligibility!
|
Whether a vault recovery can currently be initiated. |
recoveryState - WalletRecoveryState!
|
The state of the recovery for this wallet |
settings - WalletSettings!
|
Settings applied to this wallet |
signerType - SignerType
|
The type of signer for this wallet |
signers - WalletSignersConnection!
|
The signers that are associated with this wallet |
Arguments |
|
state - WalletState
|
The state of the wallet |
transactions - WalletTransactionsConnection!
|
The transactions that are associated with this wallet. |
Arguments
|
|
updatedAt - String!
|
The date and time when the wallet was last updated |
user - User!
|
The user that owns this wallet |
vaultAddresses - [VaultAddress!]!
|
All derived addresses for this vault wallet, ordered by index |
vaultRecoveries - WalletVaultRecoveriesConnection!
|
All vault recovery attempts for this wallet |
Arguments |
|
vaultRecovery - VaultRecovery
|
Vault recovery configuration applied to this wallet |
vaultRecoveryProvider - RecoveryProviderPublic
|
The recovery provider configured as a recovery key for this vault (if any) |
vaultRecoverySigners - WalletVaultRecoverySignersConnection!
|
Vault recovery signers assigned to this wallet |
Arguments |
|
walletSubscriptions - WalletWalletSubscriptionsConnection!
|
The subscriptions that are associated with this wallet. |
Arguments |
|
Example
{
"address": PuzzleHash,
"addresses": WalletAddressesConnection,
"airdrops": WalletAirdropsConnection,
"asset": WalletAsset,
"assets": WalletAssetsConnection,
"balance": {},
"canViewerAcceptOffer": false,
"canViewerCreateAirdrop": true,
"canViewerCreateAsset": true,
"canViewerCreateBroadcastMessage": true,
"canViewerCreateNft": true,
"canViewerCreateOffer": true,
"canViewerCreateTransfer": false,
"canViewerDelete": true,
"canViewerRecover": false,
"canViewerUpdate": false,
"createdAt": "abc123",
"custodyConfig": WalletCustodyConfig,
"grantableOAuthScopes": ["xyz789"],
"hasMintedAssets": false,
"hasReceiveAddress": false,
"id": "4",
"messages": WalletMessagesConnection,
"name": "abc123",
"needsConfigDownload": true,
"nfts": WalletNftsConnection,
"offers": WalletOffersConnection,
"pinnedTransactions": WalletPinnedTransactionsConnection,
"platformSubscriptions": WalletPlatformSubscriptionsConnection,
"recoveryEligibility": RecoveryEligibility,
"recoveryState": "AWAITING_REVIEW",
"settings": WalletSettings,
"signerType": "MIXED_MULTISIG",
"signers": WalletSignersConnection,
"state": "READY",
"transactions": WalletTransactionsConnection,
"updatedAt": "abc123",
"user": User,
"vaultAddresses": [VaultAddress],
"vaultRecoveries": WalletVaultRecoveriesConnection,
"vaultRecovery": VaultRecovery,
"vaultRecoveryProvider": RecoveryProviderPublic,
"vaultRecoverySigners": WalletVaultRecoverySignersConnection,
"walletSubscriptions": WalletWalletSubscriptionsConnection
}
WalletActionInput
Fields
| Input Field | Description |
|---|---|
autoSubmit - Boolean
|
Whether to automatically submit on-chain once required signatures are provided |
fee - BigInt
|
The fee to pay |
networkId - ID
|
ID of network to trigger action against wallet on |
requestId - String
|
Unique identifier for the request |
userId - ID
|
New wallet owner userId (if different than the authenticated user) |
vaultAction - VaultAction
|
Vault specific action to be performed |
walletId - ID!
|
ID of wallet to trigger action against |
Example
{
"autoSubmit": true,
"fee": {},
"networkId": "4",
"requestId": "xyz789",
"userId": "4",
"vaultAction": VaultAction,
"walletId": 4
}
WalletActionPayload
Fields
| Field Name | Description |
|---|---|
signatureRequest - SignatureRequest!
|
Signature request for wallet action |
Example
{"signatureRequest": SignatureRequest}
WalletAddressesConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletAddressesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletAddressesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletAddressesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - PuzzleHash!
|
Example
{
"cursor": "abc123",
"node": PuzzleHash
}
WalletAirdropsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletAirdropsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletAirdropsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletAirdropsConnectionEdge
WalletAsset
Fields
| Field Name | Description |
|---|---|
amount - BigInt!
|
The total amount of this asset Use totalAmount field instead |
asset - Asset!
|
The asset that is associated with this wallet asset |
assetHash - String
|
The CAT asset hash. Null for XCH. |
canViewerUpdate - Boolean!
|
Whether viewer can update asset or not |
decimals - Int!
|
|
displayName - String!
|
The user's custom display name for the asset (falls back to the asset's actual name if not customized) Use name instead. |
displaySymbol - String
|
The user's custom display symbol for the asset (falls back to the asset's actual symbol if not customized) Use symbol instead. |
id - ID!
|
|
identifier - String!
|
The CAT asset hash, or the network genesis challenge for XCH. Use assetHash for CAT assets and network.genesisChallenge for XCH. |
issuerWallet - Wallet
|
|
lockedAmount - BigInt!
|
The locked amount of this asset currently locked in pending transactions or offers |
mintState - TransactionStateString
|
|
multiIssuance - Boolean!
|
Whether this asset supports multiple issuances |
name - String!
|
|
revocable - Boolean!
|
Whether this asset is revocable |
spendableAmount - BigInt!
|
The spendable amount of this asset, excluding any locked amounts |
symbol - String
|
|
totalAmount - BigInt!
|
The total amount of this asset |
totalMelted - BigInt!
|
The total amount of this asset that has been melted (cumulative) |
totalMinted - BigInt!
|
The total amount of this asset that has been minted (cumulative) |
totalSupply - BigInt!
|
The current circulating supply of this asset (totalMinted - totalMelted) |
transactions - WalletAssetTransactionsConnection!
|
The transactions that are associated with this wallet asset |
Arguments |
|
type - AssetType!
|
Use assetHash to distinguish CAT2 assets from XCH. |
wallet - Wallet!
|
The wallet that owns this asset |
Example
{
"amount": {},
"asset": Asset,
"assetHash": "xyz789",
"canViewerUpdate": true,
"decimals": 987,
"displayName": "abc123",
"displaySymbol": "abc123",
"id": "4",
"identifier": "abc123",
"issuerWallet": Wallet,
"lockedAmount": {},
"mintState": "CLAWED_BACK",
"multiIssuance": false,
"name": "abc123",
"revocable": false,
"spendableAmount": {},
"symbol": "xyz789",
"totalAmount": {},
"totalMelted": {},
"totalMinted": {},
"totalSupply": {},
"transactions": WalletAssetTransactionsConnection,
"type": "CAT1",
"wallet": Wallet
}
WalletAssetsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletAssetsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletAssetsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletAssetsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletAsset!
|
Example
{
"cursor": "abc123",
"node": WalletAsset
}
WalletAssetsSortKey
Description
The set of valid sort keys for the WalletAssets query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"CREATED_AT"
WalletAssetTransactionsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletAssetTransactionsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletAssetTransactionsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletAssetTransactionsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - TransactionCoinRecord!
|
Example
{
"cursor": "abc123",
"node": TransactionCoinRecord
}
WalletCustodyConfig
Fields
| Field Name | Description |
|---|---|
createdAt - String!
|
The date and time when the custody config was created |
id - ID!
|
|
standardCustodyConfig - StandardCustodyConfig
|
Standard custody config for standard wallet similar to the Chia reference wallet |
vaultCustodyConfig - VaultCustodyConfig
|
Vault custody config |
walletId - String!
|
ID of the wallet |
Example
{
"createdAt": "abc123",
"id": 4,
"standardCustodyConfig": StandardCustodyConfig,
"vaultCustodyConfig": VaultCustodyConfig,
"walletId": "abc123"
}
WalletInterface
Possible Types
| WalletInterface Types |
|---|
Example
{"id": 4, "name": "xyz789"}
WalletMessage
Fields
| Field Name | Description |
|---|---|
bulletinCoinName - String!
|
The coin ID of the bulletin coin that contains this message |
createdAt - String!
|
When the message was received |
direction - WalletMessageDirection!
|
Whether a message was sent or received by this wallet |
id - ID!
|
|
isRead - Boolean!
|
Whether this message has been read by the wallet |
message - String!
|
|
state - String!
|
|
topic - String!
|
|
vaultLauncherId - String!
|
Launcher ID of the vault that sent the message |
wallet - Wallet!
|
The wallet that owns this message |
Example
{
"bulletinCoinName": "xyz789",
"createdAt": "xyz789",
"direction": "INBOUND",
"id": 4,
"isRead": false,
"message": "abc123",
"state": "xyz789",
"topic": "xyz789",
"vaultLauncherId": "abc123",
"wallet": Wallet
}
WalletMessageDirection
Description
The direction of a wallet message.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"INBOUND"
WalletMessagesConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletMessagesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletMessagesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletMessagesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletMessage!
|
Example
{
"cursor": "abc123",
"node": WalletMessage
}
WalletMessagesSortKey
Description
The set of valid sort keys for the WalletMessages query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
WalletNftsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletNftsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletNftsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletNftsConnectionEdge
WalletOffer
Fields
| Field Name | Description |
|---|---|
assets - WalletOfferAssetsConnection!
|
The assets that are associated with this offer. |
Arguments |
|
bech32 - String!
|
|
createdAt - String!
|
The date and time when the offer was created |
creatorIncludedFee - BigInt
|
The fee included by the offer creator |
expiresAt - DateTime
|
|
id - ID!
|
|
isCreator - Boolean!
|
Whether the wallet is the creator of the offer |
nfts - WalletOfferNftsConnection!
|
The NFTs that are associated with this offer. |
Arguments |
|
offerId - ID!
|
|
settlementType - String
|
Settlement type of offer |
spendBundle - String!
|
|
state - String
|
|
transactions - [Transaction!]!
|
Transactions related to this offer |
wallet - Wallet!
|
Wallet which has offers |
Example
{
"assets": WalletOfferAssetsConnection,
"bech32": "abc123",
"createdAt": "abc123",
"creatorIncludedFee": {},
"expiresAt": "2007-12-03T10:15:30Z",
"id": 4,
"isCreator": false,
"nfts": WalletOfferNftsConnection,
"offerId": "4",
"settlementType": "xyz789",
"spendBundle": "xyz789",
"state": "abc123",
"transactions": [Transaction],
"wallet": Wallet
}
WalletOfferAssetsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletOfferAssetsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletOfferAssetsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletOfferAssetsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - OfferAsset!
|
Example
{
"cursor": "abc123",
"node": OfferAsset
}
WalletOfferNftsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletOfferNftsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletOfferNftsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletOfferNftsConnectionEdge
WalletOffersConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletOffersConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletOffersConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletOffersConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletOffer!
|
Example
{
"cursor": "abc123",
"node": WalletOffer
}
WalletOffersSortKey
Description
The set of valid sort keys for the WalletOffersSortKey query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"CREATED_AT"
WalletPinnedTransactionsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletPinnedTransactionsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletPinnedTransactionsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletPinnedTransactionsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletTransaction!
|
Example
{
"cursor": "xyz789",
"node": WalletTransaction
}
WalletPlatformSubscriptionsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletPlatformSubscriptionsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletPlatformSubscriptionsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletPlatformSubscriptionsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SubscriptionEntity!
|
Example
{
"cursor": "abc123",
"node": SubscriptionEntity
}
WalletRecoveryState
Description
The set of valid sort keys for the WalletRecoveryState query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AWAITING_REVIEW"
WalletSettings
Fields
| Field Name | Description |
|---|---|
watchtower - Boolean!
|
Master watchtower switch. While false, the vault receives no activity alerts. Recovery alerts are always sent. |
watchtowerAlertSettings - [WatchtowerAlertSetting!]!
|
How this vault receives each watchtower alert type it can change, including types it has not changed from the default. The recovery alerts are always sent and are not listed. |
Example
{
"watchtower": false,
"watchtowerAlertSettings": [WatchtowerAlertSetting]
}
WalletSigner
WalletSignersConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletSignersConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletSignersConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletSignersConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - Signer!
|
|
vaultSignerState - VaultSignerState
|
Where the signer stands in this vault's custody: active, pending a recovery in progress, or old. Null when none of the signer's keys is a member of the vault. |
Example
{
"cursor": "xyz789",
"node": Signer,
"vaultSignerState": "ACTIVE"
}
WalletsSortKey
Description
The set of valid sort keys for the Wallets query.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CREATED_AT"
WalletState
Description
The set of valid states for the Wallet.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"READY"
WalletSubscription
Fields
| Field Name | Description |
|---|---|
allAvailableTopics - WalletSubscriptionAllAvailableTopicsConnection!
|
All available topics defined for this subscription |
Arguments |
|
autoSubscribe - Boolean!
|
Whether the wallet should automatically subscribe to new topics as they are seen on-chain |
avatarFileName - String
|
Stored avatar file name for the subscription. |
id - ID!
|
|
isPlatform - Boolean!
|
Whether this is a platform-level subscription |
name - String!
|
Name of the subscription |
topics - WalletSubscriptionTopicsConnection!
|
Topics the wallet subscribes to. |
Arguments |
|
vaultAddress - String
|
Vault receive address derived from the launcher id |
vaultLauncherId - String!
|
Vault launcher ID as a 64-character hexadecimal string. |
Example
{
"allAvailableTopics": WalletSubscriptionAllAvailableTopicsConnection,
"autoSubscribe": true,
"avatarFileName": "abc123",
"id": "4",
"isPlatform": true,
"name": "xyz789",
"topics": WalletSubscriptionTopicsConnection,
"vaultAddress": "xyz789",
"vaultLauncherId": "abc123"
}
WalletSubscriptionAllAvailableTopicsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletSubscriptionAllAvailableTopicsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [
WalletSubscriptionAllAvailableTopicsConnectionEdge
],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletSubscriptionAllAvailableTopicsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - SubscriptionTopic!
|
Example
{
"cursor": "xyz789",
"node": SubscriptionTopic
}
WalletSubscriptionsSortKey
Description
The set of valid sort keys for the WalletSubscriptions query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
WalletSubscriptionTopic
Example
{
"createdAt": "xyz789",
"id": 4,
"name": "abc123",
"subscriptionTopicId": "xyz789",
"topic": "abc123"
}
WalletSubscriptionTopicsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletSubscriptionTopicsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletSubscriptionTopicsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletSubscriptionTopicsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletSubscriptionTopic!
|
Example
{
"cursor": "xyz789",
"node": WalletSubscriptionTopic
}
WalletSubscriptionTopicsSortKey
Description
The set of valid sort keys for the WalletSubscriptionTopics query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
WalletTransaction
Fields
| Field Name | Description |
|---|---|
airdropPayoutRecipientCount - Int
|
The number of airdrop recipients this transaction paid, when it pays out an airdrop sent from this wallet with clawback recipients. Null for every other transaction. |
airdropSummary - AirdropTransactionSummary
|
Recipient and clawback totals for an airdrop sent from this wallet. Null for every other transaction. |
amount - BigInt!
|
The amount in mojos, never negative. For a transfer, airdrop, royalty or block reward, it is the size of the wallet main token change. It is the stored amount instead when the wallet transaction has no main token change, when the change is zero or contradicts the stored direction, when it is XCH and walletFee is null, and when the wallet is a vault with several wallet transactions for the transaction, one per address. Every other type, offers, mints, coin splits and combines included, reports the amount stored when the transaction was recorded. Use assetChanges. |
asset - Asset
|
For a transfer, airdrop, royalty or block reward, the token of the wallet main token change, or the token stored on the transaction when the wallet transaction has no main token change. Every other type reports the token stored on the transaction, which is null for offers. Use assetChanges. |
assetChanges - WalletTransactionAssetChangesConnection!
|
What the transaction changed for this wallet, one node per asset: tokens first, then NFTs, outgoing before incoming. A vault with one wallet transaction per address lists the whole wallet on the address with the lowest index, and none on the others. NFT changes are listed only with permission to read the wallet NFTs. A page holds at most 250 changes. |
Arguments |
|
associatedClawbackTransaction - WalletTransaction
|
The clawback transaction associated with this transaction |
buyOrder - BuyOrder
|
The buy order associated with this transaction, if any |
clawbackExpirationTime - DateTime
|
The latest expiration time among the clawback outputs represented by this wallet transaction |
clawbackState - ClawbackState!
|
Clawback state and available actions for this transaction |
coinReservationTransaction - WalletTransaction
|
Reservation (coin split) transaction for this offer, if present |
confirmationHeight - Int
|
The block height at which this transaction was confirmed |
confirmations - Int
|
The block confirmation count of this transaction |
confirmedAt - String
|
Confirmation block timestamp as an ISO 8601 string. |
createdAt - String!
|
|
direction - String
|
INBOUND or OUTBOUND, as stored when the transaction was recorded, which is null for offers. A transfer, airdrop, royalty or block reward without a stored direction can report the direction of the wallet main token change. Use assetChanges. |
fee - BigInt
|
The fee of the whole transaction in mojos, which can include fees other wallets paid. walletFee is the fee this wallet paid. Use walletFee. |
from - String
|
The address this transaction was sent from |
hasUnspentClawbackCoins - Boolean!
|
Whether this clawback transaction has unspent clawback coins that can be finalized or clawed back. Returns false if the receiver already finalized the transaction. |
id - ID!
|
|
initiatingApplicationName - String
|
The name of the OAuth application that initiated this transaction |
inputs - WalletTransactionInputsConnection!
|
Input coins to the transaction. |
isCoinReservationForOffer - Boolean!
|
True if this transaction itself is a reservation (coin split) for an offer |
memos - [String!]!
|
|
message - Message
|
The broadcast message associated with this bulletin transaction, if any |
nfts - WalletTransactionNftsConnection
|
The NFTs included in this transaction. |
Arguments |
|
offer - WalletOffer
|
The offer created with this transaction. Only available after signing. |
outputs - WalletTransactionOutputsConnection!
|
Output coins from the transaction. |
resubmission - TransactionResubmissionDetails!
|
Transaction resubmission availability and rejection details. |
signatureRequest - SignatureRequest
|
The signature request to sign this transaction |
state - TransactionStateString!
|
The state of this transaction |
timestamp - String
|
|
to - String
|
The address this transaction was sent to |
type - TransactionType
|
|
unspentClawbackCoins - UnspentClawbackCoins
|
The clawback coins this transaction created that are still unspent, which are the coins that finalizing, pushing through, or clawing back the transaction spends. Null when there are none. |
vaultRecoveryReview - VaultRecoveryReview
|
The vault recovery review associated with this transaction, if any |
wallet - Wallet!
|
The wallet that owns this transaction |
walletFee - BigInt
|
The network fee this wallet paid, in mojos. Null when it is not known, such as when several wallets spent XCH in the transaction or its coins are not synced yet. |
xchHandle - String
|
The XCHandle this transaction was sent to, without the leading @. Set only for outbound sends created through an XCHandle. |
Example
{
"airdropPayoutRecipientCount": 123,
"airdropSummary": AirdropTransactionSummary,
"amount": {},
"asset": Asset,
"assetChanges": WalletTransactionAssetChangesConnection,
"associatedClawbackTransaction": WalletTransaction,
"buyOrder": BuyOrder,
"clawbackExpirationTime": "2007-12-03T10:15:30Z",
"clawbackState": ClawbackState,
"coinReservationTransaction": WalletTransaction,
"confirmationHeight": 123,
"confirmations": 123,
"confirmedAt": "abc123",
"createdAt": "abc123",
"direction": "abc123",
"fee": {},
"from": "abc123",
"hasUnspentClawbackCoins": false,
"id": "4",
"initiatingApplicationName": "abc123",
"inputs": WalletTransactionInputsConnection,
"isCoinReservationForOffer": true,
"memos": ["xyz789"],
"message": Message,
"nfts": WalletTransactionNftsConnection,
"offer": WalletOffer,
"outputs": WalletTransactionOutputsConnection,
"resubmission": TransactionResubmissionDetails,
"signatureRequest": SignatureRequest,
"state": "CLAWED_BACK",
"timestamp": "xyz789",
"to": "abc123",
"type": "AIRDROP",
"unspentClawbackCoins": UnspentClawbackCoins,
"vaultRecoveryReview": VaultRecoveryReview,
"wallet": Wallet,
"walletFee": {},
"xchHandle": "abc123"
}
WalletTransactionAssetChange
Description
What a wallet transaction changed for one asset, from the perspective of the wallet. The network fee is not part of it.
Fields
| Field Name | Description |
|---|---|
amount - BigInt!
|
How much the wallet gained or lost, in mojos, never negative. Zero for a coin split or combine, which gives back what it spends. |
asset - Asset
|
The token that changed. Null for an NFT. |
assetHash - String
|
The asset hash as 64 lowercase hex characters: the asset id of a CAT, or the launcher id of an NFT. Null for XCH. |
direction - TransactionDirection
|
INBOUND when the wallet gained the asset, OUTBOUND when it lost it. Null when the change is zero. |
inputCoinCount - Int!
|
The number of coins of the asset the wallet spent. |
kind - WalletTransactionAssetChangeKind!
|
|
outputCoinCount - Int!
|
The number of coins of the asset created for the wallet. |
Example
{
"amount": {},
"asset": Asset,
"assetHash": "xyz789",
"direction": "INBOUND",
"inputCoinCount": 123,
"kind": "NFT",
"outputCoinCount": 987
}
WalletTransactionAssetChangeKind
Description
Whether an asset change is of a token, XCH included, or of an NFT.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"NFT"
WalletTransactionAssetChangesConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletTransactionAssetChangesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletTransactionAssetChangesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletTransactionAssetChangesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletTransactionAssetChange!
|
Example
{
"cursor": "xyz789",
"node": WalletTransactionAssetChange
}
WalletTransactionInputsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletTransactionInputsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletTransactionInputsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletTransactionInputsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - TransactionInput!
|
Example
{
"cursor": "abc123",
"node": TransactionInput
}
WalletTransactionNftsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletTransactionNftsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletTransactionNftsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletTransactionNftsConnectionEdge
WalletTransactionOutputsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletTransactionOutputsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletTransactionOutputsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletTransactionOutputsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - TransactionOutput!
|
Example
{
"cursor": "abc123",
"node": TransactionOutput
}
WalletTransactionsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletTransactionsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletTransactionsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletTransactionsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletTransaction!
|
Example
{
"cursor": "xyz789",
"node": WalletTransaction
}
WalletTransactionsSortKey
Description
The set of valid sort keys for the WalletTransactions query.
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
WalletVaultRecoveriesConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletVaultRecoveriesConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletVaultRecoveriesConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletVaultRecoveriesConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - VaultRecovery!
|
Example
{
"cursor": "xyz789",
"node": VaultRecovery
}
WalletVaultRecoverySignersConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletVaultRecoverySignersConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletVaultRecoverySignersConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
WalletVaultRecoverySignersConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - VaultRecoverySigner!
|
Example
{
"cursor": "xyz789",
"node": VaultRecoverySigner
}
WalletWalletSubscriptionsConnection
Fields
| Field Name | Description |
|---|---|
edges - [WalletWalletSubscriptionsConnectionEdge!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"edges": [WalletWalletSubscriptionsConnectionEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
WalletWalletSubscriptionsConnectionEdge
Fields
| Field Name | Description |
|---|---|
cursor - String!
|
|
node - WalletSubscription!
|
Example
{
"cursor": "xyz789",
"node": WalletSubscription
}
WatchtowerAlertFrequency
Description
How often a watchtower alert type is emailed: each time it happens (IMMEDIATE), or batched into a daily, weekly, or monthly digest.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"DAILY"
WatchtowerAlertSetting
Description
How a vault receives one type of watchtower alert.
Fields
| Field Name | Description |
|---|---|
alertType - WatchtowerAlertType!
|
The alert type this setting applies to |
digestable - Boolean!
|
Whether this alert type may be batched into a digest. When false, the alert is always sent immediately and only IMMEDIATE is accepted as its frequency. |
enabled - Boolean!
|
Whether the alert is sent at all. Defaults to false: a vault receives the alert only after turning it on. Has no effect while the vault's watchtower is false. |
frequency - WatchtowerAlertFrequency!
|
How often the alert is emailed. Defaults to IMMEDIATE. |
Example
{
"alertType": "CLAWBACK_FINALIZED",
"digestable": false,
"enabled": false,
"frequency": "DAILY"
}
WatchtowerAlertType
Description
A kind of watchtower alert sent about a vault.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLAWBACK_FINALIZED"
XchHandleResolution
Fields
| Field Name | Description |
|---|---|
address - String
|
|
expiration - String
|
|
handle - String!
|
|
indexedPeakHeight - Int
|
|
status - XchHandleResolutionStatus!
|
Example
{
"address": "xyz789",
"expiration": "xyz789",
"handle": "abc123",
"indexedPeakHeight": 123,
"status": "EXPIRED"
}
XchHandleResolutionStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"EXPIRED"
XCHStatus
Description
Possible states for xch payment in buy order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CLAWBACK_EXPIRED"