{"version":1,"pages":[{"id":"LlKNMDm0dGjOVgkaOOCR","title":"Build on Xaman","pathname":"/","siteSpaceId":"sitesp_IyFV0","description":"You focus on building your cool app. We make sure your app & Xaman users can interact. Safely & smoothly."},{"id":"N1RXnaRKZ4hi38QRruDV","title":"Getting started","pathname":"/concepts/getting-started","siteSpaceId":"sitesp_IyFV0","description":"Xaman allows developers and app users to \"meet up\".","breadcrumbs":[{"label":"Concepts"}]},{"id":"aHybFzPpVyHX1bUKLf9t","title":"Terminology","pathname":"/concepts/getting-started/terminology","siteSpaceId":"sitesp_IyFV0","description":"Essential terms and concepts to help you better understand and utilize the powerful features of the Xaman Wallet platform.","breadcrumbs":[{"label":"Concepts"},{"label":"Getting started"}]},{"id":"Vx0o4ZkTPuqmfTFTJAAL","title":"Developer Education","pathname":"/concepts/getting-started/developer-education","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"Concepts"},{"label":"Getting started"}]},{"id":"PHpebFqZiEenSqdpszCd","title":"Authorization & Credentials","pathname":"/concepts/authorization","siteSpaceId":"sitesp_IyFV0","emoji":"1f510","description":"How to authorize when communicating with the Xumm platform depends on your workflow.","breadcrumbs":[{"label":"Concepts"}]},{"id":"mOtqX2Eq5x7JbPWQfzCR","title":"Payloads (sign requests)","pathname":"/concepts/payloads-sign-requests","siteSpaceId":"sitesp_IyFV0","description":"Xumm Payloads: creating, delivering, and utilizing incomplete XRP Ledger transactions as a Sign Request to end users.","breadcrumbs":[{"label":"Concepts"}]},{"id":"eCkjKHQACVi3yS4p97UP","title":"Secure Payment Verification","pathname":"/concepts/payloads-sign-requests/verify-transactions","siteSpaceId":"sitesp_IyFV0","emoji":"1f6a8","description":"Once a payment has been sent and the payload resolved on Xumm, some checks are performed to ensure secure payment verification. This document walks you through verifying a payment transaction on Xumm.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"p9z0FUelSy7wJ0Gpdy5A","title":"Workflow","pathname":"/concepts/payloads-sign-requests/workflow","siteSpaceId":"sitesp_IyFV0","description":"Xumm's workflow is designed to streamline the process of transaction signing and interaction with the XRP Ledger.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"EvFjhGx1ipiIP6OfdMxD","title":"Lifecycle","pathname":"/concepts/payloads-sign-requests/lifecycle","siteSpaceId":"sitesp_IyFV0","description":"Xumm's transaction lifecycle is a sequence of steps that ensures secure and efficient transaction processing on the XRP Ledger.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"PIxztFDaxbWNrzlh2mpF","title":"Sample POS lifecycle","pathname":"/concepts/payloads-sign-requests/lifecycle/sample-pos-lifecycle","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Lifecycle"}]},{"id":"GO3TZobNsGX5UZlm1gxA","title":"Payload Delivery","pathname":"/concepts/payloads-sign-requests/delivery","siteSpaceId":"sitesp_IyFV0","description":"Payload delivery in Xumm is a crucial step in the transaction lifecycle. It involves delivering the payload to the user for signing.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"xJoicaWDR1AZfNek1U0M","title":"Deep Linking","pathname":"/concepts/payloads-sign-requests/delivery/deeplink","siteSpaceId":"sitesp_IyFV0","description":"Deep linking in Xumm enables developers to provide a seamless user experience by swiftly guiding users to interact with payloads.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Payload Delivery"}]},{"id":"2qelByj62Eafa1eF5doc","title":"QR Scanning","pathname":"/concepts/payloads-sign-requests/delivery/qr-scan","siteSpaceId":"sitesp_IyFV0","description":"QR scanning is an engaging way to have users interact with payloads, especially in physical mediums. It is simple, quick, and versatile.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Payload Delivery"}]},{"id":"fTBTMeqO7lE8Cc7Jszj9","title":"Push","pathname":"/concepts/payloads-sign-requests/delivery/push","siteSpaceId":"sitesp_IyFV0","description":"Delivering Sign Requests using a push notification can be a very convenient way for end users to interact with your application: they don't even have to scan a QR code.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Payload Delivery"}]},{"id":"E8ssApXJAHyEL7BtunQs","title":"xApps","pathname":"/concepts/payloads-sign-requests/delivery/xapp","siteSpaceId":"sitesp_IyFV0","description":"xApps are custom applications that run within the Xumm environment. As a developer working with xApps, delivering payloads is crucial for a seamless user experience.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Payload Delivery"}]},{"id":"9QoU9wqHrAdD1iMSeiyw","title":"Mobile (iOS/Android)","pathname":"/concepts/payloads-sign-requests/delivery/mobile-ios-android","siteSpaceId":"sitesp_IyFV0","description":"Mobile payload delivery is essential for a seamless experience in mobile applications.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Payload Delivery"}]},{"id":"ZFYokY0HbPuz38GTUfGN","title":"Desktop browser","pathname":"/concepts/payloads-sign-requests/delivery/desktop-browser","siteSpaceId":"sitesp_IyFV0","description":"For web applications accessed through desktop browsers, Xumm provides an optimized delivery method.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Payload Delivery"}]},{"id":"53hjREPC4X8j1PaRoSDd","title":"Status updates","pathname":"/concepts/payloads-sign-requests/status-updates","siteSpaceId":"sitesp_IyFV0","description":"Xumm's Payload status updates bridge the gap between your application and the end user by providing real-time feedback on payload interactions.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"oanWGJI4paIpScgX80Zx","title":"Websocket","pathname":"/concepts/payloads-sign-requests/status-updates/websocket","siteSpaceId":"sitesp_IyFV0","description":"Websockets provide real-time payload updates","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Status updates"}]},{"id":"ZnEkNfPC35ZowTk4B5tn","title":"Webhooks","pathname":"/concepts/payloads-sign-requests/status-updates/webhooks","siteSpaceId":"sitesp_IyFV0","description":"Webhooks are HTTP callbacks that allow you to receive notifications when a Payload (Sign Request) has been resolved (rejected or signed).","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Status updates"}]},{"id":"IXUQx5urSHDucmciPoKz","title":"Signature verification","pathname":"/concepts/payloads-sign-requests/status-updates/webhooks/signature-verification","siteSpaceId":"sitesp_IyFV0","description":"Signature verification is crucial for ensuring the integrity and authenticity of the data received. It involves verifying that the data was sent by Xumm and has not been tampered with.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Status updates"},{"label":"Webhooks"}]},{"id":"SaVOwXVf4M59m68Tt6ft","title":"API Call (polling)","pathname":"/concepts/payloads-sign-requests/status-updates/api-call-polling","siteSpaceId":"sitesp_IyFV0","description":"Polling, or repeated API calls, is a common method to fetch updates. However, in Xumm, it's not the recommended approach due to rate limits.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"},{"label":"Status updates"}]},{"id":"wpwcU55BDLLgkO9E9386","title":"Networks","pathname":"/concepts/payloads-sign-requests/networks","siteSpaceId":"sitesp_IyFV0","description":"The Xumm API/SDK is designed to be network-independent, providing flexibility for developers and end users. This means that the end user determines the network on which transactions occur.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"79xXhtD89U7IlZ8nGJvi","title":"Payload Return URL","pathname":"/concepts/payloads-sign-requests/payload-return-url","siteSpaceId":"sitesp_IyFV0","description":"After a user signs a payload, a user can return to a URL (your website / app).","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"m4iUMHc2uKYS1qLelXNT","title":"Tx Explorer(s)","pathname":"/concepts/payloads-sign-requests/tx-explorer-s","siteSpaceId":"sitesp_IyFV0","description":"To easily link to transaction explorers, you can link to the Xumm explorer launchpad and allow users to pick their preferred explorer.","breadcrumbs":[{"label":"Concepts"},{"label":"Payloads (sign requests)"}]},{"id":"1qJg4CMK0vuiPEN94wo2","title":"Special Transaction Types","pathname":"/concepts/special-transaction-types","siteSpaceId":"sitesp_IyFV0","description":"In Xaman, you can use all XRPL transaction types when sending a JSON transaction payload. However, some special transaction types are unique to Xaman, or require some extra info to use them.","breadcrumbs":[{"label":"Concepts"}]},{"id":"VNwUPTJuT6XhXnxsuoNj","title":"SignIn","pathname":"/concepts/special-transaction-types/signin","siteSpaceId":"sitesp_IyFV0","icon":"signature-lock","description":"The `SignIn` payload is a \"Pseudo transaction type\": an off ledger transaction specific to Xaman, which can be used to identify a user and obtain a token to push sign requests to the end user.","breadcrumbs":[{"label":"Concepts"},{"label":"Special Transaction Types"}]},{"id":"2burb5cAFaPt1c5zZf1J","title":"Batch (multiple inner signers)","pathname":"/concepts/special-transaction-types/batch-multiple-inner-signers","siteSpaceId":"sitesp_IyFV0","icon":"layer-group","description":"The Batch feature allows multiple transactions to be packaged together and executed as a single atomic transaction. Create and submit a batch of up to 8 transactions that succeed or fail atomically.","breadcrumbs":[{"label":"Concepts"},{"label":"Special Transaction Types"}]},{"id":"9G9irzimZnWl64cnVjnD","title":"PaymentChannelAuthorize","pathname":"/concepts/special-transaction-types/paymentchannelauthorize","siteSpaceId":"sitesp_IyFV0","icon":"bridge-suspension","description":"To authorize a Payment Channel, an off ledger \"receipt\" must be signed. This is implemented in Xaman through a 'Pseudo Transaction' with TransactionType `PaymentChannelAuthorize`.","breadcrumbs":[{"label":"Concepts"},{"label":"Special Transaction Types"}]},{"id":"XpqC20mkXGVGLMVGa8b3","title":"\"Pay With Anything\"","pathname":"/concepts/pay-with-anything","siteSpaceId":"sitesp_IyFV0","description":"Xaman allows you to easily craft a payload (Sign Request) that will always deliver the currency and amount you want to receive, while allowing the Xaman user to pay with anything (any asset they have)","breadcrumbs":[{"label":"Concepts"}]},{"id":"MSCSBZEqnyT9Ygq7kmbH","title":"Limitations","pathname":"/concepts/limitations","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"Concepts"}]},{"id":"kCw8E9cqeWUbW4GxeOrm","title":"Rate limits","pathname":"/concepts/limitations/rate-limits","siteSpaceId":"sitesp_IyFV0","description":"To prevent excessive load on our platform, the Xumm platform applies rate limits. The limits depend on the type of consumer (regular API, SDK, JWT) and endpoint(s).","breadcrumbs":[{"label":"Concepts"},{"label":"Limitations"}]},{"id":"QsIOH4p8Jsyji6YwLGHw","title":"Transaction types","pathname":"/concepts/limitations/transaction-types","siteSpaceId":"sitesp_IyFV0","description":"Xumm supports a wide range of transaction types to cater to various use cases on the XRPL. Here's what you need to know:","breadcrumbs":[{"label":"Concepts"},{"label":"Limitations"}]},{"id":"o5wpZvv5HLF7GaEKQnPI","title":"Push permission","pathname":"/concepts/limitations/push-permission","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"Concepts"},{"label":"Limitations"}]},{"id":"q4AzLmrvf332UeQbZ2bY","title":"Implementation checklist","pathname":"/concepts/implementation-checklist","siteSpaceId":"sitesp_IyFV0","description":"This article presents a concise implementation checklist for developers using Xumm. By following these steps, you can ensure a smooth and secure integration whilst optimizing the user experience.","breadcrumbs":[{"label":"Concepts"}]},{"id":"zeiV30xlUGnF3wsx9GLH","title":"Protocol specific checks","pathname":"/concepts/implementation-checklist/protocol-specific-checks","siteSpaceId":"sitesp_IyFV0","description":"The XRP Ledger Protocol has several protocol-related things to check in your app/implementation to make the experience for end users better. Please take these things into account:","breadcrumbs":[{"label":"Concepts"},{"label":"Implementation checklist"}]},{"id":"7zzuU9sbc4pp18CGeOrh","title":"Payment Request Link","pathname":"/simple-link-qr/payment-request-link","siteSpaceId":"sitesp_IyFV0","description":"To route users to a simple payment request, all you need to use is a URL / QR containing that URL, crafted with the right parameters.","breadcrumbs":[{"label":"Simple link / QR"}]},{"id":"hIQLVD5HyrIgK1ac0Ygm","title":"TrustSet Link/QR","pathname":"/simple-link-qr/trustset-link-qr","siteSpaceId":"sitesp_IyFV0","description":"If you simply want to offer users a static link / QR code to sign a specific XRPL transaction, you can craft a link (to be offered directly or as contents of a QR code) for users to click / scan.","breadcrumbs":[{"label":"Simple link / QR"}]},{"id":"GdiBRS0rHlhCtuUV7Kir","title":"Browser (\"Web3\")","pathname":"/environments/browser-web3","siteSpaceId":"sitesp_IyFV0","emoji":"1f30e","description":"Building a web app? Running as a client side SPA (single page webapp) or server side rendered? React Native / VueJS / VanillaJS / etc.: you can integrate with the Xumm ecosystem using our SDK.","breadcrumbs":[{"label":"Environments"}]},{"id":"3jpKxD7swV8lvOAFkuqV","title":"CORS (Browser)","pathname":"/environments/browser-web3/cors-browser","siteSpaceId":"sitesp_IyFV0","description":"CORS (Cross-Origin Resource Sharing) is a security feature that restricts a web page from accessing resources from another domain. Xumm allows for CORS calls to JWT endpoints.","breadcrumbs":[{"label":"Environments"},{"label":"Browser (\"Web3\")","emoji":"1f30e"}]},{"id":"qbl98DyFSgrJHw03O4RB","title":"xApps (\"dApps\")","pathname":"/environments/xapps-dapps","siteSpaceId":"sitesp_IyFV0","emoji":"1f4f1","description":"Build your own web app to live in-app, inside Xumm for all Xumm users. Build an xApp. Use your favourite tools & frameworks for the client side code (HTML, CSS, JS, etc.","breadcrumbs":[{"label":"Environments"}]},{"id":"lJNm11sTIamIzpbe4Ly9","title":"Requirements","pathname":"/environments/xapps-dapps/requirements","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"rckKLvUgz0YexhchyqDg","title":"Develop & Test","pathname":"/environments/xapps-dapps/develop-and-test","siteSpaceId":"sitesp_IyFV0","description":"When building xApps, there are some tools to make building & sharing your xApp easier.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"6AMR9I0Khhi1WiP4a1gO","title":"CORS (xApp)","pathname":"/environments/xapps-dapps/cors-xapp","siteSpaceId":"sitesp_IyFV0","description":"CORS restricts access to resources on different domains to ensure privacy and security, allowing website owners to control access. As xApps run inside Xumm, allowing CORS is required for xApps.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"Hlb8XvRUO6bkqrb3Xacn","title":"Xumm UI interaction","pathname":"/environments/xapps-dapps/xumm-ui-interaction","siteSpaceId":"sitesp_IyFV0","description":"Using the Xumm SDK in xApps, you can trigger native Xumm interaction & receive events from Xumm in your xApp.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"K4RE9Xu4X94fAIwBanG6","title":"Your own backend (Auth)","pathname":"/environments/xapps-dapps/your-own-backend-auth","siteSpaceId":"sitesp_IyFV0","description":"Xumm xApps yield a JWT that can be used to make subsequent calls from the user context to the Xumm API's. You can also use this JWT for your own backend.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"tWuIhe5bxvXsML99E7z7","title":"Style guide","pathname":"/environments/xapps-dapps/style-guide","siteSpaceId":"sitesp_IyFV0","description":"When building xApps, it makes a lot of sense to stick to the design (colour palette, font, etc.) as used by Xumm to offer the best user experience to xApp users.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"KU5pjoFTRjdUTmqKTxsu","title":"Development & Debugging","pathname":"/environments/xapps-dapps/debugging","siteSpaceId":"sitesp_IyFV0","description":"Debugging your xApp is tricky: it runs on your phone. How to access the logs?","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"L4xt4cMx0RGqlsvT6MGi","title":"xAppBuilder 🏗️","pathname":"/environments/xapps-dapps/xappbuilder","siteSpaceId":"sitesp_IyFV0","description":"Introducing xAppBuilder, an advanced tool specifically designed to streamline the creation and debugging process of xApps for Xumm.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"}]},{"id":"TcdP9OUcR95aysCpWtEp","title":"Connecting localhost to xAppBuilder","pathname":"/environments/xapps-dapps/xappbuilder/connecting-localhost-to-xappbuilder","siteSpaceId":"sitesp_IyFV0","description":"With xAppBuilder, you can now conveniently connect your localhost for an efficient and real-time development experience. This video provides an overview of connecting your localhost.","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"},{"label":"xAppBuilder 🏗️"}]},{"id":"vCxQEgJr79koqhQCRw1G","title":"xAppBuilder FAQ","pathname":"/environments/xapps-dapps/xappbuilder/xappbuilder-faq","siteSpaceId":"sitesp_IyFV0","description":"Frequently Asked Questions","breadcrumbs":[{"label":"Environments"},{"label":"xApps (\"dApps\")","emoji":"1f4f1"},{"label":"xAppBuilder 🏗️"}]},{"id":"HekkuwT3QiLHUxVzQqt8","title":"Backend (SDK / API)","pathname":"/environments/backend-sdk-api","siteSpaceId":"sitesp_IyFV0","emoji":"1f4c2","description":"Use your API key and secret obtained from the Xumm Developer Console & off you go. Using our SDK's, or building your own integration on top of our well documented APIs.","breadcrumbs":[{"label":"Environments"}]},{"id":"xIfyDNiCxGAAlrMgz6YV","title":"User identification payloads","pathname":"/environments/backend-sdk-api/user-identification-payloads","siteSpaceId":"sitesp_IyFV0","description":"When building your own backend integration, you can request a user to sign a Sign Request with a \"SignIn\" transaction type. This is a pseudo transaction type allowing a user to confirm their r-address","breadcrumbs":[{"label":"Environments"},{"label":"Backend (SDK / API)","emoji":"1f4c2"}]},{"id":"wlzTyHWkFK8e1M6iig5K","title":"Native Apps","pathname":"/environments/native-apps","siteSpaceId":"sitesp_IyFV0","emoji":"1f39b","description":"When building a native app (iOS / Android / React Native / Capacitor / ...) you can leverage \"Sign In with Xumm\" and offloading transaction signing to Xumm as well. This uses application deep links.","breadcrumbs":[{"label":"Environments"}]},{"id":"vN441MY7E94exdSIMGFn","title":"Identity (OAuth2, OpenID)","pathname":"/environments/identity-oauth2-openid","siteSpaceId":"sitesp_IyFV0","emoji":"1f647","description":"The Xumm platform can act as the OAuth2 provider. The Xumm platform supports the OAuth2 / OpenID Connect flow. Authenticate and identify end users using their self custodial XRPL accounts.","breadcrumbs":[{"label":"Environments"}]},{"id":"JldoAf7EI1LYTkMktCJb","title":"Test Tools","pathname":"/environments/identity-oauth2-openid/tools","siteSpaceId":"sitesp_IyFV0","description":"Trying to get your OAuth2 / OpenID integration to work? There are a couple of tools to help you test things.","breadcrumbs":[{"label":"Environments"},{"label":"Identity (OAuth2, OpenID)","emoji":"1f647"}]},{"id":"2FOutpoDvX3actEluxoH","title":"Xaman SDK (Intro)","pathname":"/js-ts-sdk/xumm-sdk-intro","siteSpaceId":"sitesp_IyFV0","description":"Developers can use the Xaman SDK to easily integrate with the Xaman platform. This allows for easy & secure end user interaction. With your application & the XRP Ledger.","breadcrumbs":[{"label":"JS/TS SDK"}]},{"id":"GU22kahbElu0YV6Ilcmu","title":"Examples / User stories","pathname":"/js-ts-sdk/examples-user-stories","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"}]},{"id":"apWL1VqxEHxbDOZ24b6C","title":"Sign Requests (payloads)","pathname":"/js-ts-sdk/examples-user-stories/sign-requests-payloads","siteSpaceId":"sitesp_IyFV0","description":"A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"Examples / User stories"}]},{"id":"3OhP0e0kMg01YRZdtCIJ","title":"Browser","pathname":"/js-ts-sdk/examples-user-stories/sign-requests-payloads/browser","siteSpaceId":"sitesp_IyFV0","description":"A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"Examples / User stories"},{"label":"Sign Requests (payloads)"}]},{"id":"ytygDrNxMBe3FGE4CVDh","title":"xApp","pathname":"/js-ts-sdk/examples-user-stories/sign-requests-payloads/xapp","siteSpaceId":"sitesp_IyFV0","description":"A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"Examples / User stories"},{"label":"Sign Requests (payloads)"}]},{"id":"qyGAS3iaPuPkRsc2QZok","title":"Backend","pathname":"/js-ts-sdk/examples-user-stories/sign-requests-payloads/backend","siteSpaceId":"sitesp_IyFV0","description":"A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"Examples / User stories"},{"label":"Sign Requests (payloads)"}]},{"id":"LyF4zHh0zQKKaPEwpwHL","title":"Verify Payload signature","pathname":"/js-ts-sdk/examples-user-stories/verify-oauth2-signature","siteSpaceId":"sitesp_IyFV0","description":"You can fetch the corresponding payload to verify the signature, to make sure it's signed by the account you expected to sign the payload.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"Examples / User stories"}]},{"id":"ZtS0oRezpCNldB5UXLuU","title":"Simple Sign Request","pathname":"/js-ts-sdk/examples-user-stories/misc-todo","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"Examples / User stories"}]},{"id":"A7pE3rnYK5hdSz9OFgz2","title":"SDK (syntax)","pathname":"/js-ts-sdk/sdk-syntax","siteSpaceId":"sitesp_IyFV0","emoji":"1f4e6","description":"Developers can use the Xumm SDK to easily interact with the Xumm platform. This section contains the technical documentation for the Javascript/TypeScript API (objects, methods, arguments).","breadcrumbs":[{"label":"JS/TS SDK"}]},{"id":"YGkBTpggzkbb39Nlm0up","title":"Xumm.ping()","pathname":"/js-ts-sdk/sdk-syntax/xumm.ping","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"lA12nuzXcFFhXJvfj6cp","title":"Xumm.on(event, fn)","pathname":"/js-ts-sdk/sdk-syntax/xumm.on-event-fn","siteSpaceId":"sitesp_IyFV0","description":"Events fired by the SDK per environment. For the order of events, see the section per environment after the table with events.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"mYv7IjeC8Jus1QGgIAX1","title":"Xumm.off(event, fn)","pathname":"/js-ts-sdk/sdk-syntax/xumm.off-event-fn","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"b39sSlXEZcxdUuZncJbe","title":"Xumm.helpers { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"t43Q5eox9IwgqPC0BGC3","title":"ping()","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/ping","siteSpaceId":"sitesp_IyFV0","description":"Contact the Xumm platform to check for connectivity and valid auth.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"UFAUY9qozGgdw0d5QFQT","title":"getRates( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/getrates","siteSpaceId":"sitesp_IyFV0","description":"Get aggregated exchange rates vs. XRP for most fiat & crypto assets.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"qpNITw1d5Dd09pTu8CKC","title":"getRails()","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/getrails","siteSpaceId":"sitesp_IyFV0","description":"Fetch the available (known) networks and network parameters.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"PpB8xVTYI5ZXAgbE46kU","title":"getHookHash( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/gethookhash","siteSpaceId":"sitesp_IyFV0","description":"Get meta information for a known Hook, by specifying the Hook Hash (64 hex chars)","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"KLxj6Fgq5dMWigVU43nH","title":"getHookHashes()","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/gethookhashes","siteSpaceId":"sitesp_IyFV0","description":"Get the meta information for all known Hooks. Object returned contains Hook hash as key, meta as value.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"lI9xzcUobQO2CtJQCapU","title":"getCuratedAssets()","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/getcuratedassets","siteSpaceId":"sitesp_IyFV0","description":"Get the curated assets (shortlist in Xumm) for Trust Lines","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"kkd4eRYONEedg20gJhax","title":"getNftokenDetail( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/getnftokendetail","siteSpaceId":"sitesp_IyFV0","description":"Get NFT Token details. Only available in JWT context. Please fetch your NFT info from other NFT data sources if possible.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"MrQpMds5oH4DblVuZIjS","title":"getKycStatus( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/getkycstatus","siteSpaceId":"sitesp_IyFV0","description":"Get the KYC status for users, based on a user_token issued by a successful sign request.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"sDYVFykCqYF9vCSPIKXn","title":"verifyUserTokens([ … ])","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/verifyusertokens","siteSpaceId":"sitesp_IyFV0","description":"Verify a user token (or multiple), to see if the token is still valid (not expired, not revoked) and can be used to deliver sign requests to user(s)","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"2sGolECTKEUs8Sv5lhB6","title":"getTransaction( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.helpers/gettransaction","siteSpaceId":"sitesp_IyFV0","description":"Fetch an XRPL transaction & metadata. Please don't use this method unless absolutely necessary: please set up your own connection to an XRPL node to fetch this information.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.helpers { … }"}]},{"id":"4bobJKrsHEdnoxljbQjt","title":"Xumm.user { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.user","siteSpaceId":"sitesp_IyFV0","description":"Returns information about the signed in user (in case of xApp or Web3 flow).","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"jnvYVmYDYRaGIMGF6kTL","title":"Xumm.environment { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.environment","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"ZtANgoAjktch7oCklzyA","title":"Xumm.payload { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.payload","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"ijzEVWhksrsASrUY7VA0","title":"create( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.payload/create","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.payload { … }"}]},{"id":"kDMEs7H98Ju6lwydR6Gh","title":"createAndSubscribe( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.payload/createandsubscribe","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.payload { … }"}]},{"id":"xFZ3rkBADm5wIVHfBdEV","title":"cancel( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.payload/cancel","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.payload { … }"}]},{"id":"7KBDSyQxCcowydcN0Due","title":"subscribe( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.payload/subscribe","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.payload { … }"}]},{"id":"DA4j8yPBYLM3h14pXt1F","title":"get( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.payload/get","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.payload { … }"}]},{"id":"f79gABO5s72w9oglbKxZ","title":"Xumm.xapp { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"ggndN0ltTaLVyXIeE4nr","title":"ready()","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/ready","siteSpaceId":"sitesp_IyFV0","description":"When using the native Xumm loader screen for your xApp (until your xApp is ready, fully hydrated, booted, etc.) you call this method to remove the Xumm loading screen.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"Leawf7jXdN5Kydh0D80V","title":"openSignRequest({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/opensignrequest","siteSpaceId":"sitesp_IyFV0","description":"Open a Sign Request (payload) created with Xumm.payload.create","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"2z3DHo7zpzDZW7N7LZIR","title":"selectDestination({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/selectdestination","siteSpaceId":"sitesp_IyFV0","description":"Open the Destination Picker: select/find/scan (QR) an XRPL destination account by r-address, slug or PayString","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"qQanVeFbVuzypchR1qm6","title":"scanQr()","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/scanqr","siteSpaceId":"sitesp_IyFV0","description":"Scan a QR code","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"pDV643HjMOfulrHJc028","title":"tx({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/tx","siteSpaceId":"sitesp_IyFV0","description":"Open the Transaction Details panel","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"MaPikYMVQhPcvt2w67vv","title":"close({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/close","siteSpaceId":"sitesp_IyFV0","description":"Close the xApp","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"nRnsfD0YOcUsELgqoiC8","title":"share({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/share","siteSpaceId":"sitesp_IyFV0","description":"Use the OS Share-dialog to share text or a URL","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"xlWyERiD1swgF3ZeMYlI","title":"navigate({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/navigate","siteSpaceId":"sitesp_IyFV0","description":"Navigate to another xApp (by identifier)","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"jccGrka7uCx6jiz7FTET","title":"openBrowser({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/openbrowser","siteSpaceId":"sitesp_IyFV0","description":"Open an external URL in the OS default browser","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"axXGZ8z9tYb7rIDaFbU0","title":"on(xAppEvent, fn)","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/on-event-fn","siteSpaceId":"sitesp_IyFV0","description":"Certain events are sent to xApps. These events are usually an asynchronous callback containing data requested by calling one of the xApp UI actions.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"xtheuecXbGZ0mfAXCuhE","title":"off(xAppEvent, fn)","pathname":"/js-ts-sdk/sdk-syntax/xumm.xapp/off-event-fn","siteSpaceId":"sitesp_IyFV0","description":"Certain events are sent to xApps. These events are usually an asynchronous callback containing data requested by calling one of the xApp UI actions.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.xapp { … }"}]},{"id":"5b70Ys4WygJ3YyLVBjlT","title":"Xumm.userstore { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.userstore","siteSpaceId":"sitesp_IyFV0","description":"Client side persistent user bound key/value store.","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"Nj3LMcI3hX6dsqmYrJcc","title":"list()","pathname":"/js-ts-sdk/sdk-syntax/xumm.userstore/list","siteSpaceId":"sitesp_IyFV0","description":"List userstore keys","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.userstore { … }"}]},{"id":"dQ1Yz7VZxcmM4EYy8FBS","title":"get( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.userstore/get","siteSpaceId":"sitesp_IyFV0","description":"Get userstore value (object) by key","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.userstore { … }"}]},{"id":"Tnr4wPUUu1VGsCLYGFWQ","title":"delete( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.userstore/delete","siteSpaceId":"sitesp_IyFV0","description":"Remove userstore key & value by key","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.userstore { … }"}]},{"id":"LuZUdblsXRlwAUQ3Wqig","title":"set( … , { … } )","pathname":"/js-ts-sdk/sdk-syntax/xumm.userstore/set-...-...","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.userstore { … }"}]},{"id":"dn0LciZpddLxWDzebt3O","title":"Xumm.backendstore { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.backendstore","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"6yf8LWBqw0TibNJEbyDg","title":"get()","pathname":"/js-ts-sdk/sdk-syntax/xumm.backendstore/get","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.backendstore { … }"}]},{"id":"UZ7ZMsH5pq2gz5f6QEDE","title":"set({ … })","pathname":"/js-ts-sdk/sdk-syntax/xumm.backendstore/set","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.backendstore { … }"}]},{"id":"A30PGZvg5LX8K15lZCE9","title":"delete()","pathname":"/js-ts-sdk/sdk-syntax/xumm.backendstore/delete","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.backendstore { … }"}]},{"id":"si33ehNla9gBBViqiHqF","title":"Xumm.push { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.push","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"qGNiCI8tiUW5sOGPjRhS","title":"event( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.push/event","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.push { … }"}]},{"id":"FAcgcAPvD5fDve2XQa2Q","title":"notification( … )","pathname":"/js-ts-sdk/sdk-syntax/xumm.push/notification","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"},{"label":"Xumm.push { … }"}]},{"id":"4rePcTGwVm1FQFtIKsza","title":"Xumm.runtime { … }","pathname":"/js-ts-sdk/sdk-syntax/xumm.runtime","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"u2Okw2eAHIMi4PCESqVA","title":"Xumm.authorize()","pathname":"/js-ts-sdk/sdk-syntax/xumm.authorize","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]},{"id":"3WLJpYzsXdoWF50pSoHR","title":"Xumm.logout()","pathname":"/js-ts-sdk/sdk-syntax/xumm.logout","siteSpaceId":"sitesp_IyFV0","description":"","breadcrumbs":[{"label":"JS/TS SDK"},{"label":"SDK (syntax)","emoji":"1f4e6"}]}]}