diff --git a/.gitignore b/.gitignore index 5ed1a54a4..7cf5e24ee 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,7 @@ yarn-error.log* .idea -*.info.mdx \ No newline at end of file +*.info.mdx + +# non-production openrpc.json files +/openrpc/*openrpc.json diff --git a/Dockerfile b/Dockerfile index 0c8154f15..3303c5942 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,6 +17,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y gpg curl git ma COPY . /app/ RUN yarn install +RUN yarn rpcspec:build RUN yarn build FROM nginx:1.17 diff --git a/api/anchor-platform/callbacks/_category_.json b/api/anchor-platform/callbacks/_category_.json deleted file mode 100644 index e12fdc242..000000000 --- a/api/anchor-platform/callbacks/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 30, - "label": "Callbacks" - } - \ No newline at end of file diff --git a/api/anchor-platform/custody-server/_category_.json b/api/anchor-platform/custody-server/_category_.json deleted file mode 100644 index c5bb385f2..000000000 --- a/api/anchor-platform/custody-server/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 30, - "label": "Custody Server" - } - \ No newline at end of file diff --git a/api/anchor-platform/introduction/_category_.json b/api/anchor-platform/introduction/_category_.json deleted file mode 100644 index a1b7fe4ed..000000000 --- a/api/anchor-platform/introduction/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 10, - "label": "Introduction" -} diff --git a/api/anchor-platform/resources/_category_.json b/api/anchor-platform/resources/_category_.json deleted file mode 100644 index d81f55563..000000000 --- a/api/anchor-platform/resources/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 20, - "label": "Resources" - } - \ No newline at end of file diff --git a/api/anchor-platform/rpc/_category_.json b/api/anchor-platform/rpc/_category_.json deleted file mode 100644 index 612c9820d..000000000 --- a/api/anchor-platform/rpc/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 40, - "label": "JSON-RPC API" - } - \ No newline at end of file diff --git a/api/horizon/aggregations/_category_.json b/api/horizon/aggregations/_category_.json deleted file mode 100644 index b42715c53..000000000 --- a/api/horizon/aggregations/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 30, - "label": "Aggregations" -} diff --git a/api/horizon/aggregations/fee-stats/_category_.json b/api/horizon/aggregations/fee-stats/_category_.json deleted file mode 100644 index a0286cd87..000000000 --- a/api/horizon/aggregations/fee-stats/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 50, - "label": "Fee Stats" - } - \ No newline at end of file diff --git a/api/horizon/aggregations/index.mdx b/api/horizon/aggregations/index.mdx deleted file mode 100644 index ba205857d..000000000 --- a/api/horizon/aggregations/index.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Aggregations -sidebar_position: 30 ---- - -import { MethodTable } from "@site/src/components/MethodTable"; - -Endpoints that aggregate data about the ledger. - - - -| | | -| ---------------------------------------------------- | --- | -| [Order Books](./order-books/index.mdx) | | -| [Paths](./paths/index.mdx) | | -| [Trade Aggregations](./trade-aggregations/index.mdx) | | -| [Fee Stats](./fee-stats/index.mdx) | | - - diff --git a/api/horizon/aggregations/order-books/_category_.json b/api/horizon/aggregations/order-books/_category_.json deleted file mode 100644 index c54ff2d09..000000000 --- a/api/horizon/aggregations/order-books/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 10, - "label": "Order Books" -} diff --git a/api/horizon/aggregations/paths/_category_.json b/api/horizon/aggregations/paths/_category_.json deleted file mode 100644 index be2ed9917..000000000 --- a/api/horizon/aggregations/paths/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 20, - "label": "Paths" -} \ No newline at end of file diff --git a/api/horizon/aggregations/trade-aggregations/_category_.json b/api/horizon/aggregations/trade-aggregations/_category_.json deleted file mode 100644 index 30bb79bc5..000000000 --- a/api/horizon/aggregations/trade-aggregations/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 40, - "label": "Trade Aggregations" -} \ No newline at end of file diff --git a/api/horizon/errors/_category_.json b/api/horizon/errors/_category_.json deleted file mode 100644 index 6eeb91392..000000000 --- a/api/horizon/errors/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Errors", - "position": 40 -} diff --git a/api/horizon/errors/http-status-codes/_category_.json b/api/horizon/errors/http-status-codes/_category_.json deleted file mode 100644 index 18e58b600..000000000 --- a/api/horizon/errors/http-status-codes/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "HTTP Status Codes", - "position": 30 -} diff --git a/api/horizon/errors/result-codes/_category_.json b/api/horizon/errors/result-codes/_category_.json deleted file mode 100644 index a18fe45fd..000000000 --- a/api/horizon/errors/result-codes/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Result Codes", - "position": 40 -} diff --git a/api/horizon/errors/result-codes/operation-specific/category.json b/api/horizon/errors/result-codes/operation-specific/category.json deleted file mode 100644 index ea317e56c..000000000 --- a/api/horizon/errors/result-codes/operation-specific/category.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "Operation-Specific Result Codes", - "order": 30 -} diff --git a/api/horizon/introduction/_category_.json b/api/horizon/introduction/_category_.json deleted file mode 100644 index a1b7fe4ed..000000000 --- a/api/horizon/introduction/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 10, - "label": "Introduction" -} diff --git a/api/horizon/introduction/index.mdx b/api/horizon/introduction/index.mdx deleted file mode 100644 index 2798f4f81..000000000 --- a/api/horizon/introduction/index.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Horizon API Reference -sidebar_position: 10 -slug: /horizon -description: Horizon is an API for interacting with the Stellar network. ---- - -import { MethodTable } from "@site/src/components/MethodTable"; - -Horizon is an API for interacting with the Stellar network. - -This API serves the bridge between apps and [Stellar Core](/docs/run-core-node). Projects like wallets, decentralized exchanges, and asset issuers use Horizon to submit transactions, query an account balance, or stream events like transactions to an account. - -Horizon is a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) and can be accessed via cURL, a browser, or one of the [Stellar SDKs](/docs/tools/sdks). To reduce the complexity of your project, we recommend you use an SDK instead of making direct API calls. - -The Stellar Development Foundation (SDF) runs two instances of Horizon: - -- [https://horizon.stellar.org/](https://horizon.stellar.org/) for interacting with the public network -- [https://horizon-testnet.stellar.org/](https://horizon-testnet.stellar.org/) for interacting with the [testnet](/docs/fundamentals-and-concepts/networks) - - - -| | | -| --- | --- | -| [Introduction](../introduction/index.mdx) | How Horizon is structured. | -| [Resources](../resources/index.mdx) | Descriptions of resources and their endpoints. | -| [Aggregations](../aggregations/index.mdx) | Descriptions of specialized endpoints. | -| [Errors](../errors/index.mdx) | Potential errors and what they mean. | - - diff --git a/api/horizon/introduction/pagination/_category_.json b/api/horizon/introduction/pagination/_category_.json deleted file mode 100644 index 06291f381..000000000 --- a/api/horizon/introduction/pagination/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 60, - "label": "Pagination" - } - \ No newline at end of file diff --git a/api/horizon/resources/_category_.json b/api/horizon/resources/_category_.json deleted file mode 100644 index d81f55563..000000000 --- a/api/horizon/resources/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 20, - "label": "Resources" - } - \ No newline at end of file diff --git a/api/horizon/resources/index.mdx b/api/horizon/resources/index.mdx deleted file mode 100644 index a3cdc02bc..000000000 --- a/api/horizon/resources/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Resources -sidebar_position: 20 ---- - -import { MethodTable } from "@site/src/components/MethodTable"; - -Data on the Stellar ledger is organized according to resources. Each resource has several different endpoints. - - - -| | | -| --------------------------------------------------- | --- | -| [Ledgers](./ledgers/index.mdx) | | -| [Transactions](./transactions/index.mdx) | | -| [Operations](./operations/index.mdx) | | -| [Effects](./effects/index.mdx) | | -| [Accounts](./accounts/index.mdx) | | -| [Offers](./offers/index.mdx) | | -| [Claimable Balances](./claimablebalances/index.mdx) | | -| [Trades](./trades/index.mdx) | | -| [Assets](./assets/index.mdx) | | -| [Liquidity Pools](./liquiditypools/index.mdx) | | - - diff --git a/api/stellar-disbursement-platform/introduction/_category_.json b/api/stellar-disbursement-platform/introduction/_category_.json deleted file mode 100644 index 545254b2c..000000000 --- a/api/stellar-disbursement-platform/introduction/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 10, - "label": "Introduction" -} \ No newline at end of file diff --git a/api/stellar-disbursement-platform/resources/_category_.json b/api/stellar-disbursement-platform/resources/_category_.json deleted file mode 100644 index 9aac71963..000000000 --- a/api/stellar-disbursement-platform/resources/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 20, - "label": "Resources" -} - \ No newline at end of file diff --git a/api/stellar-disbursement-platform/resources/index.mdx b/api/stellar-disbursement-platform/resources/index.mdx deleted file mode 100644 index ab834de2c..000000000 --- a/api/stellar-disbursement-platform/resources/index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Resources -sidebar_position: 20 ---- - -import {MethodTable} from "@site/src/components/MethodTable"; - -Data on the Stellar Disbursement Platform is organized according to resources. Each resource has several different endpoints. - - - -| | | -| --------------------------------------------------- | --- | -| [Authentication](./auth/index.mdx) | | -| [Disbursements](./disbursements/index.mdx) | | -| [Organization](./organization/index.mdx) | | -| [Payments](./payments/index.mdx) | | -| [Profiles](./profile/index.mdx) | | -| [Receivers](./receivers/index.mdx) | | -| [Registration](./registration/index.mdx) | | -| [Statistics](./statistics/index.mdx) | | -| [Users](./users/index.mdx) | | - - \ No newline at end of file diff --git a/docs/accessing-data/_category_.json b/docs/accessing-data/_category_.json deleted file mode 100644 index a3b7c1eb4..000000000 --- a/docs/accessing-data/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "position": 80, - "label": "Access Historical Data", - "link": { - "type": "generated-index" - } - } - \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/_category_.json b/docs/anchoring-assets/anchor-platform/_category_.json deleted file mode 100644 index 96912a903..000000000 --- a/docs/anchoring-assets/anchor-platform/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 20, - "label": "Anchor Platform", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/custody-services/_category_.json b/docs/anchoring-assets/anchor-platform/custody-services/_category_.json deleted file mode 100644 index db903caae..000000000 --- a/docs/anchoring-assets/anchor-platform/custody-services/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 80, - "label": "Custody Services", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/custody-services/fireblocks/_category_.json b/docs/anchoring-assets/anchor-platform/custody-services/fireblocks/_category_.json deleted file mode 100644 index 62a3069df..000000000 --- a/docs/anchoring-assets/anchor-platform/custody-services/fireblocks/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 10, - "label": "Fireblocks", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/events/_category_.json b/docs/anchoring-assets/anchor-platform/events/_category_.json deleted file mode 100644 index 41cf0e027..000000000 --- a/docs/anchoring-assets/anchor-platform/events/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 85, - "label": "Event Handling", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/sep1/_category_.json b/docs/anchoring-assets/anchor-platform/sep1/_category_.json deleted file mode 100644 index 9259c3f4b..000000000 --- a/docs/anchoring-assets/anchor-platform/sep1/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 40, - "label": "Stellar Info File", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/sep10/_category_.json b/docs/anchoring-assets/anchor-platform/sep10/_category_.json deleted file mode 100644 index 0cf63487b..000000000 --- a/docs/anchoring-assets/anchor-platform/sep10/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 50, - "label": "Stellar Authentication", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/sep24/_category_.json b/docs/anchoring-assets/anchor-platform/sep24/_category_.json deleted file mode 100644 index d4212c0bd..000000000 --- a/docs/anchoring-assets/anchor-platform/sep24/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 60, - "label": "Hosted Deposits and Withdrawals", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/sep31/_category_.json b/docs/anchoring-assets/anchor-platform/sep31/_category_.json deleted file mode 100644 index 6401f26cf..000000000 --- a/docs/anchoring-assets/anchor-platform/sep31/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 70, - "label": "Cross-Border Payments", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/anchoring-assets/anchor-platform/sep6/_category_.json b/docs/anchoring-assets/anchor-platform/sep6/_category_.json deleted file mode 100644 index da6dc71ce..000000000 --- a/docs/anchoring-assets/anchor-platform/sep6/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 65, - "label": "Programmatic Deposits and Withdrawals", - "link": { - "type": "generated-index" - } -} \ No newline at end of file diff --git a/docs/encyclopedia/anchors.mdx b/docs/encyclopedia/anchors.mdx index 5dbf016cb..3e61a5799 100644 --- a/docs/encyclopedia/anchors.mdx +++ b/docs/encyclopedia/anchors.mdx @@ -8,7 +8,7 @@ Stellar has anchor services operating worldwide. View the [Anchor Directory](htt Anchors can issue their own assets on the Stellar network, or they can honor assets that already exist. -You can set up an anchor by using the SDF-maintained [Anchor Platform](../anchoring-assets/anchor-platform), which is the easiest way to deploy an anchor service compatible with Stellar Ecosystem Proposals (SEPs). +You can set up an anchor by using the SDF-maintained [Anchor Platform](/network/anchor-platform), which is the easiest way to deploy an anchor service compatible with Stellar Ecosystem Proposals (SEPs). Learn how to integrate anchor services into your blockchain-based application by viewing the [Build Apps section](../building-apps/overview.mdx). If you’re looking specifically for MoneyGram Access, see the Integrate with MoneyGram Access tutorial. diff --git a/docs/fundamentals-and-concepts/stellar-stack.mdx b/docs/fundamentals-and-concepts/stellar-stack.mdx index 08372db4b..74acdd04e 100644 --- a/docs/fundamentals-and-concepts/stellar-stack.mdx +++ b/docs/fundamentals-and-concepts/stellar-stack.mdx @@ -13,13 +13,13 @@ Stellar Core is the program used by the individual nodes (or computers) that mak Nodes reach consensus using the Stellar Consensus Protocol, which can you can learn more about here: [Stellar Consensus Protocol](./stellar-consensus-protocol) -Anyone can run a Stellar Core node, but you don’t have to in order to build on Stellar. We recommend you do so if you issue an asset and want to ensure the accuracy of the ledger, if you want to participate in network governance by voting on protocol version, minimum fees, and resource and ledger limits, and/or if you want to contribute to Stellar’s overall health and decentralization. Check out our tutorial on installing, configuring, and maintaining your own node here: [Run a Core Node Tutorial](../run-core-node). +Anyone can run a Stellar Core node, but you don’t have to in order to build on Stellar. We recommend you do so if you issue an asset and want to ensure the accuracy of the ledger, if you want to participate in network governance by voting on protocol version, minimum fees, and resource and ledger limits, and/or if you want to contribute to Stellar’s overall health and decentralization. Check out our tutorial on installing, configuring, and maintaining your own node here: [Run a Core Node Tutorial](/network/core-node). ## Platform Services Horizon is the client-facing RESTful HTTP API server in the platform layer which allows programmatic access to submit transactions and query the network’s historical data. It acts as the interface for applications that want to access the Stellar network. You can communicate with Horizon using an SDK, a web browser, or with simple command tools like cURL. -You do not need to run your own Horizon instance — when you're getting started, you can use the free SDF Horizon instance to access the network — but it is recommended that you do when you’re ready to launch a finished product. Check out how to do so here: [Run Platform Services Tutorial](../run-platform-server) +You do not need to run your own Horizon instance — when you're getting started, you can use the free SDF Horizon instance to access the network — but it is recommended that you do when you’re ready to launch a finished product. Check out how to do so here: [Run Platform Services Tutorial](/network/horizon/admin-guide) Learn all there is to know about using Horizon in the Horizon [API Reference documentation](https://developers.stellar.org/api). diff --git a/docs/run-core-node/_category_.json b/docs/run-core-node/_category_.json deleted file mode 100644 index 98faa5de9..000000000 --- a/docs/run-core-node/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 60, - "label": "Run a Core Node", - "link": { - "type": "doc", "id": "index" - } -} diff --git a/docs/run-platform-server/_category_.json b/docs/run-platform-server/_category_.json deleted file mode 100644 index 2f8744a03..000000000 --- a/docs/run-platform-server/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 70, - "label": "Run Platform Services", - "link": { - "type": "doc", "id": "index" - } -} diff --git a/docs/stellar-disbursement-platform/_category_.json b/docs/stellar-disbursement-platform/_category_.json deleted file mode 100644 index 9173c3e11..000000000 --- a/docs/stellar-disbursement-platform/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "position": 85, - "label": "Use the Stellar Disbursement Platform", - "link": { - "type": "generated-index" - } - } \ No newline at end of file diff --git a/docs/stellar-disbursement-platform/user-interface/_category_.json b/docs/stellar-disbursement-platform/user-interface/_category_.json deleted file mode 100644 index 220b65bdc..000000000 --- a/docs/stellar-disbursement-platform/user-interface/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "position": 40, - "label": "User Interface" - } \ No newline at end of file diff --git a/docusaurus.config.js b/docusaurus.config.js index 2f23a7498..d2203bfc1 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -28,18 +28,18 @@ const config = { "docusaurus-plugin-openapi-docs", { id: "openapi", - docsPluginId: "api", + docsPluginId: "network", config: { horizon: { specPath: "openapi/horizon/bundled.yml", // Path to designated spec file - outputDir: "api/horizon/resources", // Output directory for generated .mdx docs + outputDir: "network/horizon/resources", // Output directory for generated .mdx docs sidebarOptions: { groupPathsBy: "tag", }, }, anchor_platform_api: { specPath: "openapi/anchor-platform/bundled.yml", // Path to designated spec file - outputDir: "api/anchor-platform/resources", // Output directory for generated .mdx docs + outputDir: "network/anchor-platform/resources", // Output directory for generated .mdx docs sidebarOptions: { groupPathsBy: "tag", }, @@ -47,7 +47,7 @@ const config = { }, anchor_platform_callbacks: { specPath: "openapi/anchor-platform/bundled_callback.yml", // Path to designated spec file - outputDir: "api/anchor-platform/callbacks", // Output directory for generated .mdx docs + outputDir: "network/anchor-platform/callbacks", // Output directory for generated .mdx docs sidebarOptions: { groupPathsBy: "tag", }, @@ -55,7 +55,7 @@ const config = { }, anchor_custody_api: { specPath: "openapi/anchor-platform/bundled_custody.yml", // Path to designated spec file - outputDir: "api/anchor-platform/custody-server", // Output directory for generated .mdx docs + outputDir: "network/anchor-platform/custody-server", // Output directory for generated .mdx docs sidebarOptions: { groupPathsBy: "tag", }, @@ -63,7 +63,7 @@ const config = { }, stellar_disbursement_platform: { specPath: "openapi/stellar-disbursement-platform/bundled.yml", // Path to designated spec file - outputDir: "api/stellar-disbursement-platform/resources", // Output directory for generated .mdx docs + outputDir: "network/stellar-disbursement-platform/resources", // Output directory for generated .mdx docs sidebarOptions: { groupPathsBy: "tag", }, @@ -75,13 +75,13 @@ const config = { [ "@docusaurus/plugin-content-docs", { - id: "api", - path: "api", - routeBasePath: "/api", + id: "network", + path: "network", + routeBasePath: "/network", docLayoutComponent: "@theme/DocPage", docItemComponent: "@theme/ApiItem", - sidebarPath: require.resolve("./sidebarsApi.js"), - sidebarItemsGenerator: require("./src/sidebar-api-generator"), + sidebarPath: require.resolve("./sidebarsNetwork.js"), + sidebarItemsGenerator: require("./src/sidebar-network-generator"), editUrl: "https://github.com/stellar/stellar-docs/tree/main", showLastUpdateTime: true, showLastUpdateAuthor: true, @@ -154,31 +154,59 @@ const config = { label: 'Docs', position: 'left', }, + { + type: 'docSidebar', + sidebarId: 'tools', + label: 'Tools', + position: 'left', + }, { type: "dropdown", - label: "APIs", + label: "Network", position: "left", + to: '/network', items: [ { - to: "/api/horizon", + type: 'html', + value: 'Data Availability', + className: 'subtitle', + }, + { + to: "/network/soroban-rpc", + label: "Soroban RPC", + }, + { + to: "/network/hubble", + label: "Hubble", + }, + { + to: "/network/horizon", label: "Horizon", }, { - to: "/api/anchor-platform", + type: 'html', + value: '
SDF Platforms', + className: 'subtitle', + }, + { + to: "/network/anchor-platform", label: "Anchor Platform", }, { - to: "/api/stellar-disbursement-platform", + to: "/network/stellar-disbursement-platform", label: "Stellar Disbursement Platform", - } + }, + { + type: 'html', + value: '
Network Infrastructure', + className: 'subtitle', + }, + { + to: "/network/core-node", + label: "Core Validator Node", + }, ] }, - { - type: 'docSidebar', - sidebarId: 'tools', - label: 'Tools', - position: 'left', - }, { href: "https://github.com/stellar/stellar-docs", label: "GitHub", diff --git a/api/index.mdx b/network/README.mdx similarity index 52% rename from api/index.mdx rename to network/README.mdx index 4861368e4..d00e8943e 100644 --- a/api/index.mdx +++ b/network/README.mdx @@ -1,9 +1,9 @@ --- -title: 'APIs Overview' +title: 'Network Overview' slug: / --- -We have lots of amazing APIs. Go ahead, check 'em out! +The network architechture of Stellar is amazing. Go ahead, check it out! ## Horizon @@ -13,7 +13,21 @@ This API serves the bridge between apps and Stellar Core. Projects like wallets, decentralized exchanges, and asset issuers use Horizon to submit transactions, query an account balance, or stream events like transactions to an account. -[Learn more about the Horizon API here!](/api/horizon) +[Learn more about the Horizon API here!](./horizon/README.mdx) + +## Hubble + +Hubble is your go-to source for viewing, analyzing, and understanding historic +data from the Stellar network. + +[Learn more about Hubble here!](./hubble/README.mdx) + +## Soroban RPC + +If you are writing or interacting with smart contracts, you'll need to use RPC. +This is the best platform to see current state of the Stellar network. + +[Learn more about Soroban RPC here!](./soroban-rpc/README.mdx) ## Anchor Platform @@ -23,11 +37,11 @@ It provides a standardized interface, including the implementation of several Stellar Ecosystem Proposals (SEPs), to make it easy for businesses to integrate with Stellar-based wallets and exchanges. -[Learn more about the Anchor Platform API here!](/api/anchor-platform) +[Learn more about the Anchor Platform API here!](./anchor-platform/README.mdx) ## Stellar Disbursement Platform -The Stellar Disbursement Platform (SDP) enables organizations to disburse bulk +The Stellar Disbursement Platform (SDP) enables organizations to disburse bulk payments to recipients using Stellar. -[Learn more about the Stellar Disbursement Platform API here!](/api/stellar-disbursement-platform) \ No newline at end of file +[Learn more about the Stellar Disbursement Platform API here!](./stellar-disbursement-platform/README.mdx) diff --git a/api/READ_FIRST.md b/network/READ_FIRST.md similarity index 100% rename from api/READ_FIRST.md rename to network/READ_FIRST.md diff --git a/api/anchor-platform/introduction/index.mdx b/network/anchor-platform/README.mdx similarity index 85% rename from api/anchor-platform/introduction/index.mdx rename to network/anchor-platform/README.mdx index b8ddcb54e..b37c2ce24 100644 --- a/api/anchor-platform/introduction/index.mdx +++ b/network/anchor-platform/README.mdx @@ -1,11 +1,11 @@ --- title: Anchor Platform API Reference sidebar_position: 10 -slug: /anchor-platform +sidebar_label: Introduction --- The Anchor Platform is a set of tools and APIs that enable developers and businesses to build their own on and off-ramp services for the Stellar network. It provides a standardized interface, including the implementation of several Stellar Ecosystem Proposals (SEPs), to make it easy for businesses to integrate with Stellar-based wallets and exchanges. The platform also includes features for managing assets, transactions, and user accounts, and supports a variety of deployment options, including using Docker or Kubernetes. Overall, the Anchor Platform aims to simplify the process of building and managing a Stellar-based financial service, allowing businesses to focus on providing value to their customers. -You can read more about integrating with the Anchor Platform [here](/docs/anchoring-assets/anchor-platform/). +You can read more about integrating with the Anchor Platform [in the Admin Guide](./admin-guide/README.mdx). diff --git a/network/anchor-platform/admin-guide/README.mdx b/network/anchor-platform/admin-guide/README.mdx new file mode 100644 index 000000000..3930a6340 --- /dev/null +++ b/network/anchor-platform/admin-guide/README.mdx @@ -0,0 +1,10 @@ +--- +title: Admin Guide +sidebar_position: 20 +--- + +import DocCardList from "@theme/DocCardList"; + +All you need to know about setting up, running, and using the Anchor Platform. + + diff --git a/docs/anchoring-assets/anchor-platform/architecture.mdx b/network/anchor-platform/admin-guide/architecture.mdx similarity index 97% rename from docs/anchoring-assets/anchor-platform/architecture.mdx rename to network/anchor-platform/admin-guide/architecture.mdx index 0ee9efbdd..c8e0eb769 100644 --- a/docs/anchoring-assets/anchor-platform/architecture.mdx +++ b/network/anchor-platform/admin-guide/architecture.mdx @@ -70,5 +70,5 @@ The event service is a new component that will push events to both the client an The custody server is a new component that allows businesses to connect to a custodial service (such as Fireblocks) to send and receive payments on the Stellar network. When used in self-custodial mode, this service is a next generation of the existing Stellar Observer. [seps]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/README.md -[platform-api]: /api/anchor-platform -[callback-api]: /api/anchor-platform/callbacks +[platform-api]: ../resources/README.mdx +[callback-api]: ../callbacks/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/observer/observer.mdx b/network/anchor-platform/admin-guide/component/observer/observer.mdx similarity index 96% rename from docs/anchoring-assets/anchor-platform/component/observer/observer.mdx rename to network/anchor-platform/admin-guide/component/observer/observer.mdx index 74d1788fc..08b05b061 100644 --- a/docs/anchoring-assets/anchor-platform/component/observer/observer.mdx +++ b/network/anchor-platform/admin-guide/component/observer/observer.mdx @@ -33,4 +33,4 @@ The Fireblocks custody service will automatically track transactions and notify ::: -[fireblocks]: /docs/category/fireblocks +[fireblocks]: ../../custody-services/fireblocks/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/rpc/error.mdx b/network/anchor-platform/admin-guide/component/rpc/error.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/rpc/error.mdx rename to network/anchor-platform/admin-guide/component/rpc/error.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/rpc/request.mdx b/network/anchor-platform/admin-guide/component/rpc/request.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/rpc/request.mdx rename to network/anchor-platform/admin-guide/component/rpc/request.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/rpc/response.mdx b/network/anchor-platform/admin-guide/component/rpc/response.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/rpc/response.mdx rename to network/anchor-platform/admin-guide/component/rpc/response.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/rpc/rpc.mdx b/network/anchor-platform/admin-guide/component/rpc/rpc.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/rpc/rpc.mdx rename to network/anchor-platform/admin-guide/component/rpc/rpc.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/security/api_key.mdx b/network/anchor-platform/admin-guide/component/security/api_key.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/security/api_key.mdx rename to network/anchor-platform/admin-guide/component/security/api_key.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/security/jwt.mdx b/network/anchor-platform/admin-guide/component/security/jwt.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/security/jwt.mdx rename to network/anchor-platform/admin-guide/component/security/jwt.mdx diff --git a/docs/anchoring-assets/anchor-platform/component/security/security.mdx b/network/anchor-platform/admin-guide/component/security/security.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/component/security/security.mdx rename to network/anchor-platform/admin-guide/component/security/security.mdx diff --git a/network/anchor-platform/admin-guide/custody-services/README.mdx b/network/anchor-platform/admin-guide/custody-services/README.mdx new file mode 100644 index 000000000..018055be5 --- /dev/null +++ b/network/anchor-platform/admin-guide/custody-services/README.mdx @@ -0,0 +1,11 @@ +--- +title: Custody Services +sidebar_position: 80 +--- + +import DocCardList from "@theme/DocCardList"; + +Using a custody service will allow you to use an outside service to store and +manage your wallets. + + diff --git a/docs/anchoring-assets/anchor-platform/custody-services/configuration.mdx b/network/anchor-platform/admin-guide/custody-services/configuration.mdx similarity index 99% rename from docs/anchoring-assets/anchor-platform/custody-services/configuration.mdx rename to network/anchor-platform/admin-guide/custody-services/configuration.mdx index 0c1f7ece9..5c540446f 100644 --- a/docs/anchoring-assets/anchor-platform/custody-services/configuration.mdx +++ b/network/anchor-platform/admin-guide/custody-services/configuration.mdx @@ -1,5 +1,5 @@ --- -title: "Configuration" +title: Configuration sidebar_position: 10 --- diff --git a/network/anchor-platform/admin-guide/custody-services/fireblocks/README.mdx b/network/anchor-platform/admin-guide/custody-services/fireblocks/README.mdx new file mode 100644 index 000000000..948506bdc --- /dev/null +++ b/network/anchor-platform/admin-guide/custody-services/fireblocks/README.mdx @@ -0,0 +1,11 @@ +--- +title: Fireblocks +sidebar_position: 20 +--- + +import DocCardList from "@theme/DocCardList"; + +Configure [Fireblocks](https://fireblocks.io) to act as a custody service that +stores and manages your wallets. + + diff --git a/docs/anchoring-assets/anchor-platform/custody-services/fireblocks/configuration.mdx b/network/anchor-platform/admin-guide/custody-services/fireblocks/configuration.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/custody-services/fireblocks/configuration.mdx rename to network/anchor-platform/admin-guide/custody-services/fireblocks/configuration.mdx diff --git a/docs/anchoring-assets/anchor-platform/custody-services/fireblocks/example.mdx b/network/anchor-platform/admin-guide/custody-services/fireblocks/example.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/custody-services/fireblocks/example.mdx rename to network/anchor-platform/admin-guide/custody-services/fireblocks/example.mdx diff --git a/network/anchor-platform/admin-guide/events/README.mdx b/network/anchor-platform/admin-guide/events/README.mdx new file mode 100644 index 000000000..43cc58bd9 --- /dev/null +++ b/network/anchor-platform/admin-guide/events/README.mdx @@ -0,0 +1,10 @@ +--- +title: Event Handling +sidebar_position: 85 +--- + +import DocCardList from "@theme/DocCardList"; + +Receive transaction updates through HTTP webhook events. + + diff --git a/docs/anchoring-assets/anchor-platform/events/delivery.mdx b/network/anchor-platform/admin-guide/events/delivery.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/events/delivery.mdx rename to network/anchor-platform/admin-guide/events/delivery.mdx diff --git a/docs/anchoring-assets/anchor-platform/events/index.mdx b/network/anchor-platform/admin-guide/events/getting-started.mdx similarity index 86% rename from docs/anchoring-assets/anchor-platform/events/index.mdx rename to network/anchor-platform/admin-guide/events/getting-started.mdx index 767f22140..d2156a6d8 100644 --- a/docs/anchoring-assets/anchor-platform/events/index.mdx +++ b/network/anchor-platform/admin-guide/events/getting-started.mdx @@ -1,5 +1,5 @@ --- -title: "Getting Started" +title: Getting Started sidebar_position: 10 --- @@ -9,4 +9,4 @@ By integrating your business server with the event service, you will be able to The event service is **required** for the [SEP-6 integration][sep-6] as there are no SEP-6 callbacks. -[sep-6]: /docs/category/programmatic-deposits-and-withdrawals +[sep-6]: ../sep6/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/events/integration.mdx b/network/anchor-platform/admin-guide/events/integration.mdx similarity index 98% rename from docs/anchoring-assets/anchor-platform/events/integration.mdx rename to network/anchor-platform/admin-guide/events/integration.mdx index 95d1a99a9..488acd763 100644 --- a/docs/anchoring-assets/anchor-platform/events/integration.mdx +++ b/network/anchor-platform/admin-guide/events/integration.mdx @@ -112,7 +112,7 @@ Anchor Platform signs the callback requests it sends to client applications. The ### As a Business Server -In addition to SEP transaction status updates, business servers can receive events about SEP-31 quote creation or SEP-12 customer information updates. The schema of the event data will depend on the type of event being sent. Visit the [Event API documentation](/api/anchor-platform/callbacks/post-event) for more information about the schema of the event data. +In addition to SEP transaction status updates, business servers can receive events about SEP-31 quote creation or SEP-12 customer information updates. The schema of the event data will depend on the type of event being sent. Visit the [Event API documentation](../../callbacks/post-event) for more information about the schema of the event data. To receive events as a business server, you will need to expose a callback URL that the event service can send events to. The event service will send a POST request to this endpoint with the event data in the request body. diff --git a/docs/anchoring-assets/anchor-platform/getting_started.mdx b/network/anchor-platform/admin-guide/getting-started.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/getting_started.mdx rename to network/anchor-platform/admin-guide/getting-started.mdx diff --git a/docs/anchoring-assets/anchor-platform/index.mdx b/network/anchor-platform/admin-guide/overview.mdx similarity index 86% rename from docs/anchoring-assets/anchor-platform/index.mdx rename to network/anchor-platform/admin-guide/overview.mdx index 16f6cce19..377bfa49e 100644 --- a/docs/anchoring-assets/anchor-platform/index.mdx +++ b/network/anchor-platform/admin-guide/overview.mdx @@ -3,7 +3,7 @@ title: "Overview" sidebar_position: 10 --- -The Anchor Platform is the easiest and fastest way to deploy [anchor services](../../encyclopedia/anchors) compatible with [Stellar Ecosystem Proposals (SEPs)](https://github.com/stellar/stellar-protocol/tree/master/ecosystem). +The Anchor Platform is the easiest and fastest way to deploy [anchor services](/docs/encyclopedia/anchors) compatible with [Stellar Ecosystem Proposals (SEPs)](https://github.com/stellar/stellar-protocol/tree/master/ecosystem). The goal of the Anchor Platform is to handle all Stellar-specific functionality and requirements for running an anchor, allowing businesses to focus on the core business logic necessary to provide these services. @@ -29,8 +29,8 @@ The documentation for the Anchor Platform is a work in progress. Developers are [sep-31]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0031.md [sep-38]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0038.md [anchor-platform-github]: https://github.com/stellar/java-stellar-anchor-sdk -[sep1-ap]: /docs/category/stellar-info-file -[sep6-ap]: /docs/category/programmatic-deposits-and-withdrawals -[sep10-ap]: /docs/category/stellar-authentication -[sep24-ap]: /docs/category/hosted-deposits-and-withdrawals -[sep31-ap]: /docs/category/cross-border-payments +[sep1-ap]: ./sep1/README.mdx +[sep6-ap]: ./sep6/README.mdx +[sep10-ap]: ./sep10/README.mdx +[sep24-ap]: ./sep24/README.mdx +[sep31-ap]: ./sep31/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep1/configuration.mdx b/network/anchor-platform/admin-guide/sep1/README.mdx similarity index 98% rename from docs/anchoring-assets/anchor-platform/sep1/configuration.mdx rename to network/anchor-platform/admin-guide/sep1/README.mdx index bf94e685f..72834e2a2 100644 --- a/docs/anchoring-assets/anchor-platform/sep1/configuration.mdx +++ b/network/anchor-platform/admin-guide/sep1/README.mdx @@ -1,6 +1,6 @@ --- -title: "Configuration" -sidebar_position: 20 +title: Stellar Info File +sidebar_position: 40 --- import { CodeExample } from "@site/src/components/CodeExample"; diff --git a/docs/anchoring-assets/anchor-platform/sep10/configuration.mdx b/network/anchor-platform/admin-guide/sep10/README.mdx similarity index 98% rename from docs/anchoring-assets/anchor-platform/sep10/configuration.mdx rename to network/anchor-platform/admin-guide/sep10/README.mdx index bf01374eb..62a24e004 100644 --- a/docs/anchoring-assets/anchor-platform/sep10/configuration.mdx +++ b/network/anchor-platform/admin-guide/sep10/README.mdx @@ -1,6 +1,6 @@ --- -title: "Configuration" -sidebar_position: 20 +title: Stellar Authentication +sidebar_position: 50 --- import { CodeExample } from "@site/src/components/CodeExample"; @@ -113,4 +113,4 @@ ORG_DESCRIPTION = "A description of your organization" -[sep1-ap]: /docs/category/stellar-info-file +[sep1-ap]: ../sep1/README.mdx diff --git a/network/anchor-platform/admin-guide/sep24/README.mdx b/network/anchor-platform/admin-guide/sep24/README.mdx new file mode 100644 index 000000000..28a0f666a --- /dev/null +++ b/network/anchor-platform/admin-guide/sep24/README.mdx @@ -0,0 +1,11 @@ +--- +title: Hosted Deposits and Withdrawals +sidebar_position: 60 +--- + +import DocCardList from "@theme/DocCardList"; + +SEP-24 allows for a means by which wallets and/or exchanges allow the user to +directly interact with an on & off-ramp. + + diff --git a/docs/anchoring-assets/anchor-platform/sep24/configuration.mdx b/network/anchor-platform/admin-guide/sep24/configuration.mdx similarity index 99% rename from docs/anchoring-assets/anchor-platform/sep24/configuration.mdx rename to network/anchor-platform/admin-guide/sep24/configuration.mdx index f78454b49..71bff2df6 100644 --- a/docs/anchoring-assets/anchor-platform/sep24/configuration.mdx +++ b/network/anchor-platform/admin-guide/sep24/configuration.mdx @@ -187,4 +187,4 @@ The demo wallet should be able to find your `stellar.toml` file, authenticate us [flyway]: https://documentation.red-gate.com/fd/welcome-to-flyway-184127914.html [sep-24-ref-ui]: https://github.com/stellar/sep24-reference-ui [sep-24-ref]: https://github.com/stellar/java-stellar-anchor-sdk/tree/develop/kotlin-reference-server -[sep1-ap]: /docs/category/stellar-info-file +[sep1-ap]: ../sep1/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep24/example.mdx b/network/anchor-platform/admin-guide/sep24/example.mdx similarity index 100% rename from docs/anchoring-assets/anchor-platform/sep24/example.mdx rename to network/anchor-platform/admin-guide/sep24/example.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep24/faq.mdx b/network/anchor-platform/admin-guide/sep24/faq.mdx similarity index 96% rename from docs/anchoring-assets/anchor-platform/sep24/faq.mdx rename to network/anchor-platform/admin-guide/sep24/faq.mdx index 825baccce..297df7fdb 100644 --- a/docs/anchoring-assets/anchor-platform/sep24/faq.mdx +++ b/network/anchor-platform/admin-guide/sep24/faq.mdx @@ -36,4 +36,4 @@ Utilize the `data.client_domain` attributes within the JWT token. In the presenc [sep-9]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0009.md [sep-24]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0024.md -[clients]: docs/anchoring-assets/anchor-platform/sep10/configuration.mdx +[clients]: ../sep10/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep24/index.mdx b/network/anchor-platform/admin-guide/sep24/getting-started.mdx similarity index 93% rename from docs/anchoring-assets/anchor-platform/sep24/index.mdx rename to network/anchor-platform/admin-guide/sep24/getting-started.mdx index 6f9a82606..ce1d1dbf4 100644 --- a/docs/anchoring-assets/anchor-platform/sep24/index.mdx +++ b/network/anchor-platform/admin-guide/sep24/getting-started.mdx @@ -28,6 +28,6 @@ The customer can then use the digital asset on the Stellar network for remittanc 5. Once the anchor receives the payment, the customer receives the withdrawn funds via bank transfer. [sep-24]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0024.md -[installation-ap]: /docs/anchoring-assets/anchor-platform/getting_started -[sep1-ap]: /docs/category/stellar-info-file -[sep10-ap]: /docs/category/stellar-authentication +[installation-ap]: ../../admin-guide/getting-started.mdx +[sep1-ap]: ../sep1/README.mdx +[sep10-ap]: ../sep10/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep24/integration.mdx b/network/anchor-platform/admin-guide/sep24/integration.mdx similarity index 99% rename from docs/anchoring-assets/anchor-platform/sep24/integration.mdx rename to network/anchor-platform/admin-guide/sep24/integration.mdx index f024ee96b..0c98af044 100644 --- a/docs/anchoring-assets/anchor-platform/sep24/integration.mdx +++ b/network/anchor-platform/admin-guide/sep24/integration.mdx @@ -969,4 +969,4 @@ Works in the same manner as for the deposit flow. For more details, see [Transac [sep-9]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0009.md [sep-24]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0024.md -[json-rpc-methods]: /api/anchor-platform/rpc/methods +[json-rpc-methods]: ../../rpc/methods/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep24/setting-up-production-server.mdx b/network/anchor-platform/admin-guide/sep24/setting-up-production-server.mdx similarity index 95% rename from docs/anchoring-assets/anchor-platform/sep24/setting-up-production-server.mdx rename to network/anchor-platform/admin-guide/sep24/setting-up-production-server.mdx index 2e696ba89..bcd3f1436 100644 --- a/docs/anchoring-assets/anchor-platform/sep24/setting-up-production-server.mdx +++ b/network/anchor-platform/admin-guide/sep24/setting-up-production-server.mdx @@ -11,7 +11,7 @@ Once the test server is live and you have tested both deposit and withdraw flows Make sure to keep the test server up, and deploy the production (mainnet) system in a separate environment. Having two deploys allows you to validate new features on the testnet before moving them to the final production deploy. You can also have a third staging environment if there's a big team working on this codebase and/or there will be many pushes to be tested internally before sharing with other institutions. -To switch to Stellar's public (mainnet) network, all you have to do is change the network [passphrase](../../../encyclopedia/network-passphrases.mdx) (for authenticating requests) and [Horizon URL](https://horizon.stellar.org/). +To switch to Stellar's public (mainnet) network, all you have to do is change the network [passphrase](../../../../docs/encyclopedia/network-passphrases) (for authenticating requests) and [Horizon URL](https://horizon.stellar.org/). You can copy your existing development configs to create a production configuration. @@ -46,7 +46,7 @@ How you handle KYC is up to you: there are many services that provide KYC soluti Some countries require different KYC fields depending on the amount to be deposited or withdrawn. If that's the case in your jurisdiction and you need to adapt your KYC forms based on the deposit or withdrawal amount, simply add an amount field before the KYC form, and make sure that the KYC fields are updated based on that value. -KYC information should be linked to the session created through [Stellar Web Authentication](../sep10/configuration.mdx) and, consequently, to the user, so you only need to ask the user for it once. After the first KYC flow is complete, a user shouldn't have to input the information again. +KYC information should be linked to the session created through [Stellar Web Authentication](../sep10/README.mdx) and, consequently, to the user, so you only need to ask the user for it once. After the first KYC flow is complete, a user shouldn't have to input the information again. Make sure the errors and validation messages are clear and include instructions for what to do next to ensure a good user experience and increase the KYC conversion rate. You should also localize messages based on the user's language and location. @@ -56,7 +56,7 @@ Pre-filling the KYC form is a great way to reduce the friction of getting starte All fields from [SEP-9](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0009.md) can be sent by wallets in the previously mentioned endpoints, but the most common are: email, first name, last name and phone number. Also, you should still enable the pre-filled fields to be editable, since the user might have inputted a different name in the Wallet's sign-up process, and could want to edit it before finalizing the Anchor's KYC process. -All SEP-9 data that was sent from the wallet is a part of the [Interactive JWT](./faq#how-to-use-interactive-jwts), send by the Anchor Platform +All SEP-9 data that was sent from the wallet is a part of the [Interactive JWT](./faq.mdx#how-to-use-interactive-jwts), send by the Anchor Platform ## Connecting to Real Banking Rails diff --git a/network/anchor-platform/admin-guide/sep31/README.mdx b/network/anchor-platform/admin-guide/sep31/README.mdx new file mode 100644 index 000000000..22f975e8b --- /dev/null +++ b/network/anchor-platform/admin-guide/sep31/README.mdx @@ -0,0 +1,11 @@ +--- +title: Cross-Border Payments +sidebar_position: 70 +--- + +import DocCardList from "@theme/DocCardList"; + +SEP-31 allows for a means by which wallets and/or exchanges interact with +Stellar's existing set of send-side services. + + diff --git a/docs/anchoring-assets/anchor-platform/sep31/configuration.mdx b/network/anchor-platform/admin-guide/sep31/configuration.mdx similarity index 99% rename from docs/anchoring-assets/anchor-platform/sep31/configuration.mdx rename to network/anchor-platform/admin-guide/sep31/configuration.mdx index 17c59458c..a4e2754b4 100644 --- a/docs/anchoring-assets/anchor-platform/sep31/configuration.mdx +++ b/network/anchor-platform/admin-guide/sep31/configuration.mdx @@ -371,7 +371,7 @@ SECRET_CALLBACK_API_AUTH_SECRET= We'll define the server that implements the endpoints defined in the Callback API in the following section. [sep31-get-info]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0031.md#get-info -[sep1-ap]: /docs/category/stellar-info-file +[sep1-ap]: ../sep1/README.mdx [sep38]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0038.md [sep38-post-quote]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0038.md#post-quote -[platform-api-kyc]: /api/anchor-platform/callbacks/customer +[platform-api-kyc]: ../../callbacks/customer/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep31/index.mdx b/network/anchor-platform/admin-guide/sep31/getting-started.mdx similarity index 85% rename from docs/anchoring-assets/anchor-platform/sep31/index.mdx rename to network/anchor-platform/admin-guide/sep31/getting-started.mdx index 15eb6b9b9..d6b239c2d 100644 --- a/docs/anchoring-assets/anchor-platform/sep31/index.mdx +++ b/network/anchor-platform/admin-guide/sep31/getting-started.mdx @@ -16,6 +16,6 @@ As we improve the documentation, parts of this guide that are relevant to other Before continuing with this section, make sure that you have already [installed][installation-ap] the Anchor Platform and configured the necessary features required by SEP-31: [SEP-1 (Stellar Info File)][sep1-ap] and [SEP-10 (Stellar Authentication)][sep10-ap]. [sep-31]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0031.md -[installation-ap]: /docs/anchoring-assets/anchor-platform/getting_started -[sep1-ap]: /docs/category/stellar-info-file -[sep10-ap]: /docs/category/stellar-authentication +[installation-ap]: ../../admin-guide/getting-started.mdx +[sep1-ap]: ../sep1/README.mdx +[sep10-ap]: ../sep10/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep31/integration.mdx b/network/anchor-platform/admin-guide/sep31/integration.mdx similarity index 95% rename from docs/anchoring-assets/anchor-platform/sep31/integration.mdx rename to network/anchor-platform/admin-guide/sep31/integration.mdx index 4e055417c..e01bf9f31 100644 --- a/docs/anchoring-assets/anchor-platform/sep31/integration.mdx +++ b/network/anchor-platform/admin-guide/sep31/integration.mdx @@ -673,22 +673,22 @@ This endpoint may be removed during future major version updates of the Anchor P ::: -[ap-api]: /api/anchor-platform -[ap-sep10]: /docs/category/stellar-authentication +[ap-api]: ../../README.mdx +[ap-sep10]: ../sep10/README.mdx [sep12]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0012.md [demo-wallet]: https://demo-wallet.stellar.org [indicative]: https://www.investopedia.com/terms/i/indicativequote.asp [firm]: https://www.investopedia.com/terms/f/firmquote.asp -[get-unique-address]: /api/anchor-platform/callbacks/gen-address -[get-customer]: /api/anchor-platform/callbacks/get-customer -[put-customer]: /api/anchor-platform/callbacks/put-customer -[get-rate]: /api/anchor-platform/callbacks/get-rates -[get-fee]: /api/anchor-platform/callbacks/get-fee -[get-unique-address]: /api/anchor-platform/callbacks/gen-address -[put-customer-callback]: /api/anchor-platform/callbacks/put-customer-callback -[delete-customer]: /api/anchor-platform/callbacks/del-customer -[json-rpc-methods]: /api/anchor-platform/rpc/methods -[sep24-integration-make-json-rpc-request]: /docs/anchoring-assets/anchor-platform/sep24/integration#making-json-rpc-requests -[sep24-integration-rpc-request]: /docs/anchoring-assets/anchor-platform/sep24/integration#json-rpc-request -[sep24-integration-rpc-response]: /docs/anchoring-assets/anchor-platform/sep24/integration#json-rpc-response -[sep24-integration-error-codes]: /docs/anchoring-assets/anchor-platform/sep24/integration#error-codes +[get-unique-address]: ../../callbacks/gen-address +[get-customer]: ../../callbacks/get-customer +[put-customer]: ../../callbacks/put-customer +[get-rate]: ../../callbacks/get-rates +[get-fee]: ../../callbacks/get-fee +[get-unique-address]: ../../callbacks/gen-address +[put-customer-callback]: ../../callbacks/put-customer-callback +[delete-customer]: ../../callbacks/del-customer +[json-rpc-methods]: ../../rpc/methods/README.mdx +[sep24-integration-make-json-rpc-request]: ../sep24/integration.mdx#making-json-rpc-requests +[sep24-integration-rpc-request]: ../sep24/integration.mdx#json-rpc-request +[sep24-integration-rpc-response]: ../sep24/integration.mdx#json-rpc-response +[sep24-integration-error-codes]: ../sep24/integration.mdx#error-codes diff --git a/network/anchor-platform/admin-guide/sep6/README.mdx b/network/anchor-platform/admin-guide/sep6/README.mdx new file mode 100644 index 000000000..ad44f734d --- /dev/null +++ b/network/anchor-platform/admin-guide/sep6/README.mdx @@ -0,0 +1,12 @@ +--- +title: Programmatic Deposits and Withdrawals +sidebar_position: 65 +--- + +import DocCardList from "@theme/DocCardList"; + +SEP-6 allows for a means by which wallets and/or exchanges interact with an +anchor on behalf of users, never requiring the user to directly interact with +the on & off-ramp. + + diff --git a/docs/anchoring-assets/anchor-platform/sep6/configuration.mdx b/network/anchor-platform/admin-guide/sep6/configuration.mdx similarity index 98% rename from docs/anchoring-assets/anchor-platform/sep6/configuration.mdx rename to network/anchor-platform/admin-guide/sep6/configuration.mdx index fabcfb5c7..01b2f8426 100644 --- a/docs/anchoring-assets/anchor-platform/sep6/configuration.mdx +++ b/network/anchor-platform/admin-guide/sep6/configuration.mdx @@ -122,5 +122,5 @@ Initiate a deposit transaction by doing the following: The demo wallet should be able to find your `stellar.toml` file, authenticate using the Stellar keypair you just created, and initiate a transaction. [sep-6]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0006.md -[sep1-ap]: /docs/category/stellar-info-file +[sep1-ap]: ../sep1/README.mdx [stellar-demo-wallet]: https://demo-wallet.stellar.org/ diff --git a/docs/anchoring-assets/anchor-platform/sep6/index.mdx b/network/anchor-platform/admin-guide/sep6/getting-started.mdx similarity index 93% rename from docs/anchoring-assets/anchor-platform/sep6/index.mdx rename to network/anchor-platform/admin-guide/sep6/getting-started.mdx index ac8c10409..3a1d875e9 100644 --- a/docs/anchoring-assets/anchor-platform/sep6/index.mdx +++ b/network/anchor-platform/admin-guide/sep6/getting-started.mdx @@ -28,6 +28,6 @@ The customer can then use the digital asset on the Stellar network for remittanc 5. Once the anchor receives the payment, the customer receives the withdrawn funds via any method supported by the anchor (such as bank transfer) [sep-6]: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0006.md -[installation-ap]: /docs/anchoring-assets/anchor-platform/getting_started -[sep1-ap]: /docs/category/stellar-info-file -[sep10-ap]: /docs/category/stellar-authentication +[installation-ap]: ../../admin-guide/getting-started.mdx +[sep1-ap]: ../sep1/README.mdx +[sep10-ap]: ../sep10/README.mdx diff --git a/docs/anchoring-assets/anchor-platform/sep6/integration.mdx b/network/anchor-platform/admin-guide/sep6/integration.mdx similarity index 99% rename from docs/anchoring-assets/anchor-platform/sep6/integration.mdx rename to network/anchor-platform/admin-guide/sep6/integration.mdx index 5ee5e5331..1c928b6f5 100644 --- a/docs/anchoring-assets/anchor-platform/sep6/integration.mdx +++ b/network/anchor-platform/admin-guide/sep6/integration.mdx @@ -323,7 +323,7 @@ After this JSON-RPC request, the transaction will be transferred to the `complet ### Sending Payment Via Custody Service -The Anchor Platform provides a possibility to send a payment via custody services, such as [Fireblocks][fireblocks]. To make a payment via a custody service, make the following JSON-RPC request. +The Anchor Platform provides a possibility to send a payment via custody services, such as [Fireblocks](../custody-services/fireblocks/README.mdx). To make a payment via a custody service, make the following JSON-RPC request. @@ -979,4 +979,4 @@ Works in the same manner as for the deposit flow. For more details, see [Transac -[get-transactions]: /api/anchor-platform/resources/get-transactions +[get-transactions]: ../../resources/get-transaction diff --git a/api/anchor-platform/callbacks/index.mdx b/network/anchor-platform/callbacks/README.mdx similarity index 61% rename from api/anchor-platform/callbacks/index.mdx rename to network/anchor-platform/callbacks/README.mdx index 872ca68fa..8cd63ad79 100644 --- a/api/anchor-platform/callbacks/index.mdx +++ b/network/anchor-platform/callbacks/README.mdx @@ -1,6 +1,6 @@ --- title: Callbacks -sidebar_position: 20 +sidebar_position: 40 --- import {MethodTable} from "@site/src/components/MethodTable"; @@ -11,9 +11,9 @@ The Anchor Platform provides several callback functionalities for your business | | | | --------------------------------------------------- | --- | -| [Customer](./customer/index.mdx) | | -| [Fee](./fee/index.mdx) | | -| [Rate](./rate/index.mdx) | | -| [Unique address generation](./unique-address/index.mdx) | | +| [Customer](./customer/README.mdx) | | +| [Fee](./fee/README.mdx) | | +| [Rate](./rate/README.mdx) | | +| [Unique address generation](./unique-address/README.mdx) | | diff --git a/api/anchor-platform/callbacks/customer/index.mdx b/network/anchor-platform/callbacks/customer/README.mdx similarity index 100% rename from api/anchor-platform/callbacks/customer/index.mdx rename to network/anchor-platform/callbacks/customer/README.mdx diff --git a/api/anchor-platform/callbacks/del-customer.api.mdx b/network/anchor-platform/callbacks/del-customer.api.mdx similarity index 100% rename from api/anchor-platform/callbacks/del-customer.api.mdx rename to network/anchor-platform/callbacks/del-customer.api.mdx diff --git a/api/anchor-platform/callbacks/event/index.mdx b/network/anchor-platform/callbacks/event/README.mdx similarity index 100% rename from api/anchor-platform/callbacks/event/index.mdx rename to network/anchor-platform/callbacks/event/README.mdx diff --git a/api/anchor-platform/callbacks/fee/index.mdx b/network/anchor-platform/callbacks/fee/README.mdx similarity index 100% rename from api/anchor-platform/callbacks/fee/index.mdx rename to network/anchor-platform/callbacks/fee/README.mdx diff --git a/api/anchor-platform/callbacks/gen-address.api.mdx b/network/anchor-platform/callbacks/gen-address.api.mdx similarity index 66% rename from api/anchor-platform/callbacks/gen-address.api.mdx rename to network/anchor-platform/callbacks/gen-address.api.mdx index c33775bef..ead939f82 100644 --- a/api/anchor-platform/callbacks/gen-address.api.mdx +++ b/network/anchor-platform/callbacks/gen-address.api.mdx @@ -5,7 +5,7 @@ description: "If the platform is configured with `depositInfoGeneratorType: api` sidebar_label: "Generate Unique Address" hide_title: true hide_table_of_contents: true -api: {"description":"If the platform is configured with `depositInfoGeneratorType: api`, the Platform make this request to\nthe Anchor backend every time a transaction is initiated by a client application.\n\nThe Anchor must guarantee that the memo returned in this request is unique, so it can be mapped 1-to-1 to a Platform\nresource such as a [SEP-31](https://stellar.org/protocol/sep-31) transaction.\n\nHere is how this flow would be used for Receiving Anchors that need to create their unique `(account, memo)` pairs\noutside the platform, using Circle:\n\n[![](https://mermaid.ink/img/pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)](https://mermaid.live/edit#pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)\n","operationId":"genAddress","tags":["Unique Address","SEP-31"],"parameters":[{"in":"query","name":"transaction_id","description":"The platform server will save the posted transaction and pass the `transaction_id` through this endpoint.\nIf the anchor wishes to return transaction-dependent unique_address, the anchor may query the [`GET /transactions` endpoint of the Platform API](/api/anchor-platform/resources/get-transaction).\n","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"unique_address":{"description":"An object containing the unique `stellar_address:memo` pair used to identify a destination.","type":"object","properties":{"stellar_address":{"description":"A `G...` stellar address or a `M...` [muxed stellar address](https://developers.stellar.org/docs/glossary/muxed-accounts/) of an **existing** account in the Stellar network.","type":"string"},"memo":{"description":"The memo to attach to the Stellar payment.","type":"string"},"memo_type":{"description":"The type of memo to attach to the Stellar payment (text, hash, or id).","type":"string","enum":["text","hash","id"]}},"required":["stellar_address"]}}}}}},"500":{"description":"Error. The Platform will respond to the client application with the same response code and body.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"id":{"type":"string"}},"required":["error"],"title":"Error"}}}}},"method":"get","path":"/unique_address","info":{"version":"2.0.0","description":"The Synchronous Callbacks API specification for the Stellar Anchor Platform project.\n\nThe Synchronous Callbacks API defines requests made by the Platform while it is processing a request from a client application. The\nanchor's responses to these requests affect the Platform responses to the client application.\n","title":"Synchronous Callbacks API"},"postman":{"name":"Generate Unique Address","description":{"content":"If the platform is configured with `depositInfoGeneratorType: api`, the Platform make this request to\nthe Anchor backend every time a transaction is initiated by a client application.\n\nThe Anchor must guarantee that the memo returned in this request is unique, so it can be mapped 1-to-1 to a Platform\nresource such as a [SEP-31](https://stellar.org/protocol/sep-31) transaction.\n\nHere is how this flow would be used for Receiving Anchors that need to create their unique `(account, memo)` pairs\noutside the platform, using Circle:\n\n[![](https://mermaid.ink/img/pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)](https://mermaid.live/edit#pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)\n","type":"text/plain"},"url":{"path":["unique_address"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"description":{"content":"(Required) The platform server will save the posted transaction and pass the `transaction_id` through this endpoint.\nIf the anchor wishes to return transaction-dependent unique_address, the anchor may query the [`GET /transactions` endpoint of the Platform API](/api/anchor-platform/resources/get-transaction).\n","type":"text/plain"},"key":"transaction_id","value":""}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"}} +api: {"description":"If the platform is configured with `depositInfoGeneratorType: api`, the Platform make this request to\nthe Anchor backend every time a transaction is initiated by a client application.\n\nThe Anchor must guarantee that the memo returned in this request is unique, so it can be mapped 1-to-1 to a Platform\nresource such as a [SEP-31](https://stellar.org/protocol/sep-31) transaction.\n\nHere is how this flow would be used for Receiving Anchors that need to create their unique `(account, memo)` pairs\noutside the platform, using Circle:\n\n[![](https://mermaid.ink/img/pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)](https://mermaid.live/edit#pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)\n","operationId":"genAddress","tags":["Unique Address","SEP-31"],"parameters":[{"in":"query","name":"transaction_id","description":"The platform server will save the posted transaction and pass the `transaction_id` through this endpoint.\nIf the anchor wishes to return transaction-dependent unique_address, the anchor may query the [`GET /transactions` endpoint of the Platform API](/network/anchor-platform/resources/get-transaction).\n","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"unique_address":{"description":"An object containing the unique `stellar_address:memo` pair used to identify a destination.","type":"object","properties":{"stellar_address":{"description":"A `G...` stellar address or a `M...` [muxed stellar address](https://developers.stellar.org/docs/glossary/muxed-accounts/) of an **existing** account in the Stellar network.","type":"string"},"memo":{"description":"The memo to attach to the Stellar payment.","type":"string"},"memo_type":{"description":"The type of memo to attach to the Stellar payment (text, hash, or id).","type":"string","enum":["text","hash","id"]}},"required":["stellar_address"]}}}}}},"500":{"description":"Error. The Platform will respond to the client application with the same response code and body.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"id":{"type":"string"}},"required":["error"],"title":"Error"}}}}},"method":"get","path":"/unique_address","info":{"version":"2.0.0","description":"The Synchronous Callbacks API specification for the Stellar Anchor Platform project.\n\nThe Synchronous Callbacks API defines requests made by the Platform while it is processing a request from a client application. The\nanchor's responses to these requests affect the Platform responses to the client application.\n","title":"Synchronous Callbacks API"},"postman":{"name":"Generate Unique Address","description":{"content":"If the platform is configured with `depositInfoGeneratorType: api`, the Platform make this request to\nthe Anchor backend every time a transaction is initiated by a client application.\n\nThe Anchor must guarantee that the memo returned in this request is unique, so it can be mapped 1-to-1 to a Platform\nresource such as a [SEP-31](https://stellar.org/protocol/sep-31) transaction.\n\nHere is how this flow would be used for Receiving Anchors that need to create their unique `(account, memo)` pairs\noutside the platform, using Circle:\n\n[![](https://mermaid.ink/img/pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)](https://mermaid.live/edit#pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)\n","type":"text/plain"},"url":{"path":["unique_address"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"description":{"content":"(Required) The platform server will save the posted transaction and pass the `transaction_id` through this endpoint.\nIf the anchor wishes to return transaction-dependent unique_address, the anchor may query the [`GET /transactions` endpoint of the Platform API](/network/anchor-platform/resources/get-transaction).\n","type":"text/plain"},"key":"transaction_id","value":""}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"}} sidebar_class_name: "get api-method" info_path: api/anchor-platform/callbacks/synchronous-callbacks-api custom_edit_url: null @@ -40,7 +40,7 @@ outside the platform, using Circle: [![](https://mermaid.ink/img/pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1)](https://mermaid.live/edit#pako:eNqlVctu2zAQ_JUFTy1iOwhyE9AUhuu0ORQ1YvdmIKDJVUSYIlWSihEY_veuRMuPhHaTVCc9VjPD4exyzYSVyDLm8U-NRuA3xR8dL-cG6AoqaMxgOp70r69g5rjxXARlDdxqu4KVCgXM2VpwrRdcLIeTu81lbRQhPXApHXo_ZxGp4i4ooSpuAkwDas1d4gMaqcwjDI0obOL7p3sUqJ6o5DNMNA-5deX5qlNII-WExvj-mLV_c3OR4slg8ms6g7XH6vpqcxn2XvgIYyuCJSPgnB2w4B4lkIGhQKi22CCsydVj7XiDF-GaK6WD9KXlTfkTwoGsf8JcvDYqg-_j2dkFfD1geFDyS5plb2U0mnDRIC0PgcNCW7EUBVcGtqCDPUqs79Ov_ZS8ewy1Mx4MriAKo_z5mKdOYlZiaeeM9lu5wVl9L1n2Zn6Qh5IUb5KWn9y6W2WUL5DSUSvdZrFJx7brDgyPDdd8e4emU1L6x7nfrznNPTjRLNtmzuAnX2LX2sT_XKIJ3U_xbf9Mb3WdIDGgCJ5i8gIKCl5VFCIJte8c-l8Xjvej82GnxdNaGyUHc2_81EjZbcPhRLwzuU2Q7YxKUjkrEIlkh0jyA9i8vc9pxvZaFd2COy-CbR93iDDSam93uhNPGD-cjX7AuptEbcenE1dJal-ZSqUPPNR-8JHk_25RW4KTiG-dz-3oSozny0zJxjFRoFi2VBG-s_l1yN_ZMq_kK9P80Q7zAeuxEulBSTpk1w3-nFF9iXOW0a3EnNc6NMfkhkqjy2OpgnUsy7n22GO8Dnb6bATLgquxK9oe1NuqzV8v2LI1) -
Query Parameters
+
Query Parameters
Success. diff --git a/api/anchor-platform/callbacks/get-customer.api.mdx b/network/anchor-platform/callbacks/get-customer.api.mdx similarity index 100% rename from api/anchor-platform/callbacks/get-customer.api.mdx rename to network/anchor-platform/callbacks/get-customer.api.mdx diff --git a/api/anchor-platform/callbacks/get-fee.api.mdx b/network/anchor-platform/callbacks/get-fee.api.mdx similarity index 100% rename from api/anchor-platform/callbacks/get-fee.api.mdx rename to network/anchor-platform/callbacks/get-fee.api.mdx diff --git a/api/anchor-platform/callbacks/get-rates.api.mdx b/network/anchor-platform/callbacks/get-rates.api.mdx similarity index 100% rename from api/anchor-platform/callbacks/get-rates.api.mdx rename to network/anchor-platform/callbacks/get-rates.api.mdx diff --git a/api/anchor-platform/callbacks/post-event.api.mdx b/network/anchor-platform/callbacks/post-event.api.mdx similarity index 100% rename from api/anchor-platform/callbacks/post-event.api.mdx rename to network/anchor-platform/callbacks/post-event.api.mdx diff --git a/api/anchor-platform/callbacks/put-customer.api.mdx b/network/anchor-platform/callbacks/put-customer.api.mdx similarity index 100% rename from api/anchor-platform/callbacks/put-customer.api.mdx rename to network/anchor-platform/callbacks/put-customer.api.mdx diff --git a/api/anchor-platform/callbacks/rate/index.mdx b/network/anchor-platform/callbacks/rate/README.mdx similarity index 100% rename from api/anchor-platform/callbacks/rate/index.mdx rename to network/anchor-platform/callbacks/rate/README.mdx diff --git a/api/anchor-platform/callbacks/sidebar.js b/network/anchor-platform/callbacks/sidebar.js similarity index 100% rename from api/anchor-platform/callbacks/sidebar.js rename to network/anchor-platform/callbacks/sidebar.js diff --git a/api/anchor-platform/callbacks/unique-address/index.mdx b/network/anchor-platform/callbacks/unique-address/README.mdx similarity index 100% rename from api/anchor-platform/callbacks/unique-address/index.mdx rename to network/anchor-platform/callbacks/unique-address/README.mdx diff --git a/api/anchor-platform/custody-server/index.mdx b/network/anchor-platform/custody-server/README.mdx similarity index 59% rename from api/anchor-platform/custody-server/index.mdx rename to network/anchor-platform/custody-server/README.mdx index 808b91d5d..fb139d433 100644 --- a/api/anchor-platform/custody-server/index.mdx +++ b/network/anchor-platform/custody-server/README.mdx @@ -1,6 +1,6 @@ --- title: Custody Server -sidebar_position: 20 +sidebar_position: 50 --- import {MethodTable} from "@site/src/components/MethodTable"; @@ -11,9 +11,9 @@ The Custody Server provides a set of endpoints to interact with custody services | | | | --------------------------------------------------- | --- | -| [Custody Transaction](./custody-transactions/index.mdx) | | -| [Payment](./payments/index.mdx) | | -| [Refund](./refunds/index.mdx) | | -| [Unique address generation](./unique-address/index.mdx) | | +| [Custody Transaction](./custody-transactions/README.mdx) | | +| [Payment](./payments/README.mdx) | | +| [Refund](./refunds/README.mdx) | | +| [Unique address generation](./unique-address/README.mdx) | | diff --git a/api/anchor-platform/custody-server/create-custody-transaction.api.mdx b/network/anchor-platform/custody-server/create-custody-transaction.api.mdx similarity index 100% rename from api/anchor-platform/custody-server/create-custody-transaction.api.mdx rename to network/anchor-platform/custody-server/create-custody-transaction.api.mdx diff --git a/api/anchor-platform/custody-server/custody-transactions/index.mdx b/network/anchor-platform/custody-server/custody-transactions/README.mdx similarity index 100% rename from api/anchor-platform/custody-server/custody-transactions/index.mdx rename to network/anchor-platform/custody-server/custody-transactions/README.mdx diff --git a/api/anchor-platform/custody-server/generate-unique-address.api.mdx b/network/anchor-platform/custody-server/generate-unique-address.api.mdx similarity index 100% rename from api/anchor-platform/custody-server/generate-unique-address.api.mdx rename to network/anchor-platform/custody-server/generate-unique-address.api.mdx diff --git a/api/anchor-platform/custody-server/payments/index.mdx b/network/anchor-platform/custody-server/payments/README.mdx similarity index 100% rename from api/anchor-platform/custody-server/payments/index.mdx rename to network/anchor-platform/custody-server/payments/README.mdx diff --git a/api/anchor-platform/custody-server/refunds/index.mdx b/network/anchor-platform/custody-server/refunds/README.mdx similarity index 100% rename from api/anchor-platform/custody-server/refunds/index.mdx rename to network/anchor-platform/custody-server/refunds/README.mdx diff --git a/api/anchor-platform/custody-server/send-payment.api.mdx b/network/anchor-platform/custody-server/send-payment.api.mdx similarity index 100% rename from api/anchor-platform/custody-server/send-payment.api.mdx rename to network/anchor-platform/custody-server/send-payment.api.mdx diff --git a/api/anchor-platform/custody-server/send-refund.api.mdx b/network/anchor-platform/custody-server/send-refund.api.mdx similarity index 100% rename from api/anchor-platform/custody-server/send-refund.api.mdx rename to network/anchor-platform/custody-server/send-refund.api.mdx diff --git a/api/anchor-platform/custody-server/sidebar.js b/network/anchor-platform/custody-server/sidebar.js similarity index 100% rename from api/anchor-platform/custody-server/sidebar.js rename to network/anchor-platform/custody-server/sidebar.js diff --git a/api/anchor-platform/custody-server/unique-address/index.mdx b/network/anchor-platform/custody-server/unique-address/README.mdx similarity index 100% rename from api/anchor-platform/custody-server/unique-address/index.mdx rename to network/anchor-platform/custody-server/unique-address/README.mdx diff --git a/api/anchor-platform/resources/index.mdx b/network/anchor-platform/resources/README.mdx similarity index 82% rename from api/anchor-platform/resources/index.mdx rename to network/anchor-platform/resources/README.mdx index 16b337d96..f2ccc6eaf 100644 --- a/api/anchor-platform/resources/index.mdx +++ b/network/anchor-platform/resources/README.mdx @@ -1,6 +1,6 @@ --- title: Resources -sidebar_position: 20 +sidebar_position: 30 --- import {MethodTable} from "@site/src/components/MethodTable"; @@ -11,6 +11,6 @@ Data on the Anchor Platform is organized according to resources. Each resource h | | | | --------------------------------------------------- | --- | -| [Transactions](./transactions/index.mdx) | | +| [Transactions](./transactions/README.mdx) | | diff --git a/api/anchor-platform/resources/get-transaction.api.mdx b/network/anchor-platform/resources/get-transaction.api.mdx similarity index 100% rename from api/anchor-platform/resources/get-transaction.api.mdx rename to network/anchor-platform/resources/get-transaction.api.mdx diff --git a/api/anchor-platform/resources/get-transactions.api.mdx b/network/anchor-platform/resources/get-transactions.api.mdx similarity index 100% rename from api/anchor-platform/resources/get-transactions.api.mdx rename to network/anchor-platform/resources/get-transactions.api.mdx diff --git a/api/anchor-platform/resources/sidebar.js b/network/anchor-platform/resources/sidebar.js similarity index 100% rename from api/anchor-platform/resources/sidebar.js rename to network/anchor-platform/resources/sidebar.js diff --git a/api/anchor-platform/resources/transactions/index.mdx b/network/anchor-platform/resources/transactions/README.mdx similarity index 95% rename from api/anchor-platform/resources/transactions/index.mdx rename to network/anchor-platform/resources/transactions/README.mdx index 9bdffd61a..086e6e865 100644 --- a/api/anchor-platform/resources/transactions/index.mdx +++ b/network/anchor-platform/resources/transactions/README.mdx @@ -1,13 +1,12 @@ --- title: Transactions -order: 0 --- import {EndpointsTable} from "@site/src/components/EndpointsTable"; Transactions are representations of a SEP transaction. It holds information about the protocol being used, and all necessary information passed by an external party (such as wallet or an anchor). -Should not be confused with stellar [transactions](/docs/glossary/#transaction). +Should not be confused with stellar [transactions](/docs/glossary#transaction). diff --git a/network/anchor-platform/rpc/README.mdx b/network/anchor-platform/rpc/README.mdx new file mode 100644 index 000000000..0fef3870b --- /dev/null +++ b/network/anchor-platform/rpc/README.mdx @@ -0,0 +1,11 @@ +--- +title: JSON-RPC API +sidebar_position: 60 +--- + +import DocCardList from "@theme/DocCardList"; + +Interact with your Anchor Platform instance through the use of lightweight, +easy-to-use RPC requests. + + diff --git a/api/anchor-platform/rpc/methods/index.mdx b/network/anchor-platform/rpc/methods/README.mdx similarity index 51% rename from api/anchor-platform/rpc/methods/index.mdx rename to network/anchor-platform/rpc/methods/README.mdx index 88c27d149..4b46abd2b 100644 --- a/api/anchor-platform/rpc/methods/index.mdx +++ b/network/anchor-platform/rpc/methods/README.mdx @@ -1,6 +1,7 @@ --- title: JSON-RPC Methods order: 20 +sidebar_label: Methods --- import {EndpointsTable} from "@site/src/components/EndpointsTable"; @@ -15,26 +16,27 @@ Postman collection is available [here](https://documenter.getpostman.com/view/92 | | | | --- | --------------------- | -| | [notify_interactive_flow_completed](notify_interactive_flow_completed/index.mdx) | -| | [request_offchain_funds](request_offchain_funds/index.mdx) | -| | [request_onchain_funds](request_onchain_funds/index.mdx) | -| | [notify_offchain_funds_received](notify_offchain_funds_received/index.mdx) | -| | [notify_onchain_funds_received](notify_onchain_funds_received/index.mdx) | -| | [notify_amounts_updated](notify_amounts_updated/index.mdx) | -| | [notify_refund_pending](notify_refund_pending/index.mdx) | -| | [notify_refund_sent](notify_refund_sent/index.mdx) | -| | [do_stellar_payment](do_stellar_payment/index.mdx) | -| | [do_stellar_refund](do_stellar_refund/index.mdx) | -| | [notify_onchain_funds_sent](notify_onchain_funds_sent/index.mdx) | -| | [notify_offchain_funds_sent](notify_offchain_funds_sent/index.mdx) | -| | [notify_offchain_funds_available](notify_offchain_funds_available/index.mdx) | -| | [notify_offchain_funds_pending](notify_offchain_funds_pending/index.mdx) | -| | [request_trust](request_trust/index.mdx) | -| | [notify_trust_set](notify_trust_set/index.mdx) | -| | [request_customer_info_update](request_customer_info_update/index.mdx) | -| | [notify_customer_info_updated](notify_customer_info_updated/index.mdx) | -| | [notify_transaction_error](notify_transaction_error/index.mdx) | -| | [notify_transaction_expired](notify_transaction_expired/index.mdx) | -| | [notify_transaction_recovery](notify_transaction_recovery/index.mdx) | +| | [notify_interactive_flow_completed](notify_interactive_flow_completed/README.mdx) | +| | [request_offchain_funds](request_offchain_funds/README.mdx) | +| | [request_onchain_funds](request_onchain_funds/README.mdx) | +| | [notify_offchain_funds_received](notify_offchain_funds_received/README.mdx) | +| | [notify_onchain_funds_received](notify_onchain_funds_received/README.mdx) | +| | [notify_amounts_updated](notify_amounts_updated/README.mdx) | +| | [notify_refund_pending](notify_refund_pending/README.mdx) | +| | [notify_refund_sent](notify_refund_sent/README.mdx) | +| | [do_stellar_payment](do_stellar_payment/README.mdx) | +| | [do_stellar_refund](do_stellar_refund/README.mdx) | +| | [notify_onchain_funds_sent](notify_onchain_funds_sent/README.mdx) | +| | [notify_offchain_funds_sent](notify_offchain_funds_sent/README.mdx) | +| | [notify_offchain_funds_available](notify_offchain_funds_available/README.mdx) | +| | [notify_offchain_funds_pending](notify_offchain_funds_pending/README.mdx) | +| | [request_trust](request_trust/README.mdx) | +| | [notify_trust_set](notify_trust_set/README.mdx) | +| | [request_customer_info_update](request_customer_info_update/README.mdx) | +| | [notify_customer_info_updated](notify_customer_info_updated/README.mdx) | +| | [notify_transaction_error](notify_transaction_error/README.mdx) | +| | [notify_transaction_expired](notify_transaction_expired/README.mdx) | +| | [notify_transaction_recovery](notify_transaction_recovery/README.mdx) | + diff --git a/api/anchor-platform/rpc/methods/do_stellar_payment/index.mdx b/network/anchor-platform/rpc/methods/do_stellar_payment/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/do_stellar_payment/index.mdx rename to network/anchor-platform/rpc/methods/do_stellar_payment/README.mdx diff --git a/api/anchor-platform/rpc/methods/do_stellar_refund/index.mdx b/network/anchor-platform/rpc/methods/do_stellar_refund/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/do_stellar_refund/index.mdx rename to network/anchor-platform/rpc/methods/do_stellar_refund/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_amounts_updated/index.mdx b/network/anchor-platform/rpc/methods/notify_amounts_updated/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_amounts_updated/index.mdx rename to network/anchor-platform/rpc/methods/notify_amounts_updated/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_customer_info_updated/index.mdx b/network/anchor-platform/rpc/methods/notify_customer_info_updated/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_customer_info_updated/index.mdx rename to network/anchor-platform/rpc/methods/notify_customer_info_updated/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_interactive_flow_completed/index.mdx b/network/anchor-platform/rpc/methods/notify_interactive_flow_completed/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_interactive_flow_completed/index.mdx rename to network/anchor-platform/rpc/methods/notify_interactive_flow_completed/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_offchain_funds_available/index.mdx b/network/anchor-platform/rpc/methods/notify_offchain_funds_available/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_offchain_funds_available/index.mdx rename to network/anchor-platform/rpc/methods/notify_offchain_funds_available/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_offchain_funds_pending/index.mdx b/network/anchor-platform/rpc/methods/notify_offchain_funds_pending/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_offchain_funds_pending/index.mdx rename to network/anchor-platform/rpc/methods/notify_offchain_funds_pending/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_offchain_funds_received/index.mdx b/network/anchor-platform/rpc/methods/notify_offchain_funds_received/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_offchain_funds_received/index.mdx rename to network/anchor-platform/rpc/methods/notify_offchain_funds_received/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_offchain_funds_sent/index.mdx b/network/anchor-platform/rpc/methods/notify_offchain_funds_sent/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_offchain_funds_sent/index.mdx rename to network/anchor-platform/rpc/methods/notify_offchain_funds_sent/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_onchain_funds_received/index.mdx b/network/anchor-platform/rpc/methods/notify_onchain_funds_received/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_onchain_funds_received/index.mdx rename to network/anchor-platform/rpc/methods/notify_onchain_funds_received/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_onchain_funds_sent/index.mdx b/network/anchor-platform/rpc/methods/notify_onchain_funds_sent/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_onchain_funds_sent/index.mdx rename to network/anchor-platform/rpc/methods/notify_onchain_funds_sent/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_refund_pending/index.mdx b/network/anchor-platform/rpc/methods/notify_refund_pending/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_refund_pending/index.mdx rename to network/anchor-platform/rpc/methods/notify_refund_pending/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_refund_sent/index.mdx b/network/anchor-platform/rpc/methods/notify_refund_sent/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_refund_sent/index.mdx rename to network/anchor-platform/rpc/methods/notify_refund_sent/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_transaction_error/index.mdx b/network/anchor-platform/rpc/methods/notify_transaction_error/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_transaction_error/index.mdx rename to network/anchor-platform/rpc/methods/notify_transaction_error/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_transaction_expired/index.mdx b/network/anchor-platform/rpc/methods/notify_transaction_expired/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_transaction_expired/index.mdx rename to network/anchor-platform/rpc/methods/notify_transaction_expired/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_transaction_recovery/index.mdx b/network/anchor-platform/rpc/methods/notify_transaction_recovery/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_transaction_recovery/index.mdx rename to network/anchor-platform/rpc/methods/notify_transaction_recovery/README.mdx diff --git a/api/anchor-platform/rpc/methods/notify_trust_set/index.mdx b/network/anchor-platform/rpc/methods/notify_trust_set/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/notify_trust_set/index.mdx rename to network/anchor-platform/rpc/methods/notify_trust_set/README.mdx diff --git a/api/anchor-platform/rpc/methods/request_customer_info_update/index.mdx b/network/anchor-platform/rpc/methods/request_customer_info_update/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/request_customer_info_update/index.mdx rename to network/anchor-platform/rpc/methods/request_customer_info_update/README.mdx diff --git a/api/anchor-platform/rpc/methods/request_offchain_funds/index.mdx b/network/anchor-platform/rpc/methods/request_offchain_funds/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/request_offchain_funds/index.mdx rename to network/anchor-platform/rpc/methods/request_offchain_funds/README.mdx diff --git a/api/anchor-platform/rpc/methods/request_onchain_funds/index.mdx b/network/anchor-platform/rpc/methods/request_onchain_funds/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/request_onchain_funds/index.mdx rename to network/anchor-platform/rpc/methods/request_onchain_funds/README.mdx diff --git a/api/anchor-platform/rpc/methods/request_trust/index.mdx b/network/anchor-platform/rpc/methods/request_trust/README.mdx similarity index 100% rename from api/anchor-platform/rpc/methods/request_trust/index.mdx rename to network/anchor-platform/rpc/methods/request_trust/README.mdx diff --git a/api/anchor-platform/rpc/notify_interactive_flow_completed.api.mdx b/network/anchor-platform/rpc/notify_interactive_flow_completed.api.mdx similarity index 100% rename from api/anchor-platform/rpc/notify_interactive_flow_completed.api.mdx rename to network/anchor-platform/rpc/notify_interactive_flow_completed.api.mdx diff --git a/api/anchor-platform/rpc/index.mdx b/network/anchor-platform/rpc/overview.mdx similarity index 91% rename from api/anchor-platform/rpc/index.mdx rename to network/anchor-platform/rpc/overview.mdx index 14303f917..7ccb3e5bf 100644 --- a/api/anchor-platform/rpc/index.mdx +++ b/network/anchor-platform/rpc/overview.mdx @@ -1,6 +1,6 @@ --- -title: JSON-RPC API -sidebar_position: 10 +title: Overview +sidebar_position: 60 --- JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. @@ -8,8 +8,11 @@ JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. It's simple and easy to use, as it uses a single HTTP endpoint and a JSON object that contains the method name and parameters. It is transport agnostic in that the concepts can be used within the same process, over sockets, over http, or in many various message passing environments. It uses [JSON](http://www.json.org/) ([RFC 4627](http://www.ietf.org/rfc/rfc4627.txt)) as data format. + :::note + All member names exchanged between the Client and the Server that are considered for matching of any kind should be considered to be case-sensitive. + ::: -You can read more about JSON-RPC protocol [here](https://www.jsonrpc.org/specification). \ No newline at end of file +You can read more about JSON-RPC protocol [here](https://www.jsonrpc.org/specification). diff --git a/api/anchor-platform/rpc/sidebar.js b/network/anchor-platform/rpc/sidebar.js similarity index 100% rename from api/anchor-platform/rpc/sidebar.js rename to network/anchor-platform/rpc/sidebar.js diff --git a/docs/run-core-node/index.mdx b/network/core-node/README.mdx similarity index 68% rename from docs/run-core-node/index.mdx rename to network/core-node/README.mdx index 196d0acbb..01493b8e3 100644 --- a/docs/run-core-node/index.mdx +++ b/network/core-node/README.mdx @@ -1,15 +1,15 @@ --- -title: "Overview" +title: Introduction sidebar_position: 10 --- import { Alert } from "@site/src/components/Alert"; -Stellar is a peer-to-peer network made up of nodes, which are computers that keep a common distributed [ledger](../fundamentals-and-concepts/stellar-data-structures/ledgers.mdx), and that communicate to validate and add [transactions](../fundamentals-and-concepts/stellar-data-structures/operations-and-transactions.mdx) to it. Nodes use a program called Stellar Core — an implementation of the [Stellar Consensus Protocol](../fundamentals-and-concepts/stellar-consensus-protocol.mdx) — to stay in sync as they work to agree on the validity of transaction sets and to apply them to the ledger. Generally, nodes reach consensus, apply a transaction set, and update the ledger every 3-5 seconds. +Stellar is a peer-to-peer network made up of nodes, which are computers that keep a common distributed [ledger](/docs/fundamentals-and-concepts/stellar-data-structures/ledgers), and that communicate to validate and add [transactions](/docs/fundamentals-and-concepts/stellar-data-structures/operations-and-transactions) to it. Nodes use a program called Stellar Core — an implementation of the [Stellar Consensus Protocol](/docs/fundamentals-and-concepts/stellar-consensus-protocol) — to stay in sync as they work to agree on the validity of transaction sets and to apply them to the ledger. Generally, nodes reach consensus, apply a transaction set, and update the ledger every 3-5 seconds. -You don’t need to run a node to build on Stellar: you can start developing with your [SDK of choice](../tools/sdks/library.mdx), and use public instances of Horizon to query the ledger and submit transactions right away. In fact, the Stellar Development Foundation offers two public instances of Horizon — one for the public network and one for the testnet — which you can read more about in our [API reference docs](https://developers.stellar.org/api). [Lobstr](https://horizon.stellar.lobstr.co), [Public Node](https://horizon.publicnode.org/), and [Coinqvest](https://horizon.stellar.coinqvest.com) also offer public Horizon instances. +You don’t need to run a node to build on Stellar: you can start developing with your [SDK of choice](/docs/tools/sdks/library), and use public instances of Horizon to query the ledger and submit transactions right away. In fact, the Stellar Development Foundation offers two public instances of Horizon — one for the public network and one for the testnet — which you can read more about in our [API reference docs](https://developers.stellar.org/api). [Lobstr](https://horizon.stellar.lobstr.co), [Public Node](https://horizon.publicnode.org/), and [Coinqvest](https://horizon.stellar.coinqvest.com) also offer public Horizon instances. -Even if you _do_ want to run your [own instance of Horizon](../run-platform-server/index.mdx), it bundles its own version of Core and manages its lifetime entirely, so there's no need to run a standalone instance. +Even if you _do_ want to run your [own instance of Horizon](../horizon/admin-guide/README.mdx), it bundles its own version of Core and manages its lifetime entirely, so there's no need to run a standalone instance. If you’re serious about building on Stellar, have a production-level product or service that requires high-availability access network, or want to help increase network health and decentralization, then you probably _do_ want to run a node, or even a trio of nodes (more on that in the [Tier 1 section](./tier-1-orgs.mdx)). At that point, you have a choice: you can pay a service provider like [Blockdaemon](https://app.blockdaemon.com/marketplace/categories/-/stellar-horizon) to set up and run your node for you, or you can do it yourself. @@ -27,12 +27,12 @@ The basic flow, which you can navigate through using the menu on the left, goes ## Types of nodes -All nodes perform the same basic functions: they run Stellar Core, connect to peers, submit transactions, store the state of the ledger in a SQL [database](./configuring.mdx#database), and keep a duplicate copy of the ledger in flat XDR files called [buckets](./configuring.mdx#buckets). +All nodes perform the same basic functions: they run Stellar Core, connect to peers, submit transactions, store the state of the ledger in a SQL [database](./admin-guide/configuring.mdx#database), and keep a duplicate copy of the ledger in flat XDR files called [buckets](./admin-guide/configuring.mdx#buckets). In addition to those basic functions, there are two key configuration options that determine how a node behaves. A node can: -- Participate in consensus to [validate transactions](./configuring.mdx#validating) -- Publish an [archive](./publishing-history-archives.mdx) that other nodes can consult to find the complete history of the network. +- Participate in consensus to [validate transactions](./admin-guide/configuring.mdx#validating) +- Publish an [archive](./admin-guide/publishing-history-archives.mdx) that other nodes can consult to find the complete history of the network. To make things easier, we’ll define three types of nodes based on permutations of those two options: **Basic Validator**, **Full Validator**, and **Archiver**. You’ll notice that they _all_ support Horizon and submit transactions to the network: @@ -56,7 +56,7 @@ So why choose one type over another? Let’s break it down a bit and take a look #### Validating, no public archive -A Basic Validator keeps track of the ledger and submits transactions for possible inclusion, but it is _not_ configured to publish history archives. It does require a secret key, and is [configured to participate in consensus](./configuring.mdx#validating) by voting on — and signing off on — changes to the ledger, meaning it supports the network and increases decentralization. +A Basic Validator keeps track of the ledger and submits transactions for possible inclusion, but it is _not_ configured to publish history archives. It does require a secret key, and is [configured to participate in consensus](./admin-guide/configuring.mdx#validating) by voting on — and signing off on — changes to the ledger, meaning it supports the network and increases decentralization. The advantage: signatures can serve as official endorsements of specific ledgers in real time. That’s important if, for instance, you issue an asset on Stellar that represents a real-world asset: you can let your customers know that you will only honor transactions and redeem assets from ledgers signed by your validator, and in the unlikely scenario that something happens to the network, you can use your node as the final arbiter of truth. Setting up your node as a validator allows you to resolve any questions _up front and in writing_ about how you plan to deal with disasters and disputes. @@ -66,7 +66,7 @@ The advantage: signatures can serve as official endorsements of specific ledgers #### Validating, offers public archive -A Full Validator is the same as a Basic Validator except that it also publishes a [History Archive](./publishing-history-archives.mdx) containing snapshots of the ledger, including all transactions and their results. A Full Validator writes to an internet-facing blob store — such as AWS or Azure — so it's a bit more expensive and complex to run, but it also does the most to support the network’s resilience and decentralization. +A Full Validator is the same as a Basic Validator except that it also publishes a [History Archive](./admin-guide/publishing-history-archives.mdx) containing snapshots of the ledger, including all transactions and their results. A Full Validator writes to an internet-facing blob store — such as AWS or Azure — so it's a bit more expensive and complex to run, but it also does the most to support the network’s resilience and decentralization. When other nodes join the network — or experience difficulty and temporarily fall out of sync — they can consult archives offered by Full Validators to catch up on the history of the network. Redundant archives prevent a single point of failure, and allow network participants to verify the veracity of a given history. diff --git a/network/core-node/admin-guide/README.mdx b/network/core-node/admin-guide/README.mdx new file mode 100644 index 000000000..fa1184309 --- /dev/null +++ b/network/core-node/admin-guide/README.mdx @@ -0,0 +1,10 @@ +--- +title: Admin Guide +sidebar_position: 20 +--- + +import DocCardList from "@theme/DocCardList"; + +All you need to know about setting up, running, and using a core validator node. + + diff --git a/network/core-node/admin-guide/_category_.json b/network/core-node/admin-guide/_category_.json new file mode 100644 index 000000000..3dcd42977 --- /dev/null +++ b/network/core-node/admin-guide/_category_.json @@ -0,0 +1,3 @@ +{ + "collapsed": false +} diff --git a/docs/run-core-node/commands.mdx b/network/core-node/admin-guide/commands.mdx similarity index 100% rename from docs/run-core-node/commands.mdx rename to network/core-node/admin-guide/commands.mdx diff --git a/docs/run-core-node/configuring.mdx b/network/core-node/admin-guide/configuring.mdx similarity index 91% rename from docs/run-core-node/configuring.mdx rename to network/core-node/admin-guide/configuring.mdx index 0b7b59b47..8798d37f8 100644 --- a/docs/run-core-node/configuring.mdx +++ b/network/core-node/admin-guide/configuring.mdx @@ -19,7 +19,7 @@ This doc works best in conjunction with concrete config examples, so as you read - If you want to connect to the testnet, check out the [example test network config](https://github.com/stellar/docker-stellar-core-horizon/blob/master/testnet/core/etc/stellar-core.cfg). As you can see, most of the fields from the [complete example config](https://github.com/stellar/stellar-core/blob/master/docs/stellar-core_example.cfg) are omitted since the default settings work fine. You can easily tailor this config to meet your testnet needs. -- If you want to connect to the public network, check out this [public network config for a Full Validator](https://github.com/stellar/packages/blob/master/docs/examples/pubnet-validator-full/stellar-core.cfg). It includes a properly crafted quorum set with all the current [Tier 1 validators](./tier-1-orgs.mdx), which is a good place to start for most configurations. This node is set up to both [validate](#validating) and write history to a [public archive](./publishing-history-archives.mdx), but you can disable either feature by adjusting this config so it's a little lighter. +- If you want to connect to the public network, check out this [public network config for a Full Validator](https://github.com/stellar/packages/blob/master/docs/examples/pubnet-validator-full/stellar-core.cfg). It includes a properly crafted quorum set with all the current [Tier 1 validators](../tier-1-orgs.mdx), which is a good place to start for most configurations. This node is set up to both [validate](#validating) and write history to a [public archive](./publishing-history-archives.mdx), but you can disable either feature by adjusting this config so it's a little lighter. ## Database @@ -53,16 +53,16 @@ This command initializes the database and bucket directories, and then exits. Yo ## Network Passphrase -Use the `NETWORK_PASSPHRASE` field to specify whether your node connects to the [testnet](../fundamentals-and-concepts/networks.mdx) or the public network. Your choices: +Use the `NETWORK_PASSPHRASE` field to specify whether your node connects to the [testnet](/docs/fundamentals-and-concepts/networks) or the public network. Your choices: - `NETWORK_PASSPHRASE="Test SDF Network ; September 2015"` - `NETWORK_PASSPHRASE="Public Global Stellar Network ; September 2015"` -For more about the Network Passphrase and how it works, check out the [encyclopedia entry](../encyclopedia/network-passphrases.mdx). +For more about the Network Passphrase and how it works, check out the [encyclopedia entry](/docs/encyclopedia/network-passphrases). ## Validating -By default, Stellar Core isn't set up to validate. If you want your node to be a [Basic Validator](./index.mdx#basic-validator) or a [Full Validator](index.mdx#full-validator), you need to configure it to do so, which means preparing it to take part in [SCP](../fundamentals-and-concepts/stellar-consensus-protocol.mdx) and sign messages pledging that the network agrees to a particular transaction set. +By default, Stellar Core isn't set up to validate. If you want your node to be a [Basic Validator](../README.mdx#basic-validator) or a [Full Validator](../README.mdx#full-validator), you need to configure it to do so, which means preparing it to take part in [SCP](/docs/fundamentals-and-concepts/stellar-consensus-protocol) and sign messages pledging that the network agrees to a particular transaction set. Configuring a node to participate in SCP and sign messages is a three step process: @@ -100,7 +100,7 @@ While this does not absolve you of all responsibility — you still need to pick When you add a validating node to your quorum set, it’s generally because you trust the _organization_ running the node: you trust SDF, not some anonymous Stellar public key. -In order to create a self-verified link between a node and the organization that runs it, a validator declares a home domain on-chain using a [`set_options` operation](../fundamentals-and-concepts/list-of-operations.mdx#set-options), and publishes organizational information in a stellar.toml file hosted on that domain. To find out how that works, take a look at [SEP-20](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0020.md). +In order to create a self-verified link between a node and the organization that runs it, a validator declares a home domain on-chain using a [`set_options` operation](/docs/fundamentals-and-concepts/list-of-operations#set-options), and publishes organizational information in a stellar.toml file hosted on that domain. To find out how that works, take a look at [SEP-20](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0020.md). As a result of that link, you can look up a node by its Stellar public key and check the stellar.toml to find out who runs it. It’s possible to do that manually, but you can also just consult the list of nodes on [Stellarbeat.io](https://stellarbeat.io/nodes). If you decide to trust an organization, you can use that list to collect the information necessary to add their nodes to your configuration. @@ -231,7 +231,7 @@ When you want to add or remove nodes, start by making changes to your own nodes' ## History -Stellar Core normally interacts with one or more history archive, which are configurable facilities where [Full Validators](index.mdx#full-validator) and [Archivers](index.mdx#archiver) store flat files containing history checkpoints: bucket files and history logs. History archives are usually off-site commodity storage services such as Amazon S3, Google Cloud Storage, Azure Blob Storage, or custom SCP/SFTP/HTTP servers. To find out how to _publish_ a history archive, consult [Publishing History Archives](./publishing-history-archives.mdx). +Stellar Core normally interacts with one or more history archive, which are configurable facilities where [Full Validators](../README.mdx#full-validator) and [Archivers](../README.mdx#archiver) store flat files containing history checkpoints: bucket files and history logs. History archives are usually off-site commodity storage services such as Amazon S3, Google Cloud Storage, Azure Blob Storage, or custom SCP/SFTP/HTTP servers. To find out how to _publish_ a history archive, consult [Publishing History Archives](./publishing-history-archives.mdx). No matter what kind of node you're running, you should configure it to `get` history from one or more public archives. You can configure any number of archives to download from: Stellar Core will automatically round-robin between them. diff --git a/docs/run-core-node/installation.mdx b/network/core-node/admin-guide/installation.mdx similarity index 100% rename from docs/run-core-node/installation.mdx rename to network/core-node/admin-guide/installation.mdx diff --git a/docs/run-core-node/monitoring.mdx b/network/core-node/admin-guide/monitoring.mdx similarity index 99% rename from docs/run-core-node/monitoring.mdx rename to network/core-node/admin-guide/monitoring.mdx index 247e2ff6c..42d428ac1 100644 --- a/docs/run-core-node/monitoring.mdx +++ b/network/core-node/admin-guide/monitoring.mdx @@ -71,7 +71,7 @@ Some notable fields in `info` are: - `age`: time elapsed since this ledger closed (during normal operation less than 10 seconds) - `num`: ledger number - `version`: protocol version supported by this ledger -- `network` is the [network passphrase](../encyclopedia/network-passphrases.mdx) that this core instance is using to decide whether to connect to the testnet or the public network +- `network` is the [network passphrase](/docs/encyclopedia/network-passphrases) that this core instance is using to decide whether to connect to the testnet or the public network - `peers`: information on the connectivity to the network - `authenticated_count`: the number of live connections - `pending_count`: the number of connections that are not fully established yet diff --git a/docs/run-core-node/network-upgrades.mdx b/network/core-node/admin-guide/network-upgrades.mdx similarity index 100% rename from docs/run-core-node/network-upgrades.mdx rename to network/core-node/admin-guide/network-upgrades.mdx diff --git a/docs/run-core-node/prerequisites.mdx b/network/core-node/admin-guide/prerequisites.mdx similarity index 90% rename from docs/run-core-node/prerequisites.mdx rename to network/core-node/admin-guide/prerequisites.mdx index a62ab320f..3ca3358ef 100644 --- a/docs/run-core-node/prerequisites.mdx +++ b/network/core-node/admin-guide/prerequisites.mdx @@ -3,7 +3,7 @@ title: Prerequisites sidebar_position: 20 --- -You can install Stellar Core a [number of different ways](./installation.mdx), and once you do, you can [configure](./configuring.mdx) it to participate in the network on a several [different levels](./index.mdx#types-of-nodes): it can be either a Basic Validator or a Full Validator. No matter how you install Stellar Core or what kind of node you run, however, you need to set up to connect to the peer-to-peer network and store the state of the ledger in a SQL [database](configuring.mdx#database). +You can install Stellar Core a [number of different ways](./installation.mdx), and once you do, you can [configure](./configuring.mdx) it to participate in the network on a several [different levels](../README.mdx#types-of-nodes): it can be either a Basic Validator or a Full Validator. No matter how you install Stellar Core or what kind of node you run, however, you need to set up to connect to the peer-to-peer network and store the state of the ledger in a SQL [database](./configuring.mdx#database). ## Compute Requirements diff --git a/docs/run-core-node/publishing-history-archives.mdx b/network/core-node/admin-guide/publishing-history-archives.mdx similarity index 95% rename from docs/run-core-node/publishing-history-archives.mdx rename to network/core-node/admin-guide/publishing-history-archives.mdx index db103a045..d77684a29 100644 --- a/docs/run-core-node/publishing-history-archives.mdx +++ b/network/core-node/admin-guide/publishing-history-archives.mdx @@ -5,7 +5,7 @@ sidebar_position: 50 import { CodeExample } from "@site/src/components/CodeExample"; -If you want to run a [Full Validator](./index.mdx#full-validator) or an [Archiver](./index.mdx#archiver), you need to set up your node to publish a history archive. You can host an archive using a blob store such as Amazon's S3 or Digital Ocean's spaces, or you can simply serve a local archive directly via an HTTP server such as Nginx or Apache. If you're setting up a [Basic Validator](index.mdx#basic-validator), you can skip this section. No matter what kind of node you're planning to run, make sure to set it up to `get` history, which is covered in [Configuration](./configuring.mdx). +If you want to run a [Full Validator](../README.mdx#full-validator) or an [Archiver](../README.mdx#archiver), you need to set up your node to publish a history archive. You can host an archive using a blob store such as Amazon's S3 or Digital Ocean's spaces, or you can simply serve a local archive directly via an HTTP server such as Nginx or Apache. If you're setting up a [Basic Validator](../README.mdx#basic-validator), you can skip this section. No matter what kind of node you're planning to run, make sure to set it up to `get` history, which is covered in [Configuration](./configuring.mdx). ## Caching and History Archives diff --git a/docs/run-core-node/running-node.mdx b/network/core-node/admin-guide/running-node.mdx similarity index 100% rename from docs/run-core-node/running-node.mdx rename to network/core-node/admin-guide/running-node.mdx diff --git a/docs/run-core-node/tier-1-orgs.mdx b/network/core-node/tier-1-orgs.mdx similarity index 97% rename from docs/run-core-node/tier-1-orgs.mdx rename to network/core-node/tier-1-orgs.mdx index 864a8023e..50e2eb864 100644 --- a/docs/run-core-node/tier-1-orgs.mdx +++ b/network/core-node/tier-1-orgs.mdx @@ -1,6 +1,6 @@ --- title: Tier 1 Organizations -sidebar_position: 120 +sidebar_position: 30 --- To help with Stellar’s decentralization, the most advanced teams building on Stellar run validators and strive to join the ranks of “Tier 1 organizations.” @@ -65,7 +65,7 @@ Letting other validators know when you plan to change your quorum set allows the ## Monitor your quorum set -We recommend using Prometheus to scrape and store your stellar-core metrics, and Grafana to render that data for human consumption. You can find step-by-step instructions for setting up monitoring and alerts in [Monitoring and Diagnostics](./monitoring.mdx), along with links to Grafana dashboards we’ve created to make things easier. +We recommend using Prometheus to scrape and store your stellar-core metrics, and Grafana to render that data for human consumption. You can find step-by-step instructions for setting up monitoring and alerts in [Monitoring and Diagnostics](./admin-guide/monitoring.mdx), along with links to Grafana dashboards we’ve created to make things easier. You can also use [Stellarbeat](https://stellarbeat.io) to view validators’ quorum configurations, get information about their availability and uptime, and the quorum command to diagnose problems with the quorum set of the local node. diff --git a/network/horizon/README.mdx b/network/horizon/README.mdx new file mode 100644 index 000000000..f4a9dc592 --- /dev/null +++ b/network/horizon/README.mdx @@ -0,0 +1,32 @@ +--- +title: Introduction +sidebar_position: 10 +--- + +Horizon provides an HTTP API to data in the Stellar network. It ingests and re-serves the data produced by the Stellar network in a form that is easier to consume by the average application relative to the performance-oriented data representations used by Stellar Core. This API serves the bridge between apps and [Stellar Core](../core-node/README.mdx). Projects like wallets, decentralized exchanges, and asset issuers use Horizon to submit transactions, query an account balance, or stream events like transactions to an account. + +Horizon can be accessed via cURL, a browser, or one of the [Stellar SDKs](/docs/tools/sdks). To reduce the complexity of your project, we recommend you use an SDK instead of making direct API calls. + +This guide describes how to administer a production Horizon instance (refer to the [Developers' Blog](https://www.stellar.org/developers-blog/a-new-sun-on-the-horizon) for some background on the performance and architectural improvements of this major version bump). For information about developing on the Horizon codebase, check out the [Development Guide](https://github.com/stellar/go/blob/master/services/horizon/internal/docs/GUIDE_FOR_DEVELOPERS.md). + +Before we begin, it's worth reiterating the sentiment echoed in the [Core Node](../core-node/README.mdx) documentation: **we do not endorse running Horizon backed by a standalone Stellar Core instance**, and especially not by a _validating_ Stellar Core. These are two separate concerns, and decoupling them is important for both reliability and performance. Horizon instead manages its own, pared-down version of Stellar Core optimized for its own subset of needs (we'll refer to this as a "Captive Core" instance). + +## Why Run Horizon? + +Running Horizon within your own infrastructure provides a number of benefits. You can: + +- Have full operational control without dependency on the Stellar Development Foundation for network data and transaction submission to networks; +- Run multiple instances for redundancy and scalability. + +The Stellar Development Foundation (SDF) runs two instances of Horizon: + +- [https://horizon.stellar.org/](https://horizon.stellar.org/) for interacting with the public network +- [https://horizon-testnet.stellar.org/](https://horizon-testnet.stellar.org/) for interacting with the [testnet](/docs/fundamentals-and-concepts/networks) + +## In These Docs + +- [Admin Guide](./admin-guide/README.mdx): how to set up your own Horizon instance. +- [Structure](./structure/README.mdx): how Horizon is structured. +- [Resources](./resources/README.mdx): descriptions of resources and their endpoints. +- [Aggregations](./aggregations/README.mdx): descriptions of specialized endpoints. +- [Errors](./errors/README.mdx): potential errors and what they mean. diff --git a/network/horizon/admin-guide/README.mdx b/network/horizon/admin-guide/README.mdx new file mode 100644 index 000000000..c48bbbe6f --- /dev/null +++ b/network/horizon/admin-guide/README.mdx @@ -0,0 +1,10 @@ +--- +title: Admin Guide +sidebar_position: 15 +--- + +import DocCardList from "@theme/DocCardList"; + +All you need to know about setting up, running, and using Horizon. + + diff --git a/docs/run-platform-server/configuring.mdx b/network/horizon/admin-guide/configuring.mdx similarity index 97% rename from docs/run-platform-server/configuring.mdx rename to network/horizon/admin-guide/configuring.mdx index 8f0de7818..087172e7e 100644 --- a/docs/run-platform-server/configuring.mdx +++ b/network/horizon/admin-guide/configuring.mdx @@ -76,13 +76,13 @@ If setting `INGEST=false`, then **must** define the `STELLAR_CORE_URL` variable ### Ingestion -If you have configured your deployment to perform the ingestion role, then it is **strongly** recommended to review [Ingestion](./ingestion.mdx) first and [Filtering](./ingestion-filtering) second and factor that into configuration parameters to achieve best performance related to your application requirements before proceeding further. +If you have configured your deployment to perform the ingestion role, then it is **strongly** recommended to review [Ingestion](./ingestion.mdx) first and [Filtering](./ingestion-filtering.mdx) second and factor that into configuration parameters to achieve best performance related to your application requirements before proceeding further. - Horizon will create a sub-directory under the current working directory of the o/s process to store captive core runtime data files. Refer to [Prerequisites](./prerequisites.mdx) for the type and amount of storage recommended. You can override this location with the optional `CAPTIVE_CORE_STORAGE_PATH` environment variable, set to a directory on the file system where captive core will store the runtime files. ### `DISABLE_TX_SUB` -This config parameter is optional, set as FALSE by default. Controls whether Horizon will accept HTTP requests to the `/tx` API endpoint and forward to the network. Refer to [Channel Accounts](../encyclopedia/channel-accounts.mdx) for some recommendations on optional client transaction submission optimizations. +This config parameter is optional, set as FALSE by default. Controls whether Horizon will accept HTTP requests to the `/tx` API endpoint and forward to the network. Refer to [Channel Accounts](../../../docs/encyclopedia/channel-accounts) for some recommendations on optional client transaction submission optimizations. - When set to FALSE, it requires **live** ingestion process to be running on the same database because Horizon depends on new ledgers from the network to confirm a transaction submission status, Horizon will report a startup error if it detects no **live** ingestion. Requires `INGEST=true` or `STELLAR_CORE_URL` to be defined for access to a Core instance. - When transaction submission is disabled by setting it to TRUE, Horizon will return 405 on POSTs to /tx. diff --git a/docs/run-platform-server/ingestion-filtering.mdx b/network/horizon/admin-guide/ingestion-filtering.mdx similarity index 100% rename from docs/run-platform-server/ingestion-filtering.mdx rename to network/horizon/admin-guide/ingestion-filtering.mdx diff --git a/docs/run-platform-server/ingestion.mdx b/network/horizon/admin-guide/ingestion.mdx similarity index 100% rename from docs/run-platform-server/ingestion.mdx rename to network/horizon/admin-guide/ingestion.mdx diff --git a/docs/run-platform-server/installing.mdx b/network/horizon/admin-guide/installing.mdx similarity index 100% rename from docs/run-platform-server/installing.mdx rename to network/horizon/admin-guide/installing.mdx diff --git a/docs/run-platform-server/monitoring.mdx b/network/horizon/admin-guide/monitoring.mdx similarity index 100% rename from docs/run-platform-server/monitoring.mdx rename to network/horizon/admin-guide/monitoring.mdx diff --git a/docs/run-platform-server/index.mdx b/network/horizon/admin-guide/overview.mdx similarity index 72% rename from docs/run-platform-server/index.mdx rename to network/horizon/admin-guide/overview.mdx index a07458b59..382c2cd53 100644 --- a/docs/run-platform-server/index.mdx +++ b/network/horizon/admin-guide/overview.mdx @@ -7,7 +7,7 @@ Horizon is a central component of the Stellar platform: it provides an HTTP API This guide describes how to administer a production Horizon instance (refer to the [Developers' Blog](https://www.stellar.org/developers-blog/a-new-sun-on-the-horizon) for some background on the performance and architectural improvements of this major version bump). For information about developing on the Horizon codebase, check out the [Development Guide](https://github.com/stellar/go/blob/master/services/horizon/internal/docs/developing.md). -Before we begin, it's worth reiterating the sentiment echoed in the [Run a Core Node](../run-core-node) guide: **we do not endorse running Horizon backed by a standalone Stellar Core instance**, and especially not by a _validating_ Stellar Core. These are two separate concerns, and decoupling them is important for both reliability and performance. Horizon instead manages its own, pared-down version of Stellar Core optimized for its own subset of needs (we'll refer to this as a "Captive Core" instance). +Before we begin, it's worth reiterating the sentiment echoed in the [Run a Core Node](../../core-node/README.mdx) guide: **we do not endorse running Horizon backed by a standalone Stellar Core instance**, and especially not by a _validating_ Stellar Core. These are two separate concerns, and decoupling them is important for both reliability and performance. Horizon instead manages its own, pared-down version of Stellar Core optimized for its own subset of needs (we'll refer to this as a "Captive Core" instance). ## Why Run Horizon? diff --git a/docs/run-platform-server/prerequisites.mdx b/network/horizon/admin-guide/prerequisites.mdx similarity index 100% rename from docs/run-platform-server/prerequisites.mdx rename to network/horizon/admin-guide/prerequisites.mdx diff --git a/docs/run-platform-server/running.mdx b/network/horizon/admin-guide/running.mdx similarity index 100% rename from docs/run-platform-server/running.mdx rename to network/horizon/admin-guide/running.mdx diff --git a/docs/run-platform-server/scaling.mdx b/network/horizon/admin-guide/scaling.mdx similarity index 100% rename from docs/run-platform-server/scaling.mdx rename to network/horizon/admin-guide/scaling.mdx diff --git a/docs/run-platform-server/upgrading.mdx b/network/horizon/admin-guide/upgrading.mdx similarity index 100% rename from docs/run-platform-server/upgrading.mdx rename to network/horizon/admin-guide/upgrading.mdx diff --git a/network/horizon/aggregations/README.mdx b/network/horizon/aggregations/README.mdx new file mode 100644 index 000000000..4fee24b56 --- /dev/null +++ b/network/horizon/aggregations/README.mdx @@ -0,0 +1,19 @@ +--- +title: Aggregations +sidebar_position: 30 +--- + +import { MethodTable } from "@site/src/components/MethodTable"; + +Endpoints that aggregate data about the ledger. + + + +| | | +| ----------------------------------------------------- | --- | +| [Order Books](./order-books/README.mdx) | | +| [Paths](./paths/README.mdx) | | +| [Trade Aggregations](./trade-aggregations/README.mdx) | | +| [Fee Stats](./fee-stats/README.mdx) | | + + diff --git a/api/horizon/aggregations/fee-stats/index.mdx b/network/horizon/aggregations/fee-stats/README.mdx similarity index 94% rename from api/horizon/aggregations/fee-stats/index.mdx rename to network/horizon/aggregations/fee-stats/README.mdx index f098d441d..21e7eb919 100644 --- a/api/horizon/aggregations/fee-stats/index.mdx +++ b/network/horizon/aggregations/fee-stats/README.mdx @@ -1,6 +1,6 @@ --- title: Fee Stats -sidebar_position: 10 +sidebar_position: 50 --- import { EndpointsTable } from "@site/src/components/EndpointsTable"; diff --git a/api/horizon/aggregations/fee-stats/object.mdx b/network/horizon/aggregations/fee-stats/object.mdx similarity index 100% rename from api/horizon/aggregations/fee-stats/object.mdx rename to network/horizon/aggregations/fee-stats/object.mdx diff --git a/api/horizon/aggregations/fee-stats/single.mdx b/network/horizon/aggregations/fee-stats/single.mdx similarity index 100% rename from api/horizon/aggregations/fee-stats/single.mdx rename to network/horizon/aggregations/fee-stats/single.mdx diff --git a/api/horizon/aggregations/order-books/index.mdx b/network/horizon/aggregations/order-books/README.mdx similarity index 95% rename from api/horizon/aggregations/order-books/index.mdx rename to network/horizon/aggregations/order-books/README.mdx index b64b0334d..e788714d1 100644 --- a/api/horizon/aggregations/order-books/index.mdx +++ b/network/horizon/aggregations/order-books/README.mdx @@ -1,6 +1,6 @@ --- title: Order Books -sidebar_position: 0 +sidebar_position: 10 --- import { EndpointsTable } from "@site/src/components/EndpointsTable"; diff --git a/api/horizon/aggregations/order-books/object.mdx b/network/horizon/aggregations/order-books/object.mdx similarity index 100% rename from api/horizon/aggregations/order-books/object.mdx rename to network/horizon/aggregations/order-books/object.mdx diff --git a/api/horizon/aggregations/order-books/single.mdx b/network/horizon/aggregations/order-books/single.mdx similarity index 98% rename from api/horizon/aggregations/order-books/single.mdx rename to network/horizon/aggregations/order-books/single.mdx index ee5f0f133..a8ae65dc8 100644 --- a/api/horizon/aggregations/order-books/single.mdx +++ b/network/horizon/aggregations/order-books/single.mdx @@ -8,7 +8,7 @@ import { ExampleResponse } from "@site/src/components/ExampleResponse"; import { CodeExample } from "@site/src/components/CodeExample"; import { AttributeTable } from "@site/src/components/AttributeTable"; -The order book endpoint provides an order book's bids and asks and can be used in [streaming](../../introduction/streaming.mdx) mode. +The order book endpoint provides an order book's bids and asks and can be used in [streaming](../../structure/streaming.mdx) mode. When filtering for a specific order book, you must use use all six of these arguments: `base_asset_type`, `base_asset_issuer`, `base_asset_code`, `counter_asset_type`, `counter_asset_issuer`, and `counter_asset_code`. If the base or counter asset is XLM, you only need to indicate the asset type as `native` and do not need to designate the code or the issuer. diff --git a/api/horizon/aggregations/paths/index.mdx b/network/horizon/aggregations/paths/README.mdx similarity index 97% rename from api/horizon/aggregations/paths/index.mdx rename to network/horizon/aggregations/paths/README.mdx index b2b1936c6..439aea268 100644 --- a/api/horizon/aggregations/paths/index.mdx +++ b/network/horizon/aggregations/paths/README.mdx @@ -1,6 +1,6 @@ --- title: Paths -sidebar_position: 0 +sidebar_position: 20 --- import { EndpointsTable } from "@site/src/components/EndpointsTable"; diff --git a/api/horizon/aggregations/paths/object.mdx b/network/horizon/aggregations/paths/object.mdx similarity index 100% rename from api/horizon/aggregations/paths/object.mdx rename to network/horizon/aggregations/paths/object.mdx diff --git a/api/horizon/aggregations/paths/strict-receive.mdx b/network/horizon/aggregations/paths/strict-receive.mdx similarity index 100% rename from api/horizon/aggregations/paths/strict-receive.mdx rename to network/horizon/aggregations/paths/strict-receive.mdx diff --git a/api/horizon/aggregations/paths/strict-send.mdx b/network/horizon/aggregations/paths/strict-send.mdx similarity index 100% rename from api/horizon/aggregations/paths/strict-send.mdx rename to network/horizon/aggregations/paths/strict-send.mdx diff --git a/api/horizon/aggregations/trade-aggregations/index.mdx b/network/horizon/aggregations/trade-aggregations/README.mdx similarity index 96% rename from api/horizon/aggregations/trade-aggregations/index.mdx rename to network/horizon/aggregations/trade-aggregations/README.mdx index 70a3f23d9..2c0d0c192 100644 --- a/api/horizon/aggregations/trade-aggregations/index.mdx +++ b/network/horizon/aggregations/trade-aggregations/README.mdx @@ -1,6 +1,6 @@ --- title: Trade Aggregations -sidebar_position: 0 +sidebar_position: 40 --- import { EndpointsTable } from "@site/src/components/EndpointsTable"; diff --git a/api/horizon/aggregations/trade-aggregations/list.mdx b/network/horizon/aggregations/trade-aggregations/list.mdx similarity index 100% rename from api/horizon/aggregations/trade-aggregations/list.mdx rename to network/horizon/aggregations/trade-aggregations/list.mdx diff --git a/api/horizon/aggregations/trade-aggregations/object.mdx b/network/horizon/aggregations/trade-aggregations/object.mdx similarity index 100% rename from api/horizon/aggregations/trade-aggregations/object.mdx rename to network/horizon/aggregations/trade-aggregations/object.mdx diff --git a/api/horizon/errors/index.mdx b/network/horizon/errors/README.mdx similarity index 62% rename from api/horizon/errors/index.mdx rename to network/horizon/errors/README.mdx index 63810a6fb..73c42fec9 100644 --- a/api/horizon/errors/index.mdx +++ b/network/horizon/errors/README.mdx @@ -7,13 +7,13 @@ import { MethodTable } from "@site/src/components/MethodTable"; After processing a request, Horizon returns a success or error response to the client. A success response will return a Status Code of 200, and an error response will return a Status Code in the range of 4XX - 5XX along with additional information about why the request could not complete successfully. -There are two categories of errors: [HTTP Status Codes](./http-status-codes/index.mdx) and [Result Codes](./result-codes/index.mdx). Result Codes only follow a Transaction Failed (400) HTTP Status Code. +There are two categories of errors: [HTTP Status Codes](./http-status-codes/README.mdx) and [Result Codes](./result-codes/README.mdx). Result Codes only follow a Transaction Failed (400) HTTP Status Code. | | | | --- | --- | -| [HTTP Status Codes](./http-status-codes/index.mdx) | Errors that occur at the Horizon Server level. | -| [Result Codes](./result-codes/index.mdx) | Errors that occur at the Stellar Core level. | +| [HTTP Status Codes](./http-status-codes/README.mdx) | Errors that occur at the Horizon Server level. | +| [Result Codes](./result-codes/README.mdx) | Errors that occur at the Stellar Core level. | diff --git a/api/horizon/errors/http-status-codes/index.mdx b/network/horizon/errors/http-status-codes/README.mdx similarity index 87% rename from api/horizon/errors/http-status-codes/index.mdx rename to network/horizon/errors/http-status-codes/README.mdx index 5e937c6f4..e5c00ccec 100644 --- a/api/horizon/errors/http-status-codes/index.mdx +++ b/network/horizon/errors/http-status-codes/README.mdx @@ -1,6 +1,6 @@ --- title: HTTP Status Codes -order: 0 +order: 30 --- import { MethodTable } from "@site/src/components/MethodTable"; @@ -13,13 +13,13 @@ Stellar uses conventional HTTP response codes to indicate the success or failure - Codes in the 4xx range indicate an error that failed given the information provided - Codes in the 5xx range indicate an error with the Horizon server. -There are two types of Status Codes: [Standard Status Codes](./standard.mdx) and [Horizon-Specific Status Codes](./horizon-specific/index.mdx). +There are two types of Status Codes: [Standard Status Codes](./standard.mdx) and [Horizon-Specific Status Codes](./horizon-specific/README.mdx). | | | | --- | --- | | [Standard Status Codes](./standard.mdx) | Generic HTTP responses. | -| [Horizon-Specific Status Codes](./horizon-specific/index.mdx) | Errors that are unique to Horizon. | +| [Horizon-Specific Status Codes](./horizon-specific/README.mdx) | Errors that are unique to Horizon. | diff --git a/api/horizon/errors/http-status-codes/horizon-specific/index.mdx b/network/horizon/errors/http-status-codes/horizon-specific/README.mdx similarity index 100% rename from api/horizon/errors/http-status-codes/horizon-specific/index.mdx rename to network/horizon/errors/http-status-codes/horizon-specific/README.mdx diff --git a/api/horizon/errors/http-status-codes/horizon-specific/before-history.mdx b/network/horizon/errors/http-status-codes/horizon-specific/before-history.mdx similarity index 100% rename from api/horizon/errors/http-status-codes/horizon-specific/before-history.mdx rename to network/horizon/errors/http-status-codes/horizon-specific/before-history.mdx diff --git a/api/horizon/errors/http-status-codes/horizon-specific/stale-history.mdx b/network/horizon/errors/http-status-codes/horizon-specific/stale-history.mdx similarity index 100% rename from api/horizon/errors/http-status-codes/horizon-specific/stale-history.mdx rename to network/horizon/errors/http-status-codes/horizon-specific/stale-history.mdx diff --git a/api/horizon/errors/http-status-codes/horizon-specific/timeout.mdx b/network/horizon/errors/http-status-codes/horizon-specific/timeout.mdx similarity index 100% rename from api/horizon/errors/http-status-codes/horizon-specific/timeout.mdx rename to network/horizon/errors/http-status-codes/horizon-specific/timeout.mdx diff --git a/api/horizon/errors/http-status-codes/horizon-specific/transaction-failed.mdx b/network/horizon/errors/http-status-codes/horizon-specific/transaction-failed.mdx similarity index 100% rename from api/horizon/errors/http-status-codes/horizon-specific/transaction-failed.mdx rename to network/horizon/errors/http-status-codes/horizon-specific/transaction-failed.mdx diff --git a/api/horizon/errors/http-status-codes/horizon-specific/transaction-malformed.mdx b/network/horizon/errors/http-status-codes/horizon-specific/transaction-malformed.mdx similarity index 90% rename from api/horizon/errors/http-status-codes/horizon-specific/transaction-malformed.mdx rename to network/horizon/errors/http-status-codes/horizon-specific/transaction-malformed.mdx index 9f3f52af8..1162150bf 100644 --- a/api/horizon/errors/http-status-codes/horizon-specific/transaction-malformed.mdx +++ b/network/horizon/errors/http-status-codes/horizon-specific/transaction-malformed.mdx @@ -12,8 +12,8 @@ There are many ways in which a transaction could be malformed, including: 1. You submitted an empty string. 2. Your base64-encoded string is invalid. -3. Your [XDR](../../../introduction/xdr.mdx) structure is invalid. -4. You have leftover bytes in your [XDR](../../../introduction/xdr.mdx) structure. +3. Your [XDR](../../../structure/xdr.mdx) structure is invalid. +4. You have leftover bytes in your [XDR](../../../structure/xdr.mdx) structure. diff --git a/api/horizon/errors/http-status-codes/standard.mdx b/network/horizon/errors/http-status-codes/standard.mdx similarity index 100% rename from api/horizon/errors/http-status-codes/standard.mdx rename to network/horizon/errors/http-status-codes/standard.mdx diff --git a/api/horizon/errors/response.mdx b/network/horizon/errors/response.mdx similarity index 100% rename from api/horizon/errors/response.mdx rename to network/horizon/errors/response.mdx diff --git a/api/horizon/errors/result-codes/index.mdx b/network/horizon/errors/result-codes/README.mdx similarity index 83% rename from api/horizon/errors/result-codes/index.mdx rename to network/horizon/errors/result-codes/README.mdx index c6e61c797..b4265d703 100644 --- a/api/horizon/errors/result-codes/index.mdx +++ b/network/horizon/errors/result-codes/README.mdx @@ -1,6 +1,6 @@ --- title: Result Codes -order: 0 +order: 40 --- import { MethodTable } from "@site/src/components/MethodTable"; @@ -9,7 +9,7 @@ Result Codes describe why a transaction or operation failed in Stellar Core and In the “extras” field, the errors returned are referred to as “Result Codes” and are Horizon’s abstraction of “Stellar Protocol Codes”, which are more specific codes available in the XDR. Result Codes are Horizon’s way of normalizing Stellar Protocol Codes. -There are three types of Result Codes: [Transaction Result Codes](./transactions.mdx), [Operation Result Codes](./operations.mdx), and [Operation-Specific Result Codes](./operation-specific/index.mdx). +There are three types of Result Codes: [Transaction Result Codes](./transactions.mdx), [Operation Result Codes](./operations.mdx), and [Operation-Specific Result Codes](./operation-specific/README.mdx). @@ -17,6 +17,6 @@ There are three types of Result Codes: [Transaction Result Codes](./transactions | --- | --- | | [Transaction Result Codes](./transactions.mdx) | Generic errors about transaction failures. | | [Operation Result Codes](./operations.mdx) | Generic errors about operation failures. | -| [Operation-Specific Result Codes](./operation-specific/index.mdx) | Errors specific to each operation type. | +| [Operation-Specific Result Codes](./operation-specific/README.mdx) | Errors specific to each operation type. | diff --git a/api/horizon/errors/result-codes/operation-specific/index.mdx b/network/horizon/errors/result-codes/operation-specific/README.mdx similarity index 99% rename from api/horizon/errors/result-codes/operation-specific/index.mdx rename to network/horizon/errors/result-codes/operation-specific/README.mdx index eb13da3dc..940d60351 100644 --- a/api/horizon/errors/result-codes/operation-specific/index.mdx +++ b/network/horizon/errors/result-codes/operation-specific/README.mdx @@ -1,6 +1,6 @@ --- title: Operation-Specific Result Codes -order: 0 +order: 30 --- import { MethodTable } from "@site/src/components/MethodTable"; diff --git a/api/horizon/errors/result-codes/operation-specific/account-merge.mdx b/network/horizon/errors/result-codes/operation-specific/account-merge.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/account-merge.mdx rename to network/horizon/errors/result-codes/operation-specific/account-merge.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/allow-trust.mdx b/network/horizon/errors/result-codes/operation-specific/allow-trust.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/allow-trust.mdx rename to network/horizon/errors/result-codes/operation-specific/allow-trust.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/bump-sequence.mdx b/network/horizon/errors/result-codes/operation-specific/bump-sequence.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/bump-sequence.mdx rename to network/horizon/errors/result-codes/operation-specific/bump-sequence.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/change-trust.mdx b/network/horizon/errors/result-codes/operation-specific/change-trust.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/change-trust.mdx rename to network/horizon/errors/result-codes/operation-specific/change-trust.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/create-account.mdx b/network/horizon/errors/result-codes/operation-specific/create-account.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/create-account.mdx rename to network/horizon/errors/result-codes/operation-specific/create-account.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/create-passive-sell-offer.mdx b/network/horizon/errors/result-codes/operation-specific/create-passive-sell-offer.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/create-passive-sell-offer.mdx rename to network/horizon/errors/result-codes/operation-specific/create-passive-sell-offer.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/manage-buy-offer.mdx b/network/horizon/errors/result-codes/operation-specific/manage-buy-offer.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/manage-buy-offer.mdx rename to network/horizon/errors/result-codes/operation-specific/manage-buy-offer.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/manage-data.mdx b/network/horizon/errors/result-codes/operation-specific/manage-data.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/manage-data.mdx rename to network/horizon/errors/result-codes/operation-specific/manage-data.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/manage-sell-offer.mdx b/network/horizon/errors/result-codes/operation-specific/manage-sell-offer.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/manage-sell-offer.mdx rename to network/horizon/errors/result-codes/operation-specific/manage-sell-offer.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/path-payment-strict-receive.mdx b/network/horizon/errors/result-codes/operation-specific/path-payment-strict-receive.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/path-payment-strict-receive.mdx rename to network/horizon/errors/result-codes/operation-specific/path-payment-strict-receive.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/path-payment-strict-send.mdx b/network/horizon/errors/result-codes/operation-specific/path-payment-strict-send.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/path-payment-strict-send.mdx rename to network/horizon/errors/result-codes/operation-specific/path-payment-strict-send.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/payment.mdx b/network/horizon/errors/result-codes/operation-specific/payment.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/payment.mdx rename to network/horizon/errors/result-codes/operation-specific/payment.mdx diff --git a/api/horizon/errors/result-codes/operation-specific/set-options.mdx b/network/horizon/errors/result-codes/operation-specific/set-options.mdx similarity index 100% rename from api/horizon/errors/result-codes/operation-specific/set-options.mdx rename to network/horizon/errors/result-codes/operation-specific/set-options.mdx diff --git a/api/horizon/errors/result-codes/operations.mdx b/network/horizon/errors/result-codes/operations.mdx similarity index 100% rename from api/horizon/errors/result-codes/operations.mdx rename to network/horizon/errors/result-codes/operations.mdx diff --git a/api/horizon/errors/result-codes/transactions.mdx b/network/horizon/errors/result-codes/transactions.mdx similarity index 100% rename from api/horizon/errors/result-codes/transactions.mdx rename to network/horizon/errors/result-codes/transactions.mdx diff --git a/network/horizon/resources/README.mdx b/network/horizon/resources/README.mdx new file mode 100644 index 000000000..1d8b2668a --- /dev/null +++ b/network/horizon/resources/README.mdx @@ -0,0 +1,25 @@ +--- +title: Resources +sidebar_position: 20 +--- + +import { MethodTable } from "@site/src/components/MethodTable"; + +Data on the Stellar ledger is organized according to resources. Each resource has several different endpoints. + + + +| | | +| ---------------------------------------------------- | --- | +| [Ledgers](./ledgers/README.mdx) | | +| [Transactions](./transactions/README.mdx) | | +| [Operations](./operations/README.mdx) | | +| [Effects](./effects/README.mdx) | | +| [Accounts](./accounts/README.mdx) | | +| [Offers](./offers/README.mdx) | | +| [Claimable Balances](./claimablebalances/README.mdx) | | +| [Trades](./trades/README.mdx) | | +| [Assets](./assets/README.mdx) | | +| [Liquidity Pools](./liquiditypools/README.mdx) | | + + diff --git a/api/horizon/resources/accounts/index.mdx b/network/horizon/resources/accounts/README.mdx similarity index 100% rename from api/horizon/resources/accounts/index.mdx rename to network/horizon/resources/accounts/README.mdx diff --git a/api/horizon/resources/accounts/object.mdx b/network/horizon/resources/accounts/object.mdx similarity index 100% rename from api/horizon/resources/accounts/object.mdx rename to network/horizon/resources/accounts/object.mdx diff --git a/api/horizon/resources/assets/index.mdx b/network/horizon/resources/assets/README.mdx similarity index 100% rename from api/horizon/resources/assets/index.mdx rename to network/horizon/resources/assets/README.mdx diff --git a/api/horizon/resources/assets/object.mdx b/network/horizon/resources/assets/object.mdx similarity index 98% rename from api/horizon/resources/assets/object.mdx rename to network/horizon/resources/assets/object.mdx index 9bdd3cd8c..63026f3c3 100644 --- a/api/horizon/resources/assets/object.mdx +++ b/network/horizon/resources/assets/object.mdx @@ -66,7 +66,7 @@ When Horizon returns information about an asset, it uses the following format: - If set to `true`, this account can freeze the balance of a holder of an asset issued by this account. - paging_token - number - - A cursor value for use in [pagination](../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../structure/pagination/README.mdx). diff --git a/api/horizon/resources/cb-retrieve-related-operations.api.mdx b/network/horizon/resources/cb-retrieve-related-operations.api.mdx similarity index 100% rename from api/horizon/resources/cb-retrieve-related-operations.api.mdx rename to network/horizon/resources/cb-retrieve-related-operations.api.mdx diff --git a/api/horizon/resources/cb-retrieve-related-transactions.api.mdx b/network/horizon/resources/cb-retrieve-related-transactions.api.mdx similarity index 100% rename from api/horizon/resources/cb-retrieve-related-transactions.api.mdx rename to network/horizon/resources/cb-retrieve-related-transactions.api.mdx diff --git a/api/horizon/resources/claimablebalances/index.mdx b/network/horizon/resources/claimablebalances/README.mdx similarity index 100% rename from api/horizon/resources/claimablebalances/index.mdx rename to network/horizon/resources/claimablebalances/README.mdx diff --git a/api/horizon/resources/claimablebalances/object.mdx b/network/horizon/resources/claimablebalances/object.mdx similarity index 95% rename from api/horizon/resources/claimablebalances/object.mdx rename to network/horizon/resources/claimablebalances/object.mdx index e745088d0..d1283cfe4 100644 --- a/api/horizon/resources/claimablebalances/object.mdx +++ b/network/horizon/resources/claimablebalances/object.mdx @@ -18,7 +18,7 @@ When Horizon returns information about a claimable balance, it uses the followin - A unique identifier for this claimable balance. - paging_token - number - - A cursor value for use in [pagination](../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../structure/pagination/README.mdx). - asset - string - The asset available to be claimed in the [SEP-11 form](https://github.com/stellar/stellar-protocol/blob/0c675fb3a482183dcf0f5db79c12685acf82a95c/ecosystem/sep-0011.md#values) `asset_code:issuing_address` or `native` (for XLM) @@ -57,10 +57,10 @@ When Horizon returns information about a claimable balance, it uses the followin - The value is also a predicate. This clause of the condition is satisfied if the value is _not_ satisfied. - absBefore - string (optional) - - A customized ISO 8601 formatted string representing a deadline for when the claimable balance can be claimed. If the balance is claimed before the date then this clause of the condition is satisfied. The format of this date string is a custom extension on top of ISO 8601 format. It allows for years to be outside the 0000-9999 range. The dates are derived from a unix epoch value in range of signed 64 bit integer. This means the date expresses a much larger calendar range of 292277026596 years into future and -292471206707 years back in past. This custom extension format will add a `'+'` prefix on values that go beyond year 9999 into the future and for years that are prior to year 0(B.C per Gregorian calendar) it will add prefix of `'-'`. - Here are examples of date string values that are possible: - `'2022-02-10T15:30:22Z'` - `'+39121901036-03-29T15:30:22Z'` + - A customized ISO 8601 formatted string representing a deadline for when the claimable balance can be claimed. If the balance is claimed before the date then this clause of the condition is satisfied. The format of this date string is a custom extension on top of ISO 8601 format. It allows for years to be outside the 0000-9999 range. The dates are derived from a unix epoch value in range of signed 64 bit integer. This means the date expresses a much larger calendar range of 292277026596 years into future and -292471206707 years back in past. This custom extension format will add a `'+'` prefix on values that go beyond year 9999 into the future and for years that are prior to year 0(B.C per Gregorian calendar) it will add prefix of `'-'`. + Here are examples of date string values that are possible: + `'2022-02-10T15:30:22Z'` + `'+39121901036-03-29T15:30:22Z'` `'-7025-12-23T00:00:00Z'` - absBeforeEpoch - string (optional) diff --git a/api/horizon/resources/effects/index.mdx b/network/horizon/resources/effects/README.mdx similarity index 100% rename from api/horizon/resources/effects/index.mdx rename to network/horizon/resources/effects/README.mdx diff --git a/api/horizon/resources/effects/types.mdx b/network/horizon/resources/effects/types.mdx similarity index 100% rename from api/horizon/resources/effects/types.mdx rename to network/horizon/resources/effects/types.mdx diff --git a/api/horizon/resources/get-all-offers.api.mdx b/network/horizon/resources/get-all-offers.api.mdx similarity index 100% rename from api/horizon/resources/get-all-offers.api.mdx rename to network/horizon/resources/get-all-offers.api.mdx diff --git a/api/horizon/resources/get-all-trades.api.mdx b/network/horizon/resources/get-all-trades.api.mdx similarity index 100% rename from api/horizon/resources/get-all-trades.api.mdx rename to network/horizon/resources/get-all-trades.api.mdx diff --git a/api/horizon/resources/get-data-by-account-id.api.mdx b/network/horizon/resources/get-data-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-data-by-account-id.api.mdx rename to network/horizon/resources/get-data-by-account-id.api.mdx diff --git a/api/horizon/resources/get-effects-by-account-id.api.mdx b/network/horizon/resources/get-effects-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-effects-by-account-id.api.mdx rename to network/horizon/resources/get-effects-by-account-id.api.mdx diff --git a/api/horizon/resources/get-offer-by-offer-id.api.mdx b/network/horizon/resources/get-offer-by-offer-id.api.mdx similarity index 100% rename from api/horizon/resources/get-offer-by-offer-id.api.mdx rename to network/horizon/resources/get-offer-by-offer-id.api.mdx diff --git a/api/horizon/resources/get-offers-by-account-id.api.mdx b/network/horizon/resources/get-offers-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-offers-by-account-id.api.mdx rename to network/horizon/resources/get-offers-by-account-id.api.mdx diff --git a/api/horizon/resources/get-operations-by-account-id.api.mdx b/network/horizon/resources/get-operations-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-operations-by-account-id.api.mdx rename to network/horizon/resources/get-operations-by-account-id.api.mdx diff --git a/api/horizon/resources/get-payments-by-account-id.api.mdx b/network/horizon/resources/get-payments-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-payments-by-account-id.api.mdx rename to network/horizon/resources/get-payments-by-account-id.api.mdx diff --git a/api/horizon/resources/get-trades-by-account-id.api.mdx b/network/horizon/resources/get-trades-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-trades-by-account-id.api.mdx rename to network/horizon/resources/get-trades-by-account-id.api.mdx diff --git a/api/horizon/resources/get-trades-by-offer-id.api.mdx b/network/horizon/resources/get-trades-by-offer-id.api.mdx similarity index 100% rename from api/horizon/resources/get-trades-by-offer-id.api.mdx rename to network/horizon/resources/get-trades-by-offer-id.api.mdx diff --git a/api/horizon/resources/get-transactions-by-account-id.api.mdx b/network/horizon/resources/get-transactions-by-account-id.api.mdx similarity index 100% rename from api/horizon/resources/get-transactions-by-account-id.api.mdx rename to network/horizon/resources/get-transactions-by-account-id.api.mdx diff --git a/api/horizon/resources/ledgers/index.mdx b/network/horizon/resources/ledgers/README.mdx similarity index 100% rename from api/horizon/resources/ledgers/index.mdx rename to network/horizon/resources/ledgers/README.mdx diff --git a/api/horizon/resources/ledgers/object.mdx b/network/horizon/resources/ledgers/object.mdx similarity index 97% rename from api/horizon/resources/ledgers/object.mdx rename to network/horizon/resources/ledgers/object.mdx index 1bb2e9fc1..6900700de 100644 --- a/api/horizon/resources/ledgers/object.mdx +++ b/network/horizon/resources/ledgers/object.mdx @@ -18,7 +18,7 @@ When Horizon returns information about a ledger, it uses the following format: - A unique identifier for this ledger. - paging_token - number - - A cursor value for use in [pagination](../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../structure/pagination/README.mdx). - hash - string - A hex-encoded SHA-256 hash of this ledger’s [XDR](/docs/encyclopedia/xdr)-encoded form. diff --git a/api/horizon/resources/liquiditypools/index.mdx b/network/horizon/resources/liquiditypools/README.mdx similarity index 100% rename from api/horizon/resources/liquiditypools/index.mdx rename to network/horizon/resources/liquiditypools/README.mdx diff --git a/api/horizon/resources/list-all-accounts.api.mdx b/network/horizon/resources/list-all-accounts.api.mdx similarity index 100% rename from api/horizon/resources/list-all-accounts.api.mdx rename to network/horizon/resources/list-all-accounts.api.mdx diff --git a/api/horizon/resources/list-all-assets.api.mdx b/network/horizon/resources/list-all-assets.api.mdx similarity index 100% rename from api/horizon/resources/list-all-assets.api.mdx rename to network/horizon/resources/list-all-assets.api.mdx diff --git a/api/horizon/resources/list-all-claimable-balances.api.mdx b/network/horizon/resources/list-all-claimable-balances.api.mdx similarity index 100% rename from api/horizon/resources/list-all-claimable-balances.api.mdx rename to network/horizon/resources/list-all-claimable-balances.api.mdx diff --git a/api/horizon/resources/list-all-effects.api.mdx b/network/horizon/resources/list-all-effects.api.mdx similarity index 100% rename from api/horizon/resources/list-all-effects.api.mdx rename to network/horizon/resources/list-all-effects.api.mdx diff --git a/api/horizon/resources/list-all-ledgers.api.mdx b/network/horizon/resources/list-all-ledgers.api.mdx similarity index 100% rename from api/horizon/resources/list-all-ledgers.api.mdx rename to network/horizon/resources/list-all-ledgers.api.mdx diff --git a/api/horizon/resources/list-all-operations.api.mdx b/network/horizon/resources/list-all-operations.api.mdx similarity index 100% rename from api/horizon/resources/list-all-operations.api.mdx rename to network/horizon/resources/list-all-operations.api.mdx diff --git a/api/horizon/resources/list-all-payments.api.mdx b/network/horizon/resources/list-all-payments.api.mdx similarity index 100% rename from api/horizon/resources/list-all-payments.api.mdx rename to network/horizon/resources/list-all-payments.api.mdx diff --git a/api/horizon/resources/list-all-transactions.api.mdx b/network/horizon/resources/list-all-transactions.api.mdx similarity index 100% rename from api/horizon/resources/list-all-transactions.api.mdx rename to network/horizon/resources/list-all-transactions.api.mdx diff --git a/api/horizon/resources/list-liquidity-pools.api.mdx b/network/horizon/resources/list-liquidity-pools.api.mdx similarity index 100% rename from api/horizon/resources/list-liquidity-pools.api.mdx rename to network/horizon/resources/list-liquidity-pools.api.mdx diff --git a/api/horizon/resources/list-strict-receive-payment-paths.api.mdx b/network/horizon/resources/list-strict-receive-payment-paths.api.mdx similarity index 100% rename from api/horizon/resources/list-strict-receive-payment-paths.api.mdx rename to network/horizon/resources/list-strict-receive-payment-paths.api.mdx diff --git a/api/horizon/resources/list-strict-send-payment-paths.api.mdx b/network/horizon/resources/list-strict-send-payment-paths.api.mdx similarity index 100% rename from api/horizon/resources/list-strict-send-payment-paths.api.mdx rename to network/horizon/resources/list-strict-send-payment-paths.api.mdx diff --git a/api/horizon/resources/list-trade-aggregations.api.mdx b/network/horizon/resources/list-trade-aggregations.api.mdx similarity index 100% rename from api/horizon/resources/list-trade-aggregations.api.mdx rename to network/horizon/resources/list-trade-aggregations.api.mdx diff --git a/api/horizon/resources/lp-retrieve-related-operations.api.mdx b/network/horizon/resources/lp-retrieve-related-operations.api.mdx similarity index 100% rename from api/horizon/resources/lp-retrieve-related-operations.api.mdx rename to network/horizon/resources/lp-retrieve-related-operations.api.mdx diff --git a/api/horizon/resources/lp-retrieve-related-transactions.api.mdx b/network/horizon/resources/lp-retrieve-related-transactions.api.mdx similarity index 100% rename from api/horizon/resources/lp-retrieve-related-transactions.api.mdx rename to network/horizon/resources/lp-retrieve-related-transactions.api.mdx diff --git a/api/horizon/resources/offers/index.mdx b/network/horizon/resources/offers/README.mdx similarity index 100% rename from api/horizon/resources/offers/index.mdx rename to network/horizon/resources/offers/README.mdx diff --git a/api/horizon/resources/offers/object.mdx b/network/horizon/resources/offers/object.mdx similarity index 96% rename from api/horizon/resources/offers/object.mdx rename to network/horizon/resources/offers/object.mdx index 8d8f92b9d..cc4885d55 100644 --- a/api/horizon/resources/offers/object.mdx +++ b/network/horizon/resources/offers/object.mdx @@ -18,7 +18,7 @@ When Horizon returns information about an offer, it uses the following format: - A unique identifier for this offer. - paging_token - number - - A cursor value for use in [pagination](../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../structure/pagination/README.mdx). - seller - string - The account ID of the account making this offer. diff --git a/api/horizon/resources/operations/index.mdx b/network/horizon/resources/operations/README.mdx similarity index 100% rename from api/horizon/resources/operations/index.mdx rename to network/horizon/resources/operations/README.mdx diff --git a/api/horizon/resources/operations/object/index.mdx b/network/horizon/resources/operations/object/README.mdx similarity index 94% rename from api/horizon/resources/operations/object/index.mdx rename to network/horizon/resources/operations/object/README.mdx index d78153200..3e18cbf87 100644 --- a/api/horizon/resources/operations/object/index.mdx +++ b/network/horizon/resources/operations/object/README.mdx @@ -20,7 +20,7 @@ See the [generic Operation errors](../../../errors/result-codes/operations.mdx). - The operation's ID number. - paging_token - string - - A cursor value for use in [pagination](../../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../../structure/pagination/README.mdx). - type_i - number - A number indicating the operation type. diff --git a/api/horizon/resources/operations/object/account-merge.mdx b/network/horizon/resources/operations/object/account-merge.mdx similarity index 100% rename from api/horizon/resources/operations/object/account-merge.mdx rename to network/horizon/resources/operations/object/account-merge.mdx diff --git a/api/horizon/resources/operations/object/allow-trust.mdx b/network/horizon/resources/operations/object/allow-trust.mdx similarity index 100% rename from api/horizon/resources/operations/object/allow-trust.mdx rename to network/horizon/resources/operations/object/allow-trust.mdx diff --git a/api/horizon/resources/operations/object/begin-sponsoring-future-reserves.mdx b/network/horizon/resources/operations/object/begin-sponsoring-future-reserves.mdx similarity index 100% rename from api/horizon/resources/operations/object/begin-sponsoring-future-reserves.mdx rename to network/horizon/resources/operations/object/begin-sponsoring-future-reserves.mdx diff --git a/api/horizon/resources/operations/object/bump-sequence.mdx b/network/horizon/resources/operations/object/bump-sequence.mdx similarity index 100% rename from api/horizon/resources/operations/object/bump-sequence.mdx rename to network/horizon/resources/operations/object/bump-sequence.mdx diff --git a/api/horizon/resources/operations/object/buy-offer.mdx b/network/horizon/resources/operations/object/buy-offer.mdx similarity index 100% rename from api/horizon/resources/operations/object/buy-offer.mdx rename to network/horizon/resources/operations/object/buy-offer.mdx diff --git a/api/horizon/resources/operations/object/change-trust.mdx b/network/horizon/resources/operations/object/change-trust.mdx similarity index 100% rename from api/horizon/resources/operations/object/change-trust.mdx rename to network/horizon/resources/operations/object/change-trust.mdx diff --git a/api/horizon/resources/operations/object/claim-claimable-balance.mdx b/network/horizon/resources/operations/object/claim-claimable-balance.mdx similarity index 100% rename from api/horizon/resources/operations/object/claim-claimable-balance.mdx rename to network/horizon/resources/operations/object/claim-claimable-balance.mdx diff --git a/api/horizon/resources/operations/object/create-account.mdx b/network/horizon/resources/operations/object/create-account.mdx similarity index 100% rename from api/horizon/resources/operations/object/create-account.mdx rename to network/horizon/resources/operations/object/create-account.mdx diff --git a/api/horizon/resources/operations/object/create-claimable-balance.mdx b/network/horizon/resources/operations/object/create-claimable-balance.mdx similarity index 100% rename from api/horizon/resources/operations/object/create-claimable-balance.mdx rename to network/horizon/resources/operations/object/create-claimable-balance.mdx diff --git a/api/horizon/resources/operations/object/end-sponsoring-future-reserves.mdx b/network/horizon/resources/operations/object/end-sponsoring-future-reserves.mdx similarity index 100% rename from api/horizon/resources/operations/object/end-sponsoring-future-reserves.mdx rename to network/horizon/resources/operations/object/end-sponsoring-future-reserves.mdx diff --git a/api/horizon/resources/operations/object/extend-footprint-ttl.mdx b/network/horizon/resources/operations/object/extend-footprint-ttl.mdx similarity index 100% rename from api/horizon/resources/operations/object/extend-footprint-ttl.mdx rename to network/horizon/resources/operations/object/extend-footprint-ttl.mdx diff --git a/api/horizon/resources/operations/object/invoke-host-function.mdx b/network/horizon/resources/operations/object/invoke-host-function.mdx similarity index 100% rename from api/horizon/resources/operations/object/invoke-host-function.mdx rename to network/horizon/resources/operations/object/invoke-host-function.mdx diff --git a/api/horizon/resources/operations/object/liquidity-pool-deposit.mdx b/network/horizon/resources/operations/object/liquidity-pool-deposit.mdx similarity index 100% rename from api/horizon/resources/operations/object/liquidity-pool-deposit.mdx rename to network/horizon/resources/operations/object/liquidity-pool-deposit.mdx diff --git a/api/horizon/resources/operations/object/liquidity-pool-withdraw.mdx b/network/horizon/resources/operations/object/liquidity-pool-withdraw.mdx similarity index 100% rename from api/horizon/resources/operations/object/liquidity-pool-withdraw.mdx rename to network/horizon/resources/operations/object/liquidity-pool-withdraw.mdx diff --git a/api/horizon/resources/operations/object/manage-data.mdx b/network/horizon/resources/operations/object/manage-data.mdx similarity index 100% rename from api/horizon/resources/operations/object/manage-data.mdx rename to network/horizon/resources/operations/object/manage-data.mdx diff --git a/api/horizon/resources/operations/object/passive-sell-offer.mdx b/network/horizon/resources/operations/object/passive-sell-offer.mdx similarity index 100% rename from api/horizon/resources/operations/object/passive-sell-offer.mdx rename to network/horizon/resources/operations/object/passive-sell-offer.mdx diff --git a/api/horizon/resources/operations/object/path-payment-strict-receive.mdx b/network/horizon/resources/operations/object/path-payment-strict-receive.mdx similarity index 100% rename from api/horizon/resources/operations/object/path-payment-strict-receive.mdx rename to network/horizon/resources/operations/object/path-payment-strict-receive.mdx diff --git a/api/horizon/resources/operations/object/path-payment-strict-send.mdx b/network/horizon/resources/operations/object/path-payment-strict-send.mdx similarity index 100% rename from api/horizon/resources/operations/object/path-payment-strict-send.mdx rename to network/horizon/resources/operations/object/path-payment-strict-send.mdx diff --git a/api/horizon/resources/operations/object/payment.mdx b/network/horizon/resources/operations/object/payment.mdx similarity index 100% rename from api/horizon/resources/operations/object/payment.mdx rename to network/horizon/resources/operations/object/payment.mdx diff --git a/api/horizon/resources/operations/object/restore-footprint.mdx b/network/horizon/resources/operations/object/restore-footprint.mdx similarity index 100% rename from api/horizon/resources/operations/object/restore-footprint.mdx rename to network/horizon/resources/operations/object/restore-footprint.mdx diff --git a/api/horizon/resources/operations/object/revoke-sponsorship.mdx b/network/horizon/resources/operations/object/revoke-sponsorship.mdx similarity index 100% rename from api/horizon/resources/operations/object/revoke-sponsorship.mdx rename to network/horizon/resources/operations/object/revoke-sponsorship.mdx diff --git a/api/horizon/resources/operations/object/sell-offer.mdx b/network/horizon/resources/operations/object/sell-offer.mdx similarity index 100% rename from api/horizon/resources/operations/object/sell-offer.mdx rename to network/horizon/resources/operations/object/sell-offer.mdx diff --git a/api/horizon/resources/operations/object/set-options.mdx b/network/horizon/resources/operations/object/set-options.mdx similarity index 100% rename from api/horizon/resources/operations/object/set-options.mdx rename to network/horizon/resources/operations/object/set-options.mdx diff --git a/api/horizon/resources/retrieve-a-claimable-balance.api.mdx b/network/horizon/resources/retrieve-a-claimable-balance.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-claimable-balance.api.mdx rename to network/horizon/resources/retrieve-a-claimable-balance.api.mdx diff --git a/api/horizon/resources/retrieve-a-ledger.api.mdx b/network/horizon/resources/retrieve-a-ledger.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-ledger.api.mdx rename to network/horizon/resources/retrieve-a-ledger.api.mdx diff --git a/api/horizon/resources/retrieve-a-ledgers-effects.api.mdx b/network/horizon/resources/retrieve-a-ledgers-effects.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-ledgers-effects.api.mdx rename to network/horizon/resources/retrieve-a-ledgers-effects.api.mdx diff --git a/api/horizon/resources/retrieve-a-ledgers-operations.api.mdx b/network/horizon/resources/retrieve-a-ledgers-operations.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-ledgers-operations.api.mdx rename to network/horizon/resources/retrieve-a-ledgers-operations.api.mdx diff --git a/api/horizon/resources/retrieve-a-ledgers-payments.api.mdx b/network/horizon/resources/retrieve-a-ledgers-payments.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-ledgers-payments.api.mdx rename to network/horizon/resources/retrieve-a-ledgers-payments.api.mdx diff --git a/api/horizon/resources/retrieve-a-ledgers-transactions.api.mdx b/network/horizon/resources/retrieve-a-ledgers-transactions.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-ledgers-transactions.api.mdx rename to network/horizon/resources/retrieve-a-ledgers-transactions.api.mdx diff --git a/api/horizon/resources/retrieve-a-liquidity-pool.api.mdx b/network/horizon/resources/retrieve-a-liquidity-pool.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-liquidity-pool.api.mdx rename to network/horizon/resources/retrieve-a-liquidity-pool.api.mdx diff --git a/api/horizon/resources/retrieve-a-transaction.api.mdx b/network/horizon/resources/retrieve-a-transaction.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-transaction.api.mdx rename to network/horizon/resources/retrieve-a-transaction.api.mdx diff --git a/api/horizon/resources/retrieve-a-transactions-effects.api.mdx b/network/horizon/resources/retrieve-a-transactions-effects.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-transactions-effects.api.mdx rename to network/horizon/resources/retrieve-a-transactions-effects.api.mdx diff --git a/api/horizon/resources/retrieve-a-transactions-operations.api.mdx b/network/horizon/resources/retrieve-a-transactions-operations.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-a-transactions-operations.api.mdx rename to network/horizon/resources/retrieve-a-transactions-operations.api.mdx diff --git a/api/horizon/resources/retrieve-an-account.api.mdx b/network/horizon/resources/retrieve-an-account.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-an-account.api.mdx rename to network/horizon/resources/retrieve-an-account.api.mdx diff --git a/api/horizon/resources/retrieve-an-operation.api.mdx b/network/horizon/resources/retrieve-an-operation.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-an-operation.api.mdx rename to network/horizon/resources/retrieve-an-operation.api.mdx diff --git a/api/horizon/resources/retrieve-an-operations-effects.api.mdx b/network/horizon/resources/retrieve-an-operations-effects.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-an-operations-effects.api.mdx rename to network/horizon/resources/retrieve-an-operations-effects.api.mdx diff --git a/api/horizon/resources/retrieve-an-order-book.api.mdx b/network/horizon/resources/retrieve-an-order-book.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-an-order-book.api.mdx rename to network/horizon/resources/retrieve-an-order-book.api.mdx diff --git a/api/horizon/resources/retrieve-fee-stats.api.mdx b/network/horizon/resources/retrieve-fee-stats.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-fee-stats.api.mdx rename to network/horizon/resources/retrieve-fee-stats.api.mdx diff --git a/api/horizon/resources/retrieve-related-effects.api.mdx b/network/horizon/resources/retrieve-related-effects.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-related-effects.api.mdx rename to network/horizon/resources/retrieve-related-effects.api.mdx diff --git a/api/horizon/resources/retrieve-related-trades.api.mdx b/network/horizon/resources/retrieve-related-trades.api.mdx similarity index 100% rename from api/horizon/resources/retrieve-related-trades.api.mdx rename to network/horizon/resources/retrieve-related-trades.api.mdx diff --git a/api/horizon/resources/sidebar.js b/network/horizon/resources/sidebar.js similarity index 100% rename from api/horizon/resources/sidebar.js rename to network/horizon/resources/sidebar.js diff --git a/api/horizon/resources/submit-a-transaction.api.mdx b/network/horizon/resources/submit-a-transaction.api.mdx similarity index 100% rename from api/horizon/resources/submit-a-transaction.api.mdx rename to network/horizon/resources/submit-a-transaction.api.mdx diff --git a/api/horizon/resources/trades/index.mdx b/network/horizon/resources/trades/README.mdx similarity index 100% rename from api/horizon/resources/trades/index.mdx rename to network/horizon/resources/trades/README.mdx diff --git a/api/horizon/resources/trades/object.mdx b/network/horizon/resources/trades/object.mdx similarity index 97% rename from api/horizon/resources/trades/object.mdx rename to network/horizon/resources/trades/object.mdx index 93599a636..24d386288 100644 --- a/api/horizon/resources/trades/object.mdx +++ b/network/horizon/resources/trades/object.mdx @@ -18,7 +18,7 @@ When Horizon returns information about a trade, it uses the following format: - A unique identifier for this trade. - paging_token - number - - A cursor value for use in [pagination](../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../structure/pagination/README.mdx). - ledger_close_time - string - An ISO 8601 formatted string of when the ledger with this trade was closed. diff --git a/api/horizon/resources/transactions/index.mdx b/network/horizon/resources/transactions/README.mdx similarity index 100% rename from api/horizon/resources/transactions/index.mdx rename to network/horizon/resources/transactions/README.mdx diff --git a/api/horizon/resources/transactions/object.mdx b/network/horizon/resources/transactions/object.mdx similarity index 98% rename from api/horizon/resources/transactions/object.mdx rename to network/horizon/resources/transactions/object.mdx index 4adbf9dad..81486c784 100644 --- a/api/horizon/resources/transactions/object.mdx +++ b/network/horizon/resources/transactions/object.mdx @@ -18,7 +18,7 @@ When Horizon returns information about a transaction, it uses the following form - A unique identifier for this transaction. - paging_token - number - - A cursor value for use in [pagination](../../introduction/pagination/index.mdx). + - A cursor value for use in [pagination](../../structure/pagination/README.mdx). - successful - boolean - Indicates if this transaction was successful or not. diff --git a/network/horizon/structure/README.mdx b/network/horizon/structure/README.mdx new file mode 100644 index 000000000..1226021c2 --- /dev/null +++ b/network/horizon/structure/README.mdx @@ -0,0 +1,8 @@ +--- +title: Horizon API Reference +sidebar_position: 20 +sidebar_label: Structure +description: Horizon is an API for interacting with the Stellar network. +--- + +How Horizon is structured. \ No newline at end of file diff --git a/api/horizon/introduction/pagination/index.mdx b/network/horizon/structure/pagination/README.mdx similarity index 100% rename from api/horizon/introduction/pagination/index.mdx rename to network/horizon/structure/pagination/README.mdx diff --git a/api/horizon/introduction/pagination/page-arguments.mdx b/network/horizon/structure/pagination/page-arguments.mdx similarity index 98% rename from api/horizon/introduction/pagination/page-arguments.mdx rename to network/horizon/structure/pagination/page-arguments.mdx index a889ef249..e7c0a7d5f 100644 --- a/api/horizon/introduction/pagination/page-arguments.mdx +++ b/network/horizon/structure/pagination/page-arguments.mdx @@ -10,9 +10,9 @@ import { CodeExample } from "@site/src/components/CodeExample"; -| | | -| --- | ---------------------------------------------------------------- | -| GET | /{endpoint}?cursor={paging_token}&order={asc,desc}&limit={1-200} | +| | | +| --- | ------------------------------------------------------------------ | +| GET | `/{endpoint}?cursor={paging_token}&order={asc,desc}&limit={1-200}` | diff --git a/api/horizon/introduction/rate-limiting.mdx b/network/horizon/structure/rate-limiting.mdx similarity index 100% rename from api/horizon/introduction/rate-limiting.mdx rename to network/horizon/structure/rate-limiting.mdx diff --git a/api/horizon/introduction/response-format.mdx b/network/horizon/structure/response-format.mdx similarity index 98% rename from api/horizon/introduction/response-format.mdx rename to network/horizon/structure/response-format.mdx index aadec3648..e8fc7805a 100644 --- a/api/horizon/introduction/response-format.mdx +++ b/network/horizon/structure/response-format.mdx @@ -15,7 +15,7 @@ HAL is just JSON with two reserved attribute names: If a response is a single record, the `_links` section will provide links to any parent or child records, and there will be no `_embedded` property. -If a response is a collection, the `_links` section will provide [pagination](./pagination/index.mdx) links, and the response’s list of records will be nested underneath the `_embedded` property. +If a response is a collection, the `_links` section will provide [pagination](./pagination/README.mdx) links, and the response’s list of records will be nested underneath the `_embedded` property. @@ -30,7 +30,7 @@ If a response is a collection, the `_links` section will provide [pagination](./ - Present when querying an endpoint that responds with a collection of records. - + ```json diff --git a/api/horizon/introduction/streaming.mdx b/network/horizon/structure/streaming.mdx similarity index 72% rename from api/horizon/introduction/streaming.mdx rename to network/horizon/structure/streaming.mdx index 09365e105..ef487c82d 100644 --- a/api/horizon/introduction/streaming.mdx +++ b/network/horizon/structure/streaming.mdx @@ -15,13 +15,13 @@ All attributes for the endpoints that allow streaming are the same as regular re | | | ------------------------------------------------------ | -| [Ledgers](../resources/ledgers/index.mdx) | -| [Transactions](../resources/transactions/index.mdx) | -| [Operations](../resources/operations/index.mdx) | +| [Ledgers](../resources/ledgers/README.mdx) | +| [Transactions](../resources/transactions/README.mdx) | +| [Operations](../resources/operations/README.mdx) | | [Payments](../resources/operations/object/payment.mdx) | -| [Effects](../resources/effects/index.mdx) | -| [Accounts](../resources/accounts/index.mdx) | -| [Trades](../resources/trades/index.mdx) | -| [Order Books](../aggregations/order-books/index.mdx) | +| [Effects](../resources/effects/README.mdx) | +| [Accounts](../resources/accounts/README.mdx) | +| [Trades](../resources/trades/README.mdx) | +| [Order Books](../aggregations/order-books/README.mdx) | diff --git a/api/horizon/introduction/xdr.mdx b/network/horizon/structure/xdr.mdx similarity index 98% rename from api/horizon/introduction/xdr.mdx rename to network/horizon/structure/xdr.mdx index 4a2f0ca44..ef5495262 100644 --- a/api/horizon/introduction/xdr.mdx +++ b/network/horizon/structure/xdr.mdx @@ -8,7 +8,7 @@ import { AttributeTable } from "@site/src/components/AttributeTable"; In the Stellar network, transactions are encoded using a standardized protocol called [External Data Representation](https://en.wikipedia.org/wiki/External_Data_Representation) (XDR). -In Horizon, you will only encounter XDR when [posting](../resources/submit-a-transaction.api.mdx) and [getting](../resources/retrieve-a-transaction.api.mdx) transactions and in the [ledger](../resources/ledgers/index.mdx) header. +In Horizon, you will only encounter XDR when [posting](../resources/submit-a-transaction.api.mdx) and [getting](../resources/retrieve-a-transaction.api.mdx) transactions and in the [ledger](../resources/ledgers/README.mdx) header. When you post a transaction, a client will encode the transaction as XDR before submitting it to Horizon. diff --git a/docs/accessing-data/overview.mdx b/network/hubble/README.mdx similarity index 92% rename from docs/accessing-data/overview.mdx rename to network/hubble/README.mdx index cf0bf6c18..9eacc67bc 100644 --- a/docs/accessing-data/overview.mdx +++ b/network/hubble/README.mdx @@ -1,13 +1,13 @@ --- -title: "Overview" +title: Introduction sidebar_position: 0 --- ## What is Hubble? -Hubble is an open-source, publicly available dataset that provides a complete historical record of the Stellar network. Similar to Horizon, it ingests and presents the data produced by the Stellar network in a format that is easier to consume than the performance-oriented data representations used by Stellar Core. The dataset is hosted on BigQuery–meaning it is suitable for large, analytic workloads, historical data retrieval and complex data aggregation. **Hubble should not be used for real-time data retrieval and cannot submit transactions to the network.** For real time use cases, we recommend [running an API server](/docs/run-platform-server). +Hubble is an open-source, publicly available dataset that provides a complete historical record of the Stellar network. Similar to Horizon, it ingests and presents the data produced by the Stellar network in a format that is easier to consume than the performance-oriented data representations used by Stellar Core. The dataset is hosted on BigQuery–meaning it is suitable for large, analytic workloads, historical data retrieval and complex data aggregation. **Hubble should not be used for real-time data retrieval and cannot submit transactions to the network.** For real time use cases, we recommend [running an API server](../horizon/admin-guide/README.mdx). -This guide describes when to use Hubble and how to connect. To view the underlying data structures, queries and examples, use the [Viewing Metadata](/docs/accessing-data/viewing-metadata) and [Optimizing Queries](/docs/accessing-data/optimizing-queries) tutorials. +This guide describes when to use Hubble and how to connect. To view the underlying data structures, queries and examples, use the [Viewing Metadata](./viewing-metadata.mdx) and [Optimizing Queries](./optimizing-queries.mdx) tutorials. ## Why Use Hubble? diff --git a/docs/accessing-data/connecting.mdx b/network/hubble/connecting.mdx similarity index 100% rename from docs/accessing-data/connecting.mdx rename to network/hubble/connecting.mdx diff --git a/docs/accessing-data/optimizing-queries.mdx b/network/hubble/optimizing-queries.mdx similarity index 98% rename from docs/accessing-data/optimizing-queries.mdx rename to network/hubble/optimizing-queries.mdx index 59b534b67..46b421b97 100644 --- a/docs/accessing-data/optimizing-queries.mdx +++ b/network/hubble/optimizing-queries.mdx @@ -15,7 +15,7 @@ Large tables are partitioned and clustered according to common access patterns. Joining tables on strings is expensive. Refrain from joining on string keys if you can utilize integer keys instead. -Read the docs on [Viewing Metadata](/docs/accessing-data/viewing-metadata) to learn more about table metadata. +Read the docs on [Viewing Metadata](./viewing-metadata.mdx) to learn more about table metadata. #### Example - Profiling Operation Types diff --git a/docs/accessing-data/viewing-metadata.mdx b/network/hubble/viewing-metadata.mdx similarity index 100% rename from docs/accessing-data/viewing-metadata.mdx rename to network/hubble/viewing-metadata.mdx diff --git a/network/soroban-rpc/README.mdx b/network/soroban-rpc/README.mdx new file mode 100644 index 000000000..ab8b89fdd --- /dev/null +++ b/network/soroban-rpc/README.mdx @@ -0,0 +1,26 @@ +--- +title: Introduction +sidebar_position: 10 +slug: /soroban-rpc +--- + +The Soroban-RPC can be described as a "live network gateway for Soroban." It provides information that the network currently has in its view (i.e. current state). It also has the ability to send a transaction to the network, and query the network for the status of previously sent transactions. It is meant to be simple, minimal, scalable, and familiar to blockchain developers from other ecosystems. + +Soroban-RPC should provide all the basic data that a dapp developer would need, provided they are: + +- Only interested in current state data, or are willing to ingest events into their own infrastructure to support reporting/analytics queries. + - Caveat: Soroban-RPC should provide enough data-retention to support reliable ingestion of events. +- Only interested in building and submitting Soroban transactions (not Stellar Vanilla). + +Soroban-RPC should support the developer from local testing (via the quickstart image), all the way through to production deployments. + +- This implies it should be easy to deploy, and easy to maintain; with low cost, and little "admin" needed. +- The developer should be able to simply run the quickstart docker image, and quickly be ready to serve requests without needing to set up or maintain dependent infrastructure. + +## Anti-Goals + +- Soroban-RPC is not a Horizon replacement. Horizon is better suited for historical reporting and analytics queries. Horizon is more concerned with "classic" Stellar data. +- Soroban-RPC should not depend on Horizon. Horizon is expensive and difficult to run, so if Soroban-RPC depended on Horizon, it would inherit that. +- Soroban-RPC should also provide an API basis for infrastructure providers to implement, but not necessarily be an off-the-shelf solution for them. +- Soroban-RPC is not a reporting/analytics tool and does not provide thorough historical data querying. It does not provide any data aggregation, compilations, or multi-server coordination requests. +- Soroban-RPC does not target ultra-low latency. The latency should be low enough to build and submit successful soroban transactions, but supporting high-frequency traders is not the goal. \ No newline at end of file diff --git a/network/soroban-rpc/admin-guide.mdx b/network/soroban-rpc/admin-guide.mdx new file mode 100644 index 000000000..265616b65 --- /dev/null +++ b/network/soroban-rpc/admin-guide.mdx @@ -0,0 +1,640 @@ +--- +sidebar_position: 20 +title: Admin Guide +--- + +The RPC service allows you to communicate directly with Soroban via a [JSON RPC interface](https://soroban.stellar.org/api/). + +For example, you can build an application and have it [send a transaction](https://soroban.stellar.org/api/methods/sendTransaction), [get ledger](https://soroban.stellar.org/api/methods/getLedgerEntries) and [event data](https://soroban.stellar.org/api/methods/getEvents), or [simulate transactions](https://soroban.stellar.org/api/methods/simulateTransaction). + +Alternatively, you can use one of Soroban's [client SDKs](https://soroban.stellar.org/docs/category/sdks), such as the [stellar-sdk](https://soroban.stellar.org/docs/reference/sdks/js), which will need to communicate with an RPC instance to access the network. + +## Run Your Own Instance for Development + +For local development, we recommend [downloading](https://hub.docker.com/r/stellar/quickstart) and running a local instance via [Docker Quickstart](https://github.com/stellar/quickstart) and running a standalone network or communicating with a live development [Testnet]. + +:::caution + +We don't recommend running the Quickstart image in production. See the [deploy your own RPC instance](#deploy-your-own-rpc-instance) section. + +::: + +The Quickstart image with the RPC service can run on a standard laptop with 8GB of RAM and has minimal storage and CPU requirements. It is a single container that runs everything you need to test against a fully featured network. It contains: + +- [Stellar Core] - Node software that runs the network, coordinates consensus, and finalizes ledgers. +- [Soroban RPC] server - JSON RPC server for interacting with Soroban contracts. +- [Horizon server] - HTTP API for accessing ledger state and historical transactions. +- [Friendbot server] - HTTP API for creating and funding new accounts on test networks. + +[Stellar Core]: https://github.com/stellar/stellar-core +[Soroban RPC]: https://github.com/stellar/soroban-rpc/tree/main/cmd/soroban-rpc +[Horizon server]: https://github.com/stellar/go/tree/master/services/horizon +[Friendbot server]: https://github.com/stellar/go/tree/master/services/friendbot + +:::info + +It's also possible to run a contract in the local sandbox environment without a network using just the Soroban CLI. See [Run on Sandbox] for more details. + +::: + +### Standalone + +To run a local standalone network with the Stellar Quickstart Docker image, run the following command: + +```bash +docker run --rm -it \ + -p 8000:8000 \ + --name stellar \ + stellar/quickstart:testing \ + --standalone \ + --enable-soroban-rpc +``` + +Once the image is started, you can check its status by querying the Horizon API: + +```bash +curl "http://localhost:8000" +``` + +You can interact with this local node using the Soroban CLI. First, add it as a configured network: + +```bash +soroban config network add standalone \ + --rpc-url "http://localhost:8000/soroban/rpc" \ + --network-passphrase "Standalone Network ; February 2017" +``` + +Then generate a unique identity (public/private keypair) to use with it: + +```bash +soroban keys generate alice +``` + +:::tip Test-only Identities + +It's a good practice to never use the same keys for testing and development that you use for the public Stellar network. Generate new keys for testing and development and avoid using them for other purposes. + +::: + +Finally, fund your new account on the local sandbox environment by making a request to the local Friendbot: + +```bash +curl "http://localhost:8000/friendbot?addr=$(soroban keys address alice)" +``` + +:::tip Command Expansion `$(...)` + +This uses [command expansion](https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html), which only works with bash-compatible shells. If you are using Windows or some other shell, you will need to copy the output of `soroban config…` and paste it into the `curl` command, or figure out how command expansion works in your shell. + +::: + +Now that you have a configured network and a funded identity, you can use these within other Soroban CLI commands. For example, deploying a contract: + +```bash +soroban contract deploy \ + --wasm target/wasm32-unknown-unknown/release/[project_name].wasm \ + --source alice \ + --network standalone +``` + +Or invoking a contract: + +```bash +soroban contract invoke \ + --id C... \ + --source alice \ + --network standalone \ + -- \ + hello \ + --to friend +``` + +When you're done with your Standalone node, you can close it with ctrlc (not cmd). This will fully remove the container (that's what the `--rm` option to the `docker` command does), which means you will need to re-deploy your contract and re-fund your identity the next time you start it. If you work with local nodes often, you may want to create scripts to make these initialization steps easier. For example, see the [example dapp's `initialize.sh`](https://github.com/stellar/soroban-example-dapp/blob/abdac3afdb6c410cc426831ece93371c1a27347d/initialize.sh). + +[Testnet]: https://soroban.stellar.org/docs/reference/networks +[Run on Sandbox]: https://soroban.stellar.org/docs/getting-started/hello-world#run-on-sandbox + +### Testnet + +Running your own Testnet node works much the same way as running a Quickstart node, as described above. You will need minor modifications for a few commands. First, you need `--testnet` for the docker instance, rather than `--standalone`: + +```bash +docker run --rm -it \ + -p 8000:8000 \ + --name stellar \ + stellar/quickstart:testing \ + --testnet \ + --enable-soroban-rpc +``` + +And you'll want to configure it for use with the `--network` flag in Soroban CLI: + +```bash +soroban config network add testnet \ + --rpc-url "http://localhost:8000/soroban/rpc" \ + --network-passphrase "Test SDF Network ; September 2015" +``` + +Replace `testnet` in that command with the name of your choice if you want to leave the name `testnet` available for use with a public RPC provider (see below). Or make clever use of `--global` configs for public providers and local configs (made with the undecorated `network add` command above) for local nodes. + +The `alice` identity suggested for your Standalone network will still work here, since it's just a public/private keypair, but you'll need to remember to fund it for the Testnet network: + +```bash +curl "https://friendbot.stellar.org/?addr=$(soroban keys address alice)" +``` + +Now you can replace `--network standalone` with `--network testnet` (or whatever you named it) in all your commands that need a network, like the `deploy` and `invoke` commands shown above. + +### Futurenet + +You can also develop your Soroban contracts against the Futurenet network. You may choose this if you want to test more bleeding-edge features that haven't made it to the Testnet yet. Running your own Futurenet node works just like running a Testnet node, as described above. + +```bash +docker run --rm -it \ + -p 8000:8000 \ + --name stellar \ + stellar/quickstart:soroban-dev \ + --futurenet \ + --enable-soroban-rpc +``` + +And you'll want to configure it for use with the `--network` flag in Soroban CLI: + +```bash +soroban config network add futurenet \ + --rpc-url "http://localhost:8000/soroban/rpc" \ + --network-passphrase "Test SDF Future Network ; October 2022" +``` + +Replace `futurenet` in that command with the name of your choice, if you want to leave the name `futurenet` available for use with a public RPC provider (see below). Or make clever use of `--global` configs for public providers and local configs (made with the undecorated `network add` command above) for local nodes. + +The `alice` identity suggested for your Standalone and Testnet networks will still work here, since it's just a public/private keypair, but you'll need to remember to fund it for the Futurenet network: + +```bash +curl "https://friendbot-futurenet.stellar.org/?addr=$(soroban keys address alice)" +``` + +Now you can replace `--network standalone` with `--network futurenet` (or whatever you named it) in all your commands that need a network, like the `deploy` and `invoke` commands shown above. + +## Deploy Your Own RPC Instance + +We recommend the following ways to deploy your own RPC instance: + +1. Deploy to Kubernetes using [Helm](https://helm.sh/docs/intro/install/) +2. Run the [soroban-rpc docker image](https://hub.docker.com/r/stellar/soroban-rpc) directly + +### Kubernetes With Helm + +If your deployment environment includes Kubernetes infrastructure, this is the preferred way to deploy your RPC instance. Here’s what you need to do: + +1. Install the [Helm CLI tool](https://helm.sh/docs/intro/install/) (minimum version 3) + +2. Add the Stellar repo to the helm client's list of repos, update it to the latest published versions + +```bash +helm repo add stellar https://helm.stellar.org/charts +helm repo update stellar +``` + +3. Deploy the RPC instance to Kubernetes using [our Helm chart](https://github.com/stellar/helm-charts/blob/main/charts/soroban-rpc): + +```bash +helm install my-rpc stellar/soroban-rpc \ +--namespace my-rpc-namespace-on-cluster \ +--set global.image.sorobanRpc.tag=20.0.0-rc4-40 \ +--set sorobanRpc.ingress.host=myrpc.example.org \ +--set sorobanRpc.persistence.enabled=true \ +--set sorobanRpc.persistence.storageClass=default \ +--set sorobanRpc.resources.limits.cpu=1 \ +--set sorobanRpc.resources.limits.memory=2560Mi +``` + +This example of Helm chart usage highlights some key aspects: + +- Set the `global.image.sorobanRpc.tag` to a tag from the [soroban-rpc dockerhub repo](https://hub.docker.com/r/stellar/soroban-rpc) for the image version you want to run. Refer to [the releases page](https://soroban.stellar.org/docs/releases) to find the correct tag for the Soroban release you are running. + +- The RPC server stores a revolving window of recent data from network ledgers to disk. The size of that data varies depending on the network and its transaction volumes, but it has an estimated range between 10 to 100 MB. To ensure the RPC pod has consistent access to disk storage space and read/write throughput, this example demonstrates how to optionally enable the Helm chart deployment to use a `PersistentVolumeClaim` (PVC) of 100MB from `default` storage class on Kubernetes by enabling these persistence parameters: + +```bash +--set sorobanRpc.persistence.enabled=true +--set sorobanRpc.persistence.storageClass=default +``` + +By default, this is disabled (`sorobanRpc.persistence.enabled=false`) and the RPC deployment will use ephemeral pod storage via `emptyDir`, which will likely be adequate for `futurenet` and `testnet` transaction volumes. However, it's worth highlighting the trade-off of not having storage limitations of the cluster enforced (likely below 100MB). + +- Network presets are defined in [`values.yaml`](https://github.com/stellar/helm-charts/blob/main/charts/soroban-rpc/values.yaml), which currently sets network configuration specific to `futurenet`. You can override this default and use other "canned" `values.yaml` files which have been published for other networks. For example, there is a [`values-testnet.yaml`](https://github.com/stellar/helm-charts/blob/main/charts/soroban-rpc/values-testnet.yaml) file to configure the deployment of the RPC server with the `testnet` network. Include this `--values` parameter in your `helm install` to specify the desired network: + +```bash +--values https://raw.githubusercontent.com/stellar/helm-charts/main/charts/soroban-rpc/values-testnet.yaml +``` + +- Configuring RPC to use other custom networks can be accomplished by downloading the [`values.yaml`](https://github.com/stellar/helm-charts/blob/main/charts/soroban-rpc/values.yaml) locally and updating settings under `sorobanRpc.sorobanRpcConfig` and `sorobanRpc.coreConfig`. This is applicable when connecting to specific networks other than the existing files like `values.yaml` available, such as your own standalone network. Include the local `values.yaml` in `helm install`: + +```bash +--values my-custom-values.yaml +``` + +- Verify the `LimitRange` defaults in the target namespace in Kubernetes for deployment. `LimitRange` is optional on the cluster config. If defined, ensure that the defaults provide at least minimum RPC server resource limits of `2.5Gi` of memory and `1` CPU. Otherwise, include the limits explicitly on the `helm install` command via the `sorobanRpc.resources.limits.*` parameters: + +```bash +--set sorobanRpc.resources.limits.cpu=1 +--set sorobanRpc.resources.limits.memory=2560Mi +``` + +Even if you're not deploying Soroban RPC using Kubernetes, the manifests generated by the charts may still be a good reference for showing how to configure and run Soroban RPC as a docker container. Just run the `helm template` command to print the container configuration to screen: + +```bash +helm template my-rpc stellar/soroban-rpc +``` + +### Docker Image + +If using Kubernetes is not an option, this is the preferred way to deploy your own RPC instance. + +:::caution + +Although we have a [Quickstart Image](https://github.com/stellar/quickstart), it's for local development and testing only. It is not suitable for production-grade deployments. + +::: + +Here's how to run the [soroban-rpc docker image](https://hub.docker.com/r/stellar/soroban-rpc): + +1. Pull the image at the version you'd like to run from [the tags](https://hub.docker.com/r/stellar/soroban-rpc/tags): + +```bash +docker pull stellar/soroban-rpc +``` + +2. Create a configuration file for [Stellar Core](https://github.com/stellar/stellar-core). Here is a sample configuration file for Testnet: + +```toml +HTTP_PORT=11626 +PUBLIC_HTTP_PORT=false + +NETWORK_PASSPHRASE="Test SDF Network ; September 2015" + +DATABASE="sqlite3://stellar.db" + +# Stellar Testnet Validators +[[HOME_DOMAINS]] +HOME_DOMAIN="testnet.stellar.org" +QUALITY="HIGH" + +[[VALIDATORS]] +NAME="sdftest1" +HOME_DOMAIN="testnet.stellar.org" +PUBLIC_KEY="GDKXE2OZMJIPOSLNA6N6F2BVCI3O777I2OOC4BV7VOYUEHYX7RTRYA7Y" +ADDRESS="core-testnet1.stellar.org" +HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_001/{0} -o {1}" + +[[VALIDATORS]] +NAME="sdftest2" +HOME_DOMAIN="testnet.stellar.org" +PUBLIC_KEY="GCUCJTIYXSOXKBSNFGNFWW5MUQ54HKRPGJUTQFJ5RQXZXNOLNXYDHRAP" +ADDRESS="core-testnet2.stellar.org" +HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_002/{0} -o {1}" + +[[VALIDATORS]] +NAME="sdftest3" +HOME_DOMAIN="testnet.stellar.org" +PUBLIC_KEY="GC2V2EFSXN6SQTWVYA5EPJPBWWIMSD2XQNKUOHGEKB535AQE2I6IXV2Z" +ADDRESS="core-testnet3.stellar.org" +HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_003/{0} -o {1}" +``` + +3. Run the image, making sure to [mount a volume](https://docs.docker.com/storage/volumes/) to your container where the above configuration is stored. An example for Testnet: + +```bash +docker run -p 8001:8001 -p 8000:8000 \ +-v :/config stellar/soroban-rpc \ +--captive-core-config-path="/config/" \ +--captive-core-storage-path="/var/lib/stellar/captive-core" \ +--captive-core-use-db=true \ +--stellar-core-binary-path="/usr/bin/stellar-core" \ +--db-path="/var/lib/stellar/soroban-rpc-db.sqlite" \ +--stellar-captive-core-http-port=11626 \ +--friendbot-url="https://friendbot-testnet.stellar.org/" \ +--network-passphrase="Test SDF Network ; September 2015" \ +--history-archive-urls="https://history.stellar.org/prd/core-testnet/core_testnet_001" \ +--admin-endpoint="0.0.0.0:8001" \ +--endpoint="0.0.0.0:8000" +``` + +#### Configuration + +For production, we recommend running Soroban RPC with a [TOML](https://toml.io/en/) configuration file rather than CLI flags. This is similar to creating a configuration file for Stellar-Core as we did previously. For example, using [our docker image](https://hub.docker.com/r/stellar/soroban-rpc): + +```bash +docker run -p 8001:8001 -p 8000:8000 \ +-v :/config stellar/soroban-rpc \ +--config-path +``` + +You can use Soroban RPC itself to generate a starter configuration file: + +```bash +docker run stellar/soroban-rpc gen-config-file > soroban-rpc-config.toml +``` + +The resulting configuration should look like this: + +```toml +# Admin endpoint to listen and serve on. WARNING: this should not be accessible +# from the Internet and does not use TLS. "" (default) disables the admin server +# ADMIN_ENDPOINT = "0.0.0.0:8001" + +# path to additional configuration for the Stellar Core configuration file used +# by captive core. It must, at least, include enough details to define a quorum +# set +# CAPTIVE_CORE_CONFIG_PATH = "" + +# Storage location for Captive Core bucket data +CAPTIVE_CORE_STORAGE_PATH = "/" + +# informs captive core to use on disk mode. the db will by default be created in +# current runtime directory of soroban-rpc, unless DATABASE= setting is +# present in captive core config file. +# CAPTIVE_CORE_USE_DB = false + +# establishes how many ledgers exist between checkpoints, do NOT change this +# unless you really know what you are doing +CHECKPOINT_FREQUENCY = 64 + +# SQLite DB path +DB_PATH = "soroban_rpc.sqlite" + +# Default cap on the amount of events included in a single getEvents response +DEFAULT_EVENTS_LIMIT = 100 + +# Endpoint to listen and serve on +ENDPOINT = "0.0.0.0:8000" + +# configures the event retention window expressed in number of ledgers, the +# default value is 17280 which corresponds to about 24 hours of history +EVENT_RETENTION_WINDOW = 17280 + +# The friendbot URL to be returned by getNetwork endpoint +# FRIENDBOT_URL = "" + +# comma-separated list of stellar history archives to connect with +HISTORY_ARCHIVE_URLS = [] + +# Ingestion Timeout when bootstrapping data (checkpoint and in-memory +# initialization) and preparing ledger reads +INGESTION_TIMEOUT = "30m0s" + +# format used for output logs (json or text) +# LOG_FORMAT = "text" + +# minimum log severity (debug, info, warn, error) to log +LOG_LEVEL = "info" + +# Maximum amount of events allowed in a single getEvents response +MAX_EVENTS_LIMIT = 10000 + +# The maximum duration of time allowed for processing a getEvents request. When +# that time elapses, the rpc server would return -32001 and abort the request's +# execution +MAX_GET_EVENTS_EXECUTION_DURATION = "10s" + +# The maximum duration of time allowed for processing a getHealth request. When +# that time elapses, the rpc server would return -32001 and abort the request's +# execution +MAX_GET_HEALTH_EXECUTION_DURATION = "5s" + +# The maximum duration of time allowed for processing a getLatestLedger request. +# When that time elapses, the rpc server would return -32001 and abort the +# request's execution +MAX_GET_LATEST_LEDGER_EXECUTION_DURATION = "5s" + +# The maximum duration of time allowed for processing a getLedgerEntries +# request. When that time elapses, the rpc server would return -32001 and abort +# the request's execution +MAX_GET_LEDGER_ENTRIES_EXECUTION_DURATION = "5s" + +# The maximum duration of time allowed for processing a getNetwork request. When +# that time elapses, the rpc server would return -32001 and abort the request's +# execution +MAX_GET_NETWORK_EXECUTION_DURATION = "5s" + +# The maximum duration of time allowed for processing a getTransaction request. +# When that time elapses, the rpc server would return -32001 and abort the +# request's execution +MAX_GET_TRANSACTION_EXECUTION_DURATION = "5s" + +# maximum ledger latency (i.e. time elapsed since the last known ledger closing +# time) considered to be healthy (used for the /health endpoint) +MAX_HEALTHY_LEDGER_LATENCY = "30s" + +# The max request execution duration is the predefined maximum duration of time +# allowed for processing a request. When that time elapses, the server would +# return 504 and abort the request's execution +MAX_REQUEST_EXECUTION_DURATION = "25s" + +# The maximum duration of time allowed for processing a sendTransaction request. +# When that time elapses, the rpc server would return -32001 and abort the +# request's execution +MAX_SEND_TRANSACTION_EXECUTION_DURATION = "15s" + +# The maximum duration of time allowed for processing a simulateTransaction +# request. When that time elapses, the rpc server would return -32001 and abort +# the request's execution +MAX_SIMULATE_TRANSACTION_EXECUTION_DURATION = "15s" + +# Network passphrase of the Stellar network transactions should be signed for. +# Commonly used values are "Test SDF Future Network ; October 2022", "Test SDF +# Network ; September 2015" and "Public Global Stellar Network ; September 2015" +# NETWORK_PASSPHRASE = "" + +# Number of workers (read goroutines) used to compute preflights for the +# simulateTransaction endpoint. Defaults to the number of CPUs. +PREFLIGHT_WORKER_COUNT = 16 + +# Maximum number of outstanding preflight requests for the simulateTransaction +# endpoint. Defaults to the number of CPUs. +PREFLIGHT_WORKER_QUEUE_SIZE = 16 + +# Maximum number of outstanding GetEvents requests +REQUEST_BACKLOG_GET_EVENTS_QUEUE_LIMIT = 1000 + +# Maximum number of outstanding GetHealth requests +REQUEST_BACKLOG_GET_HEALTH_QUEUE_LIMIT = 1000 + +# Maximum number of outstanding GetLatestsLedger requests +REQUEST_BACKLOG_GET_LATEST_LEDGER_QUEUE_LIMIT = 1000 + +# Maximum number of outstanding GetLedgerEntries requests +REQUEST_BACKLOG_GET_LEDGER_ENTRIES_QUEUE_LIMIT = 1000 + +# Maximum number of outstanding GetNetwork requests +REQUEST_BACKLOG_GET_NETWORK_QUEUE_LIMIT = 1000 + +# Maximum number of outstanding GetTransaction requests +REQUEST_BACKLOG_GET_TRANSACTION_QUEUE_LIMIT = 1000 + +# Maximum number of outstanding requests +REQUEST_BACKLOG_GLOBAL_QUEUE_LIMIT = 5000 + +# Maximum number of outstanding SendTransaction requests +REQUEST_BACKLOG_SEND_TRANSACTION_QUEUE_LIMIT = 500 + +# Maximum number of outstanding SimulateTransaction requests +REQUEST_BACKLOG_SIMULATE_TRANSACTION_QUEUE_LIMIT = 100 + +# The request execution warning threshold is the predetermined maximum duration +# of time that a request can take to be processed before a warning would be +# generated +REQUEST_EXECUTION_WARNING_THRESHOLD = "5s" + +# HTTP port for Captive Core to listen on (0 disables the HTTP server) +STELLAR_CAPTIVE_CORE_HTTP_PORT = 11626 + +# path to stellar core binary +STELLAR_CORE_BINARY_PATH = "/usr/bin/stellar-core" + +# Timeout used when submitting requests to stellar-core +STELLAR_CORE_TIMEOUT = "2s" + +# URL used to query Stellar Core (local captive core by default) +# STELLAR_CORE_URL = "" + +# Enable strict toml configuration file parsing. This will prevent unknown +# fields in the config toml from being parsed. +# STRICT = false + +# configures the transaction retention window expressed in number of ledgers, +# the default value is 1440 which corresponds to about 2 hours of history +TRANSACTION_RETENTION_WINDOW = 1440 +``` + +Note that the above generated configuration contains the default values and you need to substitute them with proper values to run the image. + +### Build From Source + +Instructions for building Soroban RPC from source can be found [here](https://github.com/stellar/soroban-rpc/blob/main/cmd/soroban-rpc/README.md). + +### Hardware Requirements + +For deployments expecting up to 1000 requests per second to Soroban RPC, we recommend at least 4GB of RAM and at least a dual core CPU with a 2.4GHz clock speed. + +For deployments expecting 1000-10000+ requests per second to Soroban RPC, we recommend at least 8GB of RAM and at least a quad core CPU with a 2.4GHz clock speed. + +For all deployments, we recommend at least 10GB of disk/storage space. + +## Use the RPC Instance + +You can configure Soroban CLI to use a remote RPC endpoint: + +```bash +soroban config network add --global testnet \ + --rpc-url https://soroban-testnet.stellar.org:443 \ + --network-passphrase 'Test SDF Network ; September 2015' +``` + +And fund your accounts/identities with the publicly hosted Friendbot: + +```bash +curl "https://friendbot.stellar.org/?addr=$(soroban keys address alice)" +``` + +See the tip above about command expansion (that's the note about `$(...)`) if you're not using a bash-based shell. + +:::caution + +When interacting with the network in production you should run your own soroban-rpc or use a third-party infrastructure provider. + +::: + +## Verify the RPC Instance + +After installation, it will be worthwhile to verify the installation of Soroban RPC is healthy. There are two methods: + +1. Access the health status endpoint of the JSON RPC service using an HTTP client +2. Use our pre-built [System Test Docker image](https://hub.docker.com/r/stellar/system-test/tags) as a tool to run a set of live tests against Soroban RPC + +### Health Status Endpoint + +If you send a JSON RPC HTTP request to your running instance of Soroban RPC: + +```bash +curl --location 'http://localhost:8000' \ +--header 'Content-Type: application/json' \ +--data '{ +"jsonrpc":"2.0", +"id":2, +"method":"getHealth" +}' +``` + +You should get back an HTTP 200 status response if the instance is healthy: + +```json +{ + "jsonrpc": "2.0", + "id": 2, + "result": { + "status": "healthy" + } +} +``` + +### System Test Docker Image + +This test will compile, deploy, and invoke example contracts to the network to which your RPC instance is connected to. Here is an example for verifying your instance if it is connected to Testnet: + +```bash +docker run --rm -t --name e2e_test \ +docker.io/stellar/system-test:soroban-preview11 \ +--VerboseOutput true \ +--TargetNetworkRPCURL \ +--TargetNetworkPassphrase "Test SDF Network ; September 2015" \ +--TargetNetworkTestAccountSecret \ +--TargetNetworkTestAccountPublic \ +--SorobanExamplesGitHash v20.0.0 +``` + +Make sure you configure the system test correctly: + +- Use a published [system test tag](https://hub.docker.com/r/stellar/system-test/tags) that aligns with the deployed Soroban RPC release version. For each release, there will be two tags published for different CPU architectures. Make sure to use the tag that matches your host machine's CPU architecture: + - `docker.io/stellar/system-test:` for machines with AMD/Intel-based CPUs + - `docker.io/stellar/system-test:-arm64` for machines with ARM CPUs +- Set `--TargetNetworkRPCURL` to your RPC HTTP URL +- Set `--TargetNetworkPassphrase` to the same network your RPC instance is connected to: + - `"Test SDF Network ; September 2015"` for Testnet + - `"Test SDF Future Network ; October 2022"` for Futurenet +- Set `--SorobanExamplesGitHash` to the corresponding release tag on the [Soroban Examples repo](https://github.com/stellar/soroban-examples/tags) +- Create and fund an account to be used for test purposes on the same network your RPC instance is connected to + - This account needs a small XLM balance to submit Soroban transactions + - Tests can be run repeatedly with the same account + - Set `--TargetNetworkTestAccountPublic` to the `StrKey` encoded public key of the account + - Set `--TargetNetworkTestAccountSecret` to the `StrKey` encoded secret for the account + +## Monitor the RPC Instance + +If you run Soroban RPC with the `--admin-endpoint` configured and [expose the port](https://docs.docker.com/engine/reference/commandline/run/#publish), you'll have access to the [Prometheus](https://prometheus.io/) metrics via the `/metrics` endpoint. For example, if the admin endpoint is `0.0.0.0:8001` and you're running the Soroban RPC Docker image: + +```bash +curl localhost:8001/metrics +``` + +You will see many of the default Go and Process metrics (prefixed by `go_` and `process_` respectively) such as memory usage, CPU usage, number of threads, etc. + +We also expose metrics related to Soroban RPC (prefixed by `soroban_rpc`). There are many, but some notable ones are: + +- `soroban_rpc_transactions_count` - count of transactions ingested with a sliding window of 10m +- `soroban_rpc_events_count` - count of events ingested with a sliding window of 10m +- `soroban_rpc_ingest_local_latest_ledger` - latest ledger ingested +- `soroban_rpc_db_round_trip_time_seconds` - time required to run `SELECT 1` query in the DATABASE + +Soroban RPC also provides logging to console for: + +- Startup activity +- Ingesting, applying, and closing ledgers +- Handling JSON RPC requests +- Any errors + +The logs have the format: + +``` +time= level= msg= pid= subservice= +``` \ No newline at end of file diff --git a/network/soroban-rpc/json-rpc.mdx b/network/soroban-rpc/json-rpc.mdx new file mode 100644 index 000000000..946c694c7 --- /dev/null +++ b/network/soroban-rpc/json-rpc.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 40 +title: JSON-RPC +--- + +Soroban-RPC will accept HTTP POST requests using the [JSON-RPC 2.0] specification. Errors are returned via the [jsonrpc error object] wherever possible (and makes sense). + +For production and other publicly-accessible instances, the JSON-RPC endpoint should be served over SSL on port 443, where possible, for security and ease of use. Though, soroban-rpc does not terminate ssl by itself, so will need a load-balancer or other service to terminate SSL for it. + +To interact with soroban-rpc from inside a JavaScript application, use the [JavaScript SDK] package, which gives a convenient interface for the RPC methods inside of its `SorobanRpc` module. + +When XDR is passed as a parameter or returned, it is always a string encoded using standard base64. + +:::info + +Please note that parameter structure must contain named parameters as a by-name +object, and not as positional arguments as a by-position array. Positional +arguments as a by-position array will be deprecated in future RPC releases. + +::: + +## Open-RPC Specification + +Soroban-RPC provides an [OpenRPC] specification document that can be used to mock, build, and/or validate both server and client software implementations. This document is used to generate all of our [methods] documentation pages. You can view the full [specification document here]. Additionally, you can experiment with this specificaiton document in the [OpenRPC Playground]. + +[JSON-RPC 2.0]: https://www.jsonrpc.org/specification +[jsonrpc error object]: https://www.jsonrpc.org/specification#error_object +[JavaScript SDK]: https://github.com/stellar/js-stellar-sdk +[OpenRPC]: https://open-rpc.org/ +[methods]: ./methods +[specification document here]: https://raw.githubusercontent.com/stellar/soroban-docs/main/static/openrpc.json +[OpenRPC Playground]: https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/stellar/soroban-docs/main/static/openrpc.json diff --git a/network/soroban-rpc/methods/README.mdx b/network/soroban-rpc/methods/README.mdx new file mode 100644 index 000000000..f0d5ad4b9 --- /dev/null +++ b/network/soroban-rpc/methods/README.mdx @@ -0,0 +1,11 @@ +--- +title: Methods +sidebar_position: 30 +--- + +import DocCardList from "@theme/DocCardList"; + +All you need to know about available RPC methods, parameters and responses, and +making RPC requests. + + diff --git a/network/soroban-rpc/methods/_category_.json b/network/soroban-rpc/methods/_category_.json new file mode 100644 index 000000000..3dcd42977 --- /dev/null +++ b/network/soroban-rpc/methods/_category_.json @@ -0,0 +1,3 @@ +{ + "collapsed": false +} diff --git a/network/soroban-rpc/methods/getEvents.mdx b/network/soroban-rpc/methods/getEvents.mdx new file mode 100644 index 000000000..1f733000f --- /dev/null +++ b/network/soroban-rpc/methods/getEvents.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Returns contract events +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/methods/getHealth.mdx b/network/soroban-rpc/methods/getHealth.mdx new file mode 100644 index 000000000..464c40a46 --- /dev/null +++ b/network/soroban-rpc/methods/getHealth.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Returns node health +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/methods/getLatestLedger.mdx b/network/soroban-rpc/methods/getLatestLedger.mdx new file mode 100644 index 000000000..bd78b3ea1 --- /dev/null +++ b/network/soroban-rpc/methods/getLatestLedger.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Returns latest known ledger +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/methods/getLedgerEntries.mdx b/network/soroban-rpc/methods/getLedgerEntries.mdx new file mode 100644 index 000000000..aefc1f9db --- /dev/null +++ b/network/soroban-rpc/methods/getLedgerEntries.mdx @@ -0,0 +1,338 @@ +--- +hide_title: true +description: Returns ledger entries +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + + +### Generating `keys` Parameters + +The example above is querying a deployment of the [`increment` example contract] to find out what value is stored in the `COUNTER` ledger entry. This value can be derived using the following code snippets. You should be able to extrapolate from the provided examples how to get `keys` parameters for other types and values. + +#### Python + +:::note + +If you are using the [Python](https://stellar-sdk.readthedocs.io/en/latest/) `stellar_sdk` to generate these keys, you will need to install the latest version of the SDK. This can be done like so: + +```bash +pip install --upgrade stellar-sdk +``` + +::: + +```python +from stellar_sdk import xdr, scval, Address + +def get_ledger_key_symbol(contract_id: str, symbol_text: str) -> str: + ledger_key = xdr.LedgerKey( + type=xdr.LedgerEntryType.CONTRACT_DATA, + contract_data=xdr.LedgerKeyContractData( + contract=Address(contract_id).to_xdr_sc_address(), + key=scval.to_symbol(symbol_text), + durability=xdr.ContractDataDurability.PERSISTENT + ), + ) + return ledger_key.to_xdr() + +print( + get_ledger_key_symbol( + "CCPYZFKEAXHHS5VVW5J45TOU7S2EODJ7TZNJIA5LKDVL3PESCES6FNCI", + "COUNTER" + ) +) +``` + +#### JavaScript + +If you are using the [JavaScript](https://stellar.github.io/js-stellar-sdk/) `stellar-sdk` to generate these keys, you will need to install the latest pre-release version of the SDK. This can be done like so: + +```bash +yarn add @stellar/stellar-sdk +``` + +```js +import { xdr, Address } from "@stellar/stellar-sdk"; + +const getLedgerKeySymbol = (contractId, symbolText) => { + const ledgerKey = xdr.LedgerKey.contractData( + new xdr.LedgerKeyContractData({ + contract: new Address(contractId).toScAddress(), + key: xdr.ScVal.scvSymbol(symbolText), + durability: xdr.ContractDataDurability.persistent(), + }), + ); + return ledgerKey.toXDR("base64"); +}; + +console.log( + getLedgerKeySymbol( + "CCPYZFKEAXHHS5VVW5J45TOU7S2EODJ7TZNJIA5LKDVL3PESCES6FNCI", + "COUNTER", + ), +); +``` + +### Requesting an Account + +:::note + +This functionality is included in the JavaScript [`stellar-sdk`](https://www.npmjs.com/package/stellar-sdk) package as `SorobanRpc.Server.getAccount(address)`. + +::: + +Accounts are stored as ledger entries, so we can use this method to look up an account along with it's current sequence number. + +```js +import { xdr, Keypair } from '@stellar/stellar-sdk' + +const getLedgerKeyAccount = (address) => { + const ledgerKey = xdr.LedgerKey.account( + new xdr.LedgerKeyAccount({ + accountId: Keypair.fromPublicKey(address).xdrPublicKey(), + }) + ) + return ledgerKey.toXDR('base64') +} + +console.log(getLedgerKeyAccount( + 'GCU5YE6IVBOEZ5LUU5N2NB55VPB5YZNFERT65SSTVXTNMS7IEQWXKBM2' +)) + +# OUTPUT: AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQ== +``` + +We then take our output from this function, and use it as the element in the `keys` array parameter in our call to the `getLedgerEntries` method. + +```json +{ + "jsonrpc": "2.0", + "id": 8675309, + "method": "getLedgerEntries", + "params": { + "keys": ["AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQ=="] + } +} +``` + +And the response we get contains the `LedgerEntryData` with the current information about this account. + +```json +{ + "jsonrpc": "2.0", + "id": 8675309, + "result": { + "entries": [ + { + "key": "AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQ==", + "xdr": "AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQAAABdIdugAAAWpygAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA", + "lastModifiedLedgerSeq": "164303" + } + ], + "latestLedger": 246819 + } +} +``` + +We can then parse this result as an `xdr.LedgerEntryData` type. + +```js +const parsed = xdr.LedgerEntryData.fromXDR( + "AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQAAABdIdugAAAWpygAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA", + "base64", +); +console.log(parsed); +``` + +### Requesting a Contract's Wasm Code + +This can be a bit tricky to wrap your head around, but the conventions do make sense once you let it sink in. + +In the previous examples, the `COUNTER` _key_ was used as a `LedgerKey` while the incremented _value_ was stored in a **`LedgerEntry`**. "Ledger Entry" is the relevant term to keep in mind during this discussion. That `LedgerEntry` was stored on the Stellar ledger, and was associated with a corresponding `LedgerKey`. `LedgerKey: LedgerEntry` works the same way you would think of almost any `key: value` storage system. + +#### How Soroban Contract Deployment Works + +When you deploy a contract, first the code is "installed" (i.e. it is uploaded onto the blockchain). This creates a `LedgerEntry` containing the Wasm byte-code, which is uniquely identified by its hash (that is, the hash of the uploaded code itself). Then, when the contract is "deployed," we create a `LedgerEntry` with a reference to that code's hash. So fetching the contract code is a two-step process: + +1. First, we look up the contract itself, to see which code hash it is referencing. +2. Then, we can look up the raw Wasm byte-code using that hash. + +#### Request the `LedgerKey` for the Contract Code + +##### Python + +```python +from stellar_sdk import xdr, Address + +def get_ledger_key_contract_code(contract_id: str) -> str: + ledger_key = xdr.LedgerKey( + type=xdr.LedgerEntryType.CONTRACT_DATA, + contract_data=xdr.LedgerKeyContractData( + contract=Address(contract_id).to_xdr_sc_address(), + key=xdr.SCVal(xdr.SCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE), + durability=xdr.ContractDataDurability.PERSISTENT + ) + ) + return ledger_key.to_xdr() + +print( + get_ledger_key_contract_code( + "CCPYZFKEAXHHS5VVW5J45TOU7S2EODJ7TZNJIA5LKDVL3PESCES6FNCI" + ) +) +# OUTPUT: AAAABgAAAAGfjJVEBc55drW3U87N1Py0Rw0/nlqUA6tQ6r28khEl4gAAABQAAAAB +``` + +##### JavaScript + +```javascript +import { Contract } from "@stellar/stellar-sdk"; + +function getLedgerKeyContractCode(contractId) { + const instance = new Contract(contractId).getFootprint(); + return instance.toXDR("base64"); +} + +console.log( + getLedgerKeyContractCode( + "CCPYZFKEAXHHS5VVW5J45TOU7S2EODJ7TZNJIA5LKDVL3PESCES6FNCI", + ), +); +// OUTPUT: AAAABgAAAAGfjJVEBc55drW3U87N1Py0Rw0/nlqUA6tQ6r28khEl4gAAABQAAAAB +``` + +We then take our output from this function, and use it as the element in the `keys` array parameter in our call to the `getLedgerEntries` method. + +```json +{ + "jsonrpc": "2.0", + "id": 8675309, + "method": "getLedgerEntries", + "params": { + "keys": ["AAAABgAAAAGfjJVEBc55drW3U87N1Py0Rw0/nlqUA6tQ6r28khEl4gAAABQAAAAB"] + } +} +``` + +And the response we get contains the `LedgerEntryData` that can be used to find the `hash` we must use to request the Wasm byte-code. This hash is the `LedgerKey` that's been associated with the deployed contract code. + +```json +{ + "jsonrpc": "2.0", + "id": 8675309, + "result": { + "entries": [ + { + "key": "AAAABgAAAAGfjJVEBc55drW3U87N1Py0Rw0/nlqUA6tQ6r28khEl4gAAABQAAAAB", + "xdr": "AAAABgAAAAAAAAABn4yVRAXOeXa1t1POzdT8tEcNP55alAOrUOq9vJIRJeIAAAAUAAAAAQAAABMAAAAA5DNtbckOGVRsNVb8L7X/lIhAOy2o5G6GkLKXvc7W8foAAAAA", + "lastModifiedLedgerSeq": "261603" + } + ], + "latestLedger": 262322 + } +} +``` + +#### Request the `ContractCode` Using the Retrieved `LedgerKey` + +Now take the `xdr` field from the previous response's `result` object, and create a `LedgerKey` from the hash contained inside. + +##### Python + +```python +from stellar_sdk import xdr + +def get_ledger_key_wasm_id(contract_code_ledger_entry_data: str) -> str: + # First, we dig the wasm_id hash out of the xdr we received from RPC + contract_code_wasm_hash = xdr.LedgerEntryData.from_xdr( + contract_code_ledger_entry_data + ).contract_data.val.instance.executable.wasm_hash + # Now, we can create the `LedgerKey` as we've done in previous examples + ledger_key = xdr.LedgerKey( + type=xdr.LedgerEntryType.CONTRACT_CODE, + contract_code=xdr.LedgerKeyContractCode( + hash=contract_code_wasm_hash + ), + ) + return ledger_key.to_xdr() + +print( + get_ledger_key_wasm_id( + "AAAABgAAAAAAAAABn4yVRAXOeXa1t1POzdT8tEcNP55alAOrUOq9vJIRJeIAAAAUAAAAAQAAABMAAAAA5DNtbckOGVRsNVb8L7X/lIhAOy2o5G6GkLKXvc7W8foAAAAA" + ) +) +# OUTPUT: AAAAB+QzbW3JDhlUbDVW/C+1/5SIQDstqORuhpCyl73O1vH6 +``` + +##### JavaScript + +```javascript +import { xdr } from "@stellar/stellar-sdk"; + +function getLedgerKeyWasmId(contractCodeLedgerEntryData) { + const entry = xdr.LedgerEntryData.fromXDR( + contractCodeLedgerEntryData, + "base64", + ); + + const wasmHash = entry + .contractData() + .val() + .instance() + .executable() + .wasmHash(); + + let ledgerKey = xdr.LedgerKey.contractCode( + new xdr.LedgerKeyContractCode({ + hash: wasmHash, + }), + ); + + return ledgerKey.toXDR("base64"); +} + +console.log( + getLedgerKeyWasmId( + "AAAABgAAAAAAAAABn4yVRAXOeXa1t1POzdT8tEcNP55alAOrUOq9vJIRJeIAAAAUAAAAAQAAABMAAAAA5DNtbckOGVRsNVb8L7X/lIhAOy2o5G6GkLKXvc7W8foAAAAA", + ), +); +// OUTPUT: AAAAB+QzbW3JDhlUbDVW/C+1/5SIQDstqORuhpCyl73O1vH6 +``` + +Now, finally we have a `LedgerKey` that correspond to the Wasm byte-code that has been deployed under the `ContractId` we started out with so very long ago. This `LedgerKey` can be used in a final request to the Soroban-RPC endpoint. + +```json +{ + "jsonrpc": "2.0", + "id": 8675309, + "method": "getLedgerEntries", + "params": { + "keys": ["AAAAB+QzbW3JDhlUbDVW/C+1/5SIQDstqORuhpCyl73O1vH6"] + } +} +``` + +And the response we get contains (even more) `LedgerEntryData` that we can decode and parse to get the actual, deployed, real-life contract byte-code. We'll leave that exercise up to you. You can check out what is contained using the ["View XDR" page of the Stellar Laboratory]. + +```json +{ + "jsonrpc": "2.0", + "id": 8675309, + "result": { + "entries": [ + { + "key": "AAAAB+QzbW3JDhlUbDVW/C+1/5SIQDstqORuhpCyl73O1vH6", + "xdr": "AAAABwAAAADkM21tyQ4ZVGw1Vvwvtf+UiEA7LajkboaQspe9ztbx+gAAAkgAYXNtAQAAAAEVBGACfn4BfmADfn5+AX5gAAF+YAAAAhkEAWwBMAAAAWwBMQAAAWwBXwABAWwBOAAAAwUEAgMDAwUDAQAQBhkDfwFBgIDAAAt/AEGAgMAAC38AQYCAwAALBzUFBm1lbW9yeQIACWluY3JlbWVudAAEAV8ABwpfX2RhdGFfZW5kAwELX19oZWFwX2Jhc2UDAgqnAQSSAQIBfwF+QQAhAAJAAkACQEKOutCvhtQ5QgEQgICAgABCAVINAEKOutCvhtQ5QgEQgYCAgAAiAUL/AYNCBFINASABQiCIpyEACyAAQQFqIgBFDQFCjrrQr4bUOSAArUIghkIEhCIBQgEQgoCAgAAaQoSAgICgBkKEgICAwAwQg4CAgAAaIAEPCwAACxCFgICAAAALCQAQhoCAgAAACwQAAAALAgALAHMOY29udHJhY3RzcGVjdjAAAAAAAAAAQEluY3JlbWVudCBpbmNyZW1lbnRzIGFuIGludGVybmFsIGNvdW50ZXIsIGFuZCByZXR1cm5zIHRoZSB2YWx1ZS4AAAAJaW5jcmVtZW50AAAAAAAAAAAAAAEAAAAEAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFAAAAAAAbw5jb250cmFjdG1ldGF2MAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS43Ni4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzIwLjMuMSNiYTA0NWE1N2FmOTcxZmM4M2U0NzU3NDZiNTlhNTAzYjdlZjQxNjQ5AA==", + "lastModifiedLedgerSeq": 368441, + "liveUntilLedgerSeq": 2442040 + } + ], + "latestLedger": 370940 + } +} +``` + +[`increment` example contract]: https://soroban.stellar.org/docs/getting-started/storing-data +["View XDR" page of the Stellar Laboratory]: https://laboratory.stellar.org/#xdr-viewer?type=LedgerEntryData&network=testnet diff --git a/network/soroban-rpc/methods/getNetwork.mdx b/network/soroban-rpc/methods/getNetwork.mdx new file mode 100644 index 000000000..c912b5047 --- /dev/null +++ b/network/soroban-rpc/methods/getNetwork.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Returns network config +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/methods/getTransaction.mdx b/network/soroban-rpc/methods/getTransaction.mdx new file mode 100644 index 000000000..8ab2b45c8 --- /dev/null +++ b/network/soroban-rpc/methods/getTransaction.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Returns transaction details +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/methods/sendTransaction.mdx b/network/soroban-rpc/methods/sendTransaction.mdx new file mode 100644 index 000000000..52440c7e4 --- /dev/null +++ b/network/soroban-rpc/methods/sendTransaction.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Submits a transaction +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/methods/simulateTransaction.mdx b/network/soroban-rpc/methods/simulateTransaction.mdx new file mode 100644 index 000000000..bd5ab5736 --- /dev/null +++ b/network/soroban-rpc/methods/simulateTransaction.mdx @@ -0,0 +1,8 @@ +--- +hide_title: true +description: Submits a trial contract invocation transaction +--- + +import { RpcMethod } from "@site/src/components/RpcMethod"; + + diff --git a/network/soroban-rpc/pagination.mdx b/network/soroban-rpc/pagination.mdx new file mode 100644 index 000000000..a5b4780d8 --- /dev/null +++ b/network/soroban-rpc/pagination.mdx @@ -0,0 +1,28 @@ +--- +sidebar_position: 50 +title: Pagination +--- + +Pagination in soroban-rpc is similar to pagination in Horizon. + +For methods which support it, the pagination arguments are passed as a final object argument with two values: + +- `cursor`: string - (optional) A string ID that points to a specific location in a collection of responses and is pulled from the paging*token value of a record. When a cursor is provided Soroban-RPC will \_not* include the element whose id matches the cursor in the response. Only elements which appear _after_ the cursor are included. +- `limit`: number - (optional) The maximum number of records returned. The limit for [getEvents](./methods/getEvents.mdx) can range from 1 to 10000 - an upper limit that is hardcoded in Soroban-RPC for performance reasons. If this argument isn't designated, it defaults to 100. + +For example, calling a method with pagination parameter set: + +```json +{ + "jsonrpc": "2.0", + "id": "1", + "method": "exampleMethod", + "params": { + "some": "argument", + "pagination": { + "cursor": "1234-1", + "limit": 100 + } + } +} +``` diff --git a/network/soroban-rpc/rpc-providers.mdx b/network/soroban-rpc/rpc-providers.mdx new file mode 100644 index 000000000..01f5e0f76 --- /dev/null +++ b/network/soroban-rpc/rpc-providers.mdx @@ -0,0 +1,36 @@ +--- +sidebar_position: 60 +title: RPC Providers +--- + +## Ecosystem Providers + +Multiple infrastructure providers have made Soroban RPC endpoint services available, and offer plans ranging from free to high throughput endpoints. These providers can be used for development, testing, and production. + +These providers allow access to the Testnet and Mainnet networks. + +| Provider | Access | Futurenet | Testnet | Mainnet | +| ------------------------------------------------------- | --------------------------------------------------- | ------------- | --------- | ----------- | +| [Blockdaemon](https://www.blockdaemon.com) | [Access](https://www.blockdaemon.com/apply/soroban) | Not available | Available | Available | +| [Validation Cloud](https://validationcloud.io/) | [Access](https://app.validationcloud.io/) | Not available | Available | Available | +| [QuickNode\*](https://www.quicknode.com/chains/stellar) | [Access](https://www.quicknode.com/chains/stellar) | Not available | Available | Available | +| [NowNodes](https://nownodes.io/nodes/stellar-xlm) | [Access](https://nownodes.io/nodes/stellar-xlm) | Available | Available | Coming soon | +| [Gateway](https://gateway.fm/) | [Access](https://gateway.fm/public-rpc/) | Not available | Available | Available | + +\*_Please note that Quicknode combines Horizon and RPC in the same endpoint._ + +## SDF Provided RPC (Futurenet and Testnet only) + +SDF has made available Soroban RPC with access to the Futurenet and Testnet networks. These services are free to use, and are suitable for development and testing. + +SDF will not be providing a publicly available RPC endpoint for Mainnet. Developers should select an ecosystem provider that works for their project before migrating to Mainnet. In some cases, projects may choose to [run their own RPC instance](./admin-guide.mdx). + +| Network | RPC Endpoint | Friendbot Endpoint | Provider | +| ----------- | ------------------------------------- | ----------------------------------------- | ----------------------------- | +| `Futurenet` | `https://rpc-futurenet.stellar.org` | `https://friendbot-futurenet.stellar.org` | [SDF](http://www.stellar.org) | +| `Testnet` | `https://soroban-testnet.stellar.org` | `https://friendbot.stellar.org` | [SDF](http://www.stellar.org) | + +## Run Your Own RPC + +If you are interested in running your own RPC, please checkout +[this page](./admin-guide.mdx). \ No newline at end of file diff --git a/api/stellar-disbursement-platform/introduction/index.mdx b/network/stellar-disbursement-platform/README.mdx similarity index 77% rename from api/stellar-disbursement-platform/introduction/index.mdx rename to network/stellar-disbursement-platform/README.mdx index 3488cd34c..c22fcb640 100644 --- a/api/stellar-disbursement-platform/introduction/index.mdx +++ b/network/stellar-disbursement-platform/README.mdx @@ -1,9 +1,10 @@ --- title: Stellar Disbursement Platform API Reference sidebar_position: 10 +sidebar_label: Introduction slug: /stellar-disbursement-platform --- The Stellar Disbursement Platform (SDP) enables organizations to disburse bulk payments to recipients using Stellar. -This section includes the API reference for the Stellar Disbursement Platform. To learn more about the Stellar Disbursement Platform and how to run it, check out the [documentation](/docs/stellar-disbursement-platform/overview). \ No newline at end of file +This section includes the API reference for the Stellar Disbursement Platform. To learn more about the Stellar Disbursement Platform and how to run it, check out the [Admin Guide](./admin-guide/README.mdx). diff --git a/network/stellar-disbursement-platform/admin-guide/README.mdx b/network/stellar-disbursement-platform/admin-guide/README.mdx new file mode 100644 index 000000000..39975a6f9 --- /dev/null +++ b/network/stellar-disbursement-platform/admin-guide/README.mdx @@ -0,0 +1,11 @@ +--- +title: Admin Guide +sidebar_position: 15 +--- + +import DocCardList from "@theme/DocCardList"; + +All you need to know about setting up, running, and using the Stellar +Disbursement Platform. + + diff --git a/docs/stellar-disbursement-platform/anchor-platform-integration-points.mdx b/network/stellar-disbursement-platform/admin-guide/anchor-platform-integration-points.mdx similarity index 94% rename from docs/stellar-disbursement-platform/anchor-platform-integration-points.mdx rename to network/stellar-disbursement-platform/admin-guide/anchor-platform-integration-points.mdx index 06498641b..3d9b32312 100644 --- a/docs/stellar-disbursement-platform/anchor-platform-integration-points.mdx +++ b/network/stellar-disbursement-platform/admin-guide/anchor-platform-integration-points.mdx @@ -3,7 +3,7 @@ title: Anchor Platform Integration Points sidebar_position: 60 --- -As mentioned in the [Design and Architecture](/docs/stellar-disbursement-platform/design-and-architecture) guide, the Stellar Disbursement Platform consists of a few services deployed together, where the Anchor Platform is one of them. +As mentioned in the [Design and Architecture](./design-and-architecture.mdx) guide, the Stellar Disbursement Platform consists of a few services deployed together, where the Anchor Platform is one of them. For that reason, there are some connection points between the two instances that need to be properly configured in order for the Stellar Disbursement Platform to work correctly. We will be covering these integration points in this guide. diff --git a/docs/stellar-disbursement-platform/deploy-the-sdp.mdx b/network/stellar-disbursement-platform/admin-guide/deploy-the-sdp.mdx similarity index 100% rename from docs/stellar-disbursement-platform/deploy-the-sdp.mdx rename to network/stellar-disbursement-platform/admin-guide/deploy-the-sdp.mdx diff --git a/docs/stellar-disbursement-platform/design-and-architecture.mdx b/network/stellar-disbursement-platform/admin-guide/design-and-architecture.mdx similarity index 96% rename from docs/stellar-disbursement-platform/design-and-architecture.mdx rename to network/stellar-disbursement-platform/admin-guide/design-and-architecture.mdx index 02cad9dac..2c9eb0821 100644 --- a/docs/stellar-disbursement-platform/design-and-architecture.mdx +++ b/network/stellar-disbursement-platform/admin-guide/design-and-architecture.mdx @@ -7,7 +7,7 @@ The Stellar Disbursement Platform consists of four services deployed together: - **Dashboard**: the user interface administrators use to initiate and track the progress of disbursements - **SDP Core Service**: the core backend service that performs several functions: - - **Dashboard API**: the API used by the front-end UI for all disbursement requests. The API is documented [here](/api/stellar-disbursement-platform) + - **Dashboard API**: the API used by the front-end UI for all disbursement requests. The API is documented [here](../resources/README.mdx) - **Messaging Service**: a recurring process that sends text messages to users prompting them to download the wallet selected for a particular disbursement and verify their phone with an OTP - **Wallet Registration UI**: a web application that collects and verifies the recipient’s OTP code and verification information via Stellar’s [SEP-24: Hosted Deposit and Withdrawal](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0024.md) protocol - **Anchor Platform Service**: the API server that the wallet uses to authenticate and initiate the recipient’s registration process through the SEP-24 deposit flow diff --git a/docs/stellar-disbursement-platform/getting-started.mdx b/network/stellar-disbursement-platform/admin-guide/getting-started.mdx similarity index 98% rename from docs/stellar-disbursement-platform/getting-started.mdx rename to network/stellar-disbursement-platform/admin-guide/getting-started.mdx index fbc10f3dc..91e546396 100644 --- a/docs/stellar-disbursement-platform/getting-started.mdx +++ b/network/stellar-disbursement-platform/admin-guide/getting-started.mdx @@ -344,7 +344,7 @@ You can add and remove assets easily in the SDP dashboard. The SDP backend handl Head to the Wallets page of the SDP dashboard to add and remove assets. You'll need the Stellar asset code and the public key of the asset issuer. -> Note: please make sure to update the appropriate configuration on the Anchor Platform side, according with the [Anchor Platform Integration Points](/docs/stellar-disbursement-platform/anchor-platform-integration-points#manual-synchronization-of-custom-assets-and-wallets) guide. +> Note: please make sure to update the appropriate configuration on the Anchor Platform side, according with the [Anchor Platform Integration Points](./anchor-platform-integration-points.mdx#manual-synchronization-of-custom-assets-and-wallets) guide. ### Countries @@ -364,7 +364,7 @@ DELETE FROM countries WHERE code = 'FRA'; ### Wallets -For a full overview on how to add wallets and how to make a wallet SDP-compatible, check out the [Making Your Wallet SDP-Ready](/docs/stellar-disbursement-platform/making-your-wallet-sdp-ready) guide. +For a full overview on how to add wallets and how to make a wallet SDP-compatible, check out the [Making Your Wallet SDP-Ready](./making-your-wallet-sdp-ready.mdx) guide. [demo-wallet]: https://demo-wallet.stellar.org [circle-sandbox]: https://login-sandbox.circle.com/ diff --git a/docs/stellar-disbursement-platform/making-your-wallet-sdp-ready.mdx b/network/stellar-disbursement-platform/admin-guide/making-your-wallet-sdp-ready.mdx similarity index 98% rename from docs/stellar-disbursement-platform/making-your-wallet-sdp-ready.mdx rename to network/stellar-disbursement-platform/admin-guide/making-your-wallet-sdp-ready.mdx index 1d9444a9e..cb82737cd 100644 --- a/docs/stellar-disbursement-platform/making-your-wallet-sdp-ready.mdx +++ b/network/stellar-disbursement-platform/admin-guide/making-your-wallet-sdp-ready.mdx @@ -57,7 +57,7 @@ var DefaultWalletsNetworkMap = WalletsNetworkMapType{ -> Note: please make sure to update the appropriate configuration on the Anchor Platform side, according with the [Anchor Platform Integration Points](/docs/stellar-disbursement-platform/anchor-platform-integration-points#manual-synchronization-of-custom-assets-and-wallets) guide. +> Note: please make sure to update the appropriate configuration on the Anchor Platform side, according with the [Anchor Platform Integration Points](./anchor-platform-integration-points.mdx#manual-synchronization-of-custom-assets-and-wallets) guide. ## Recipient Registration Experience diff --git a/docs/stellar-disbursement-platform/overview.mdx b/network/stellar-disbursement-platform/admin-guide/overview.mdx similarity index 100% rename from docs/stellar-disbursement-platform/overview.mdx rename to network/stellar-disbursement-platform/admin-guide/overview.mdx diff --git a/docs/stellar-disbursement-platform/secure-operation-manual.mdx b/network/stellar-disbursement-platform/admin-guide/secure-operation-manual.mdx similarity index 100% rename from docs/stellar-disbursement-platform/secure-operation-manual.mdx rename to network/stellar-disbursement-platform/admin-guide/secure-operation-manual.mdx diff --git a/network/stellar-disbursement-platform/admin-guide/user-interface/README.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/README.mdx new file mode 100644 index 000000000..1096857c7 --- /dev/null +++ b/network/stellar-disbursement-platform/admin-guide/user-interface/README.mdx @@ -0,0 +1,10 @@ +--- +title: User Interface +sidebar_position: 40 +--- + +import DocCardList from "@theme/DocCardList"; + +A description and walkthrough of the various parts of the SDP user interface. + + diff --git a/docs/stellar-disbursement-platform/user-interface/analytics.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/analytics.mdx similarity index 100% rename from docs/stellar-disbursement-platform/user-interface/analytics.mdx rename to network/stellar-disbursement-platform/admin-guide/user-interface/analytics.mdx diff --git a/docs/stellar-disbursement-platform/user-interface/dashboard-home.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/dashboard-home.mdx similarity index 100% rename from docs/stellar-disbursement-platform/user-interface/dashboard-home.mdx rename to network/stellar-disbursement-platform/admin-guide/user-interface/dashboard-home.mdx diff --git a/docs/stellar-disbursement-platform/user-interface/disbursements.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/disbursements.mdx similarity index 100% rename from docs/stellar-disbursement-platform/user-interface/disbursements.mdx rename to network/stellar-disbursement-platform/admin-guide/user-interface/disbursements.mdx diff --git a/docs/stellar-disbursement-platform/user-interface/payments.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/payments.mdx similarity index 100% rename from docs/stellar-disbursement-platform/user-interface/payments.mdx rename to network/stellar-disbursement-platform/admin-guide/user-interface/payments.mdx diff --git a/docs/stellar-disbursement-platform/user-interface/receivers.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/receivers.mdx similarity index 100% rename from docs/stellar-disbursement-platform/user-interface/receivers.mdx rename to network/stellar-disbursement-platform/admin-guide/user-interface/receivers.mdx diff --git a/docs/stellar-disbursement-platform/user-interface/wallets.mdx b/network/stellar-disbursement-platform/admin-guide/user-interface/wallets.mdx similarity index 100% rename from docs/stellar-disbursement-platform/user-interface/wallets.mdx rename to network/stellar-disbursement-platform/admin-guide/user-interface/wallets.mdx diff --git a/network/stellar-disbursement-platform/resources/README.mdx b/network/stellar-disbursement-platform/resources/README.mdx new file mode 100644 index 000000000..cafc03e7f --- /dev/null +++ b/network/stellar-disbursement-platform/resources/README.mdx @@ -0,0 +1,24 @@ +--- +title: Resources +sidebar_position: 20 +--- + +import {MethodTable} from "@site/src/components/MethodTable"; + +Data on the Stellar Disbursement Platform is organized according to resources. Each resource has several different endpoints. + + + +| | | +| --------------------------------------------------- | --- | +| [Authentication](./auth/README.mdx) | | +| [Disbursements](./disbursements/README.mdx) | | +| [Organization](./organization/README.mdx) | | +| [Payments](./payments/README.mdx) | | +| [Profiles](./profile/README.mdx) | | +| [Receivers](./receivers/README.mdx) | | +| [Registration](./registration/README.mdx) | | +| [Statistics](./statistics/README.mdx) | | +| [Users](./users/README.mdx) | | + + diff --git a/api/stellar-disbursement-platform/resources/auth/index.mdx b/network/stellar-disbursement-platform/resources/auth/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/auth/index.mdx rename to network/stellar-disbursement-platform/resources/auth/README.mdx diff --git a/api/stellar-disbursement-platform/resources/authenticate-mfa.api.mdx b/network/stellar-disbursement-platform/resources/authenticate-mfa.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/authenticate-mfa.api.mdx rename to network/stellar-disbursement-platform/resources/authenticate-mfa.api.mdx diff --git a/api/stellar-disbursement-platform/resources/create-asset.api.mdx b/network/stellar-disbursement-platform/resources/create-asset.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/create-asset.api.mdx rename to network/stellar-disbursement-platform/resources/create-asset.api.mdx diff --git a/api/stellar-disbursement-platform/resources/create-disbursement.api.mdx b/network/stellar-disbursement-platform/resources/create-disbursement.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/create-disbursement.api.mdx rename to network/stellar-disbursement-platform/resources/create-disbursement.api.mdx diff --git a/api/stellar-disbursement-platform/resources/create-user.api.mdx b/network/stellar-disbursement-platform/resources/create-user.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/create-user.api.mdx rename to network/stellar-disbursement-platform/resources/create-user.api.mdx diff --git a/api/stellar-disbursement-platform/resources/delete-asset.api.mdx b/network/stellar-disbursement-platform/resources/delete-asset.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/delete-asset.api.mdx rename to network/stellar-disbursement-platform/resources/delete-asset.api.mdx diff --git a/api/stellar-disbursement-platform/resources/disbursements/index.mdx b/network/stellar-disbursement-platform/resources/disbursements/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/disbursements/index.mdx rename to network/stellar-disbursement-platform/resources/disbursements/README.mdx diff --git a/api/stellar-disbursement-platform/resources/download-disbursement-instructions.api.mdx b/network/stellar-disbursement-platform/resources/download-disbursement-instructions.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/download-disbursement-instructions.api.mdx rename to network/stellar-disbursement-platform/resources/download-disbursement-instructions.api.mdx diff --git a/api/stellar-disbursement-platform/resources/forgot-password.api.mdx b/network/stellar-disbursement-platform/resources/forgot-password.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/forgot-password.api.mdx rename to network/stellar-disbursement-platform/resources/forgot-password.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-all-assets.api.mdx b/network/stellar-disbursement-platform/resources/get-all-assets.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-all-assets.api.mdx rename to network/stellar-disbursement-platform/resources/get-all-assets.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-all-countries.api.mdx b/network/stellar-disbursement-platform/resources/get-all-countries.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-all-countries.api.mdx rename to network/stellar-disbursement-platform/resources/get-all-countries.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-all-roles.api.mdx b/network/stellar-disbursement-platform/resources/get-all-roles.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-all-roles.api.mdx rename to network/stellar-disbursement-platform/resources/get-all-roles.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-all-users.api.mdx b/network/stellar-disbursement-platform/resources/get-all-users.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-all-users.api.mdx rename to network/stellar-disbursement-platform/resources/get-all-users.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-all-wallets.api.mdx b/network/stellar-disbursement-platform/resources/get-all-wallets.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-all-wallets.api.mdx rename to network/stellar-disbursement-platform/resources/get-all-wallets.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-organization-info.api.mdx b/network/stellar-disbursement-platform/resources/get-organization-info.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-organization-info.api.mdx rename to network/stellar-disbursement-platform/resources/get-organization-info.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-organization-logo.api.mdx b/network/stellar-disbursement-platform/resources/get-organization-logo.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-organization-logo.api.mdx rename to network/stellar-disbursement-platform/resources/get-organization-logo.api.mdx diff --git a/api/stellar-disbursement-platform/resources/get-profile.api.mdx b/network/stellar-disbursement-platform/resources/get-profile.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/get-profile.api.mdx rename to network/stellar-disbursement-platform/resources/get-profile.api.mdx diff --git a/api/stellar-disbursement-platform/resources/list-all-disbursement-receivers.api.mdx b/network/stellar-disbursement-platform/resources/list-all-disbursement-receivers.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/list-all-disbursement-receivers.api.mdx rename to network/stellar-disbursement-platform/resources/list-all-disbursement-receivers.api.mdx diff --git a/api/stellar-disbursement-platform/resources/list-all-disbursements.api.mdx b/network/stellar-disbursement-platform/resources/list-all-disbursements.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/list-all-disbursements.api.mdx rename to network/stellar-disbursement-platform/resources/list-all-disbursements.api.mdx diff --git a/api/stellar-disbursement-platform/resources/list-all-payments.api.mdx b/network/stellar-disbursement-platform/resources/list-all-payments.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/list-all-payments.api.mdx rename to network/stellar-disbursement-platform/resources/list-all-payments.api.mdx diff --git a/api/stellar-disbursement-platform/resources/list-all-receivers.api.mdx b/network/stellar-disbursement-platform/resources/list-all-receivers.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/list-all-receivers.api.mdx rename to network/stellar-disbursement-platform/resources/list-all-receivers.api.mdx diff --git a/api/stellar-disbursement-platform/resources/log-in.api.mdx b/network/stellar-disbursement-platform/resources/log-in.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/log-in.api.mdx rename to network/stellar-disbursement-platform/resources/log-in.api.mdx diff --git a/api/stellar-disbursement-platform/resources/organization/index.mdx b/network/stellar-disbursement-platform/resources/organization/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/organization/index.mdx rename to network/stellar-disbursement-platform/resources/organization/README.mdx diff --git a/api/stellar-disbursement-platform/resources/payments/index.mdx b/network/stellar-disbursement-platform/resources/payments/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/payments/index.mdx rename to network/stellar-disbursement-platform/resources/payments/README.mdx diff --git a/api/stellar-disbursement-platform/resources/profile/index.mdx b/network/stellar-disbursement-platform/resources/profile/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/profile/index.mdx rename to network/stellar-disbursement-platform/resources/profile/README.mdx diff --git a/api/stellar-disbursement-platform/resources/provide-signed-challenge-transaction.api.mdx b/network/stellar-disbursement-platform/resources/provide-signed-challenge-transaction.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/provide-signed-challenge-transaction.api.mdx rename to network/stellar-disbursement-platform/resources/provide-signed-challenge-transaction.api.mdx diff --git a/api/stellar-disbursement-platform/resources/receivers/index.mdx b/network/stellar-disbursement-platform/resources/receivers/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/receivers/index.mdx rename to network/stellar-disbursement-platform/resources/receivers/README.mdx diff --git a/api/stellar-disbursement-platform/resources/refresh-token.api.mdx b/network/stellar-disbursement-platform/resources/refresh-token.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/refresh-token.api.mdx rename to network/stellar-disbursement-platform/resources/refresh-token.api.mdx diff --git a/api/stellar-disbursement-platform/resources/registration/index.mdx b/network/stellar-disbursement-platform/resources/registration/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/registration/index.mdx rename to network/stellar-disbursement-platform/resources/registration/README.mdx diff --git a/api/stellar-disbursement-platform/resources/request-challenge-transaction.api.mdx b/network/stellar-disbursement-platform/resources/request-challenge-transaction.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/request-challenge-transaction.api.mdx rename to network/stellar-disbursement-platform/resources/request-challenge-transaction.api.mdx diff --git a/api/stellar-disbursement-platform/resources/request-registration-url.api.mdx b/network/stellar-disbursement-platform/resources/request-registration-url.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/request-registration-url.api.mdx rename to network/stellar-disbursement-platform/resources/request-registration-url.api.mdx diff --git a/api/stellar-disbursement-platform/resources/reset-password.api.mdx b/network/stellar-disbursement-platform/resources/reset-password.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/reset-password.api.mdx rename to network/stellar-disbursement-platform/resources/reset-password.api.mdx diff --git a/api/stellar-disbursement-platform/resources/retrieve-a-disbursement.api.mdx b/network/stellar-disbursement-platform/resources/retrieve-a-disbursement.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/retrieve-a-disbursement.api.mdx rename to network/stellar-disbursement-platform/resources/retrieve-a-disbursement.api.mdx diff --git a/api/stellar-disbursement-platform/resources/retrieve-a-payment.api.mdx b/network/stellar-disbursement-platform/resources/retrieve-a-payment.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/retrieve-a-payment.api.mdx rename to network/stellar-disbursement-platform/resources/retrieve-a-payment.api.mdx diff --git a/api/stellar-disbursement-platform/resources/retrieve-a-receiver.api.mdx b/network/stellar-disbursement-platform/resources/retrieve-a-receiver.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/retrieve-a-receiver.api.mdx rename to network/stellar-disbursement-platform/resources/retrieve-a-receiver.api.mdx diff --git a/api/stellar-disbursement-platform/resources/retrieve-all-statistics.api.mdx b/network/stellar-disbursement-platform/resources/retrieve-all-statistics.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/retrieve-all-statistics.api.mdx rename to network/stellar-disbursement-platform/resources/retrieve-all-statistics.api.mdx diff --git a/api/stellar-disbursement-platform/resources/retrieve-disbursement-statistics.api.mdx b/network/stellar-disbursement-platform/resources/retrieve-disbursement-statistics.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/retrieve-disbursement-statistics.api.mdx rename to network/stellar-disbursement-platform/resources/retrieve-disbursement-statistics.api.mdx diff --git a/api/stellar-disbursement-platform/resources/retrieve-stellar-info-file.api.mdx b/network/stellar-disbursement-platform/resources/retrieve-stellar-info-file.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/retrieve-stellar-info-file.api.mdx rename to network/stellar-disbursement-platform/resources/retrieve-stellar-info-file.api.mdx diff --git a/api/stellar-disbursement-platform/resources/send-one-time-passcode.api.mdx b/network/stellar-disbursement-platform/resources/send-one-time-passcode.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/send-one-time-passcode.api.mdx rename to network/stellar-disbursement-platform/resources/send-one-time-passcode.api.mdx diff --git a/api/stellar-disbursement-platform/resources/sidebar.js b/network/stellar-disbursement-platform/resources/sidebar.js similarity index 100% rename from api/stellar-disbursement-platform/resources/sidebar.js rename to network/stellar-disbursement-platform/resources/sidebar.js diff --git a/api/stellar-disbursement-platform/resources/start-wallet-registration.api.mdx b/network/stellar-disbursement-platform/resources/start-wallet-registration.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/start-wallet-registration.api.mdx rename to network/stellar-disbursement-platform/resources/start-wallet-registration.api.mdx diff --git a/api/stellar-disbursement-platform/resources/statistics/index.mdx b/network/stellar-disbursement-platform/resources/statistics/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/statistics/index.mdx rename to network/stellar-disbursement-platform/resources/statistics/README.mdx diff --git a/api/stellar-disbursement-platform/resources/update-a-disbursement-status.api.mdx b/network/stellar-disbursement-platform/resources/update-a-disbursement-status.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/update-a-disbursement-status.api.mdx rename to network/stellar-disbursement-platform/resources/update-a-disbursement-status.api.mdx diff --git a/api/stellar-disbursement-platform/resources/update-a-receiver.api.mdx b/network/stellar-disbursement-platform/resources/update-a-receiver.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/update-a-receiver.api.mdx rename to network/stellar-disbursement-platform/resources/update-a-receiver.api.mdx diff --git a/api/stellar-disbursement-platform/resources/update-organization-profile.api.mdx b/network/stellar-disbursement-platform/resources/update-organization-profile.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/update-organization-profile.api.mdx rename to network/stellar-disbursement-platform/resources/update-organization-profile.api.mdx diff --git a/api/stellar-disbursement-platform/resources/update-user-activation-status.api.mdx b/network/stellar-disbursement-platform/resources/update-user-activation-status.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/update-user-activation-status.api.mdx rename to network/stellar-disbursement-platform/resources/update-user-activation-status.api.mdx diff --git a/api/stellar-disbursement-platform/resources/update-user-profile.api.mdx b/network/stellar-disbursement-platform/resources/update-user-profile.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/update-user-profile.api.mdx rename to network/stellar-disbursement-platform/resources/update-user-profile.api.mdx diff --git a/api/stellar-disbursement-platform/resources/update-user-role.api.mdx b/network/stellar-disbursement-platform/resources/update-user-role.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/update-user-role.api.mdx rename to network/stellar-disbursement-platform/resources/update-user-role.api.mdx diff --git a/api/stellar-disbursement-platform/resources/upload-disbursement-instructions.api.mdx b/network/stellar-disbursement-platform/resources/upload-disbursement-instructions.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/upload-disbursement-instructions.api.mdx rename to network/stellar-disbursement-platform/resources/upload-disbursement-instructions.api.mdx diff --git a/api/stellar-disbursement-platform/resources/users/index.mdx b/network/stellar-disbursement-platform/resources/users/README.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/users/index.mdx rename to network/stellar-disbursement-platform/resources/users/README.mdx diff --git a/api/stellar-disbursement-platform/resources/verify-receiver-registration.api.mdx b/network/stellar-disbursement-platform/resources/verify-receiver-registration.api.mdx similarity index 100% rename from api/stellar-disbursement-platform/resources/verify-receiver-registration.api.mdx rename to network/stellar-disbursement-platform/resources/verify-receiver-registration.api.mdx diff --git a/nginx/includes/redirects.conf b/nginx/includes/redirects.conf index 096a7642d..09efaa407 100644 --- a/nginx/includes/redirects.conf +++ b/nginx/includes/redirects.conf @@ -30,7 +30,20 @@ rewrite ^/docs/tutorials/handling-errors$ "/docs/encyclopedia/error-handling" pe rewrite ^/docs/tutorials/securing-projects$ "/docs/encyclopedia/securing-web-based-projects" permanent; rewrite ^/docs/tutorials/moneygram-access-integration-guide$ "/docs/building-apps/moneygram-access-integration-guide" permanent; rewrite ^/docs/fundamentals-and-concepts/testnet-and-pubnet$ "/docs/fundamentals-and-concepts/networks" permanent; +rewrite ^/api/?$ "/network" permanent; # moving /api/* locations to /api/horizon (leaving /api intact for the "overview page") -rewrite ^/api(/(?!horizon|(anchor|stellar-disbursement)-platform).+)$ /api/horizon$1 permanent; +rewrite ^/api(/(?!horizon|(anchor|stellar-disbursement)-platform).+)$ "/network/horizon$1" permanent; +rewrite ^/api/(horizon|(anchor|stellar-disbursement)-platform)(.+)$ "/network/$1$2" permanent; # moving /ap_api locations to /api/anchor-platform -rewrite ^/ap_api(/.*)?$ /api/anchor-platform$1 permanent; +rewrite ^/ap_api(/.*)?$ "/network/anchor-platform$1" permanent; +rewrite ^/docs/category/anchor-platform$ "/network/anchor-platform/admin-guide" permanent; +rewrite ^/docs/anchoring-assets/overview$ "/docs/encyclopedia/anchors" permanent; +rewrite ^/docs/category/use-the-stellar-disbursement-platform$ "/network/stellar-disbursement-platform/admin-guide" permanent; +rewrite ^/docs/stellar-disbursement-platform(.*)$ "/network/stellar-disbursement-platform/admin-guide$1" permanent; +rewrite ^/docs/run-platform-server/?$ "/network/horizon/admin-guide/overview" permanent; +rewrite ^/docs/run-platform-server(.*)$ "/network/horizon/admin-guide$1" permanent; +rewrite ^/docs/run-core-node/?$ "/network/core-node" permanent; +rewrite ^/docs/run-core-node(.*)$ "/network/core-node/admin-guide$1" permanent; +rewrite ^/docs/category/access-historical-data$ "/network/hubble" permanent; +rewrite ^/docs/accessing-data/overview$ "/network/hubble" permanent; +rewrite ^/docs/accessing-data(.*)$ "/network/hubble$1" permanent; diff --git a/openrpc/README.md b/openrpc/README.md new file mode 100644 index 000000000..72ccd712e --- /dev/null +++ b/openrpc/README.md @@ -0,0 +1,138 @@ +# Soroban RPC API Specification + +## Table of Contents + +- [JSON-RPC](#json-rpc) + - [Building](#building) + - [Testing](#testing) + - [JSON `$ref`s](#json-refs) +- [Keeping Things Up-to-Date](#keeping-things-up-to-date) + - [Methods (`/openrpc/src/methods/*`)](#methods-openrpcsrcmethods) + - [Content Descriptors (`/openrpc/src/contentDescriptors/*`)](#content-descriptors-openrpcsrccontentdescriptors) + - [Schemas (`/openrpc/src/schemas/*`)](#schemas-openrpcsrcschemas) + - [Examples (`/openrpc/src/examples/*`)](#examples-openrpcsrcexamples) + - [Example Pairings (`/openrpc/src/examplePairingObjects/*`)](#example-pairings-openrpcsrcexamplepairingobjects) + +## JSON-RPC + +This is a specification of the API presented by Soroban RPC. + +### Building + +> _Note:_ The build process will provide an output file at +> `/static/openrpc.json`. This file should be included in any commits. However, +> this build process is re-run as part of our docusaurus deployment. So, it's +> necessary to update the actual source JSON files, and not just this built file +> as it will be overwritten at deploy time. + +The specification is split into multiple files to improve readability. The +complete spec can be compiled into a single document as follows. (Run this +command from the root `soroban-docs` directory.) + +```bash +yarn rpcspec:build +# Build successful. +``` + +This will output the file to `/static/openrpc.json`. This file will have all +schema `$ref`s resolved. + +### Testing + +We have included a script which will test and validate the generated +specification file. + +```bash +yarn rpcspec:validate +# OpenRPC spec validated successfully. +``` + +### JSON `$ref`s + +These files make extensive use of `$ref` objects for improved readability and +maintainability. In the separate files, the references don't mean much, but when +things are generated they'll be resolved. If you are going to reference +something in the specification, you will need to use the following format: +`#/components/{schemas,examples,etc.}/NameOfComponentToReference`. + +The items broken out into objects that will be referenced are not held +individually in their own files. Instead, they are grouped into similar and +related files. For example: `/src/examples/Transactions.json` hold several +`example` components that are related to transactions, such as transaction +hashes, results from the `getTransaction` or `sendTransaction` methods, +transactions parameters that were sent using the `sendTransaction` method, etc. + +## Keeping Things Up-to-Date + +**Don't making any changes to `openrpc.json` or `refs-openrpc.json`!** Any +changes you make there, will not be actually reflected in the generated +specification file. Instead, any changes should be made in the files contained +in the `/openrpc/src` directory. + +This directory follows a structure similar to the schema defined in the OpenRPC +specification. Here are the pieces you'll need to know about: + +### Methods (`/openrpc/src/methods/*`) + +This collection of JSON files define the [method objects] that will go into the +generated specification file. The methods can be considered the container that +will ultimately hold _all_ of the details about how the method works (parameter +types, return types, examples, etc.). The following properties are required in +the method object: + +- `name` (string) - The canonical name for the method. The name MUST be unique + within the methods array +- `params` (list) - A list of parameters that are applicable for this method + +### Content Descriptors (`/openrpc/src/contentDescriptors/*`) + +This collection of JSON files define the [contentDescriptor objects] that will +go into the generated specification file. A content descriptor is a reusable way +of describing either parameters or results. (Though, I've found they're best +used as items in a method's `params` list). The following property are required +in the content descriptor object: + +- `name` (string) - Name of the content that is being described. If this object + is defining a parameter, the `name` field will define the parameter's key +- `schema` (object) - A schema that describes the content + +### Schemas (`/openrpc/src/schemas/*`) + +This collection of JSON files define the [schema objects] that will go into the +generated specification file. These schemas allow us to define input and output +data types. These schemas **MUST** follow the [JSON Schema Specification 7] + +### Examples (`/openrpc/src/examples/*`) + +This collection of JSON files define the [example objects] that will go into the +generated specification file. These objects define an example that is consistent +and matches the `schema` of a given content descriptor. These example objects +can act as either a parameter or result. The `value` property of the example +object allows us to embed a literal example of what the schema can look like. + +### Example Pairings (`/openrpc/src/examplePairingObjects/*`) + +This collection of JSON files define the [example pairing objects] that will go +into the generated specification file. The example pairing objects make up a +complete example request to the Soroban RPC service. This is where you can +specify a set of `params` that were supplied in the request, as well as the +value(s) returned in the `result` from the node. The following properties are +required in the example pairing objects: + +- `name` (string) - Name for the example pairing +- `params` (list) - A list of example parameters (or `$ref`s to example objects) +- `result` (example object) - Example result received from the node + +> _Note:_ The `result` property is not technically _required_ by the open-rpc +> specification if the method is to be represented as a notification. However, +> Soroban RPC doesn't make use of any methods as notifications, so we've listed +> it as required here. + +[method objects]: +[contentDescriptor objects]: + +[schema objects]: +[JSON Schema Specification 7]: + +[example objects]: +[example pairing objects]: diff --git a/openrpc/scripts/build.mjs b/openrpc/scripts/build.mjs new file mode 100644 index 000000000..844e0d8cc --- /dev/null +++ b/openrpc/scripts/build.mjs @@ -0,0 +1,137 @@ +import fs from "fs"; +import mergeAllOf from "json-schema-merge-allof"; +import { dereferenceDocument } from "@open-rpc/schema-utils-js"; +import defaultResolver from "@json-schema-tools/reference-resolver"; + +function sortByMethodName(methods) { + return methods.slice().sort((a, b) => { + if (a['name'] > b['name']) { + return 1; + } else if (a['name'] < b['name']) { + return -1; + } else { + return 0; + } + }) +} + +let methods = []; +let methodsBase = "openrpc/src/methods/"; +let methodFiles = fs.readdirSync(methodsBase); +methodFiles.forEach(file => { + let raw = fs.readFileSync(methodsBase + file); + let parsed = JSON.parse(raw); + methods = [ + ...methods, + parsed, + ]; +}); + +let contentDescriptors = {}; +let cdBase = "openrpc/src/contentDescriptors/"; +let cdFiles = fs.readdirSync(cdBase); +cdFiles.forEach(file => { + let raw = fs.readFileSync(cdBase + file); + let parsed = JSON.parse(raw); + contentDescriptors = { + ...contentDescriptors, + ...parsed, + }; +}); + +let schemas = {}; +let schemasBase = "openrpc/src/schemas/" +let schemaFiles = fs.readdirSync(schemasBase); +schemaFiles.forEach(file => { + let raw = fs.readFileSync(schemasBase + file); + let parsed = JSON.parse(raw); + schemas = { + ...schemas, + ...parsed, + }; +}); + +let examples = {} +let examplesBase = "openrpc/src/examples/" +let examplesFiles = fs.readdirSync(examplesBase) +examplesFiles.forEach(file => { + let raw = fs.readFileSync(examplesBase + file) + let parsed = JSON.parse(raw) + examples = { + ...examples, + ...parsed, + } +}) + +let examplePairingObjects = {} +let epoBase = "openrpc/src/examplePairingObjects/" +let epoFiles = fs.readdirSync(epoBase) +epoFiles.forEach(file => { + let raw = fs.readFileSync(epoBase + file) + let parsed = JSON.parse(raw) + examplePairingObjects = { + ...examplePairingObjects, + ...parsed, + } +}) + +const doc = { + openrpc: "1.2.4", + info: { + title: "Soroban RPC", + description: "Soroban-RPC allows you to communicate directly with Soroban via a JSON RPC interface.", + termsOfService: "https://stellar.org/terms-of-service", + contact: { + name: "Stellar Development Foundation", + url: "https://stellar.org/connect", + email: "hello@stellar.org" + }, + license: { + name: "Apache 2.0", + url: "https://www.apache.org/licenses/LICENSE-2.0.html" + }, + version: "20.1.0" + }, + servers: [ + { + name: "Testnet", + url: "https://soroban-testnet.stellar.org:443", + summary: "Publicly available RPC server maintained by SDF, operating on the Testnet test network.", + description: "Testnet is meant to be a stable network that runs a production (or near-production) version of the Stellar network." + }, + { + name: "Futurenet", + url: "https://rpc-futurenet.stellar.org:443", + summary: "Publicly available RPC server maintained by SDF, operating on the Futurenet test network.", + description: "Futurenet is meant to be a bleeding-edge, experimental network that runs an early, test version of the Stellar network." + } + ], + methods: sortByMethodName(methods), + components: { + contentDescriptors: contentDescriptors, + schemas: schemas, + examples: examples, + examplePairingObjects: examplePairingObjects, + }, +} + +fs.writeFileSync('openrpc/refs-openrpc.json', JSON.stringify(doc, null, 2)); + +let spec = await dereferenceDocument(doc, defaultResolver.default) + +spec.components = {}; + +// Merge instances of `allOf` in methods. +for (var i=0; i < spec.methods.length; i++) { + for (var j=0; j < spec.methods[i].params.length; j++) { + spec.methods[i].params[j].schema = mergeAllOf(spec.methods[i].params[j].schema); + } + spec.methods[i].result.schema = mergeAllOf(spec.methods[i].result.schema); +} + +let data = JSON.stringify(spec, null, 2); +fs.writeFileSync('openrpc/openrpc.json', data); +fs.writeFileSync('static/openrpc.json', data); + +console.log(); +console.log("Build successful."); diff --git a/openrpc/scripts/validate.mjs b/openrpc/scripts/validate.mjs new file mode 100644 index 000000000..d17ec4d88 --- /dev/null +++ b/openrpc/scripts/validate.mjs @@ -0,0 +1,27 @@ +import fs from "fs"; +import { + parseOpenRPCDocument, + validateOpenRPCDocument +} from "@open-rpc/schema-utils-js"; + +let rawdata = fs.readFileSync("openrpc/openrpc.json"); +let openrpc = JSON.parse(rawdata); + +const error = validateOpenRPCDocument(openrpc); +if (error != true) { + console.log(error.name); + console.log(error.message); + process.exit(1); +} + +try { + await Promise.resolve(parseOpenRPCDocument(openrpc)); +} catch(e) { + console.log(e.name); + let end = e.message.indexOf("schema in question"); + let msg = e.message.substring(0, end); + console.log(msg); + process.exit(1); +} + +console.log("OpenRPC spec validated successfully."); diff --git a/openrpc/src/contentDescriptors/EventFilters.json b/openrpc/src/contentDescriptors/EventFilters.json new file mode 100644 index 000000000..cfd59f48d --- /dev/null +++ b/openrpc/src/contentDescriptors/EventFilters.json @@ -0,0 +1,10 @@ +{ + "EventFilters": { + "name": "filters", + "summary": "filters to narrow events search", + "description": "List of filters for the returned events. Events matching any of the filters are included. To match a filter, an event must match both a contractId and a topic. Maximum 5 filters are allowed per request.", + "schema": { + "$ref": "#/components/schemas/EventFilters" + } + } +} diff --git a/openrpc/src/contentDescriptors/LedgerKeys.json b/openrpc/src/contentDescriptors/LedgerKeys.json new file mode 100644 index 000000000..f93faf97c --- /dev/null +++ b/openrpc/src/contentDescriptors/LedgerKeys.json @@ -0,0 +1,11 @@ +{ + "LedgerKeys": { + "name": "keys", + "summary": "array of ledger keys", + "description": "Array containing the keys of the ledger entries you wish to retrieve. (an array of serialized base64 strings)", + "required": true, + "schema": { + "$ref": "#/components/schemas/LedgerKeys" + } + } +} diff --git a/openrpc/src/contentDescriptors/Pagination.json b/openrpc/src/contentDescriptors/Pagination.json new file mode 100644 index 000000000..94b1872a8 --- /dev/null +++ b/openrpc/src/contentDescriptors/Pagination.json @@ -0,0 +1,11 @@ +{ + "Pagination": { + "name": "pagination", + "summary": "pagination options", + "description": "Pagination in soroban-rpc is similar to pagination in Horizon. See [Pagination](https://developers.stellar.org/network/soroban-rpc/pagination).", + "required": false, + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } +} diff --git a/openrpc/src/contentDescriptors/ResourceConfig.json b/openrpc/src/contentDescriptors/ResourceConfig.json new file mode 100644 index 000000000..85ff07dc0 --- /dev/null +++ b/openrpc/src/contentDescriptors/ResourceConfig.json @@ -0,0 +1,11 @@ +{ + "ResourceConfig": { + "name": "resourceConfig", + "summary": "configuration for how resources will be calculated", + "description": "Contains configuration for how resources will be calculated when simulating transactions.", + "required": false, + "schema": { + "$ref": "#/components/schemas/ResourceConfig" + } + } +} diff --git a/openrpc/src/contentDescriptors/StartLedger.json b/openrpc/src/contentDescriptors/StartLedger.json new file mode 100644 index 000000000..9da7c4b87 --- /dev/null +++ b/openrpc/src/contentDescriptors/StartLedger.json @@ -0,0 +1,11 @@ +{ + "StartLedger": { + "name": "startLedger", + "summary": "ledger to begin searching from", + "description": "Ledger sequence number to fetch events after (inclusive). This method will return an error if `startLedger` is less than the oldest ledger stored in this node, or greater than the latest ledger seen by this node. If a cursor is included in the request, `startLedger` must be omitted.", + "required": true, + "schema": { + "$ref": "#/components/schemas/LedgerSequence" + } + } +} diff --git a/openrpc/src/contentDescriptors/Transaction.json b/openrpc/src/contentDescriptors/Transaction.json new file mode 100644 index 000000000..c42baaae9 --- /dev/null +++ b/openrpc/src/contentDescriptors/Transaction.json @@ -0,0 +1,20 @@ +{ + "SignedTransaction": { + "name": "transaction", + "summary": "transaction to be submitted to the network", + "description": "The signed transaction to broadcast for inclusion in a ledger.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Transaction" + } + }, + "UnsignedTransaction": { + "name": "transaction", + "summary": "transaction to be simulated", + "description": "In order for the RPC server to successfully simulate a Stellar transaction, the provided transaction must contain only a single operation of the type `invokeHostFunction`.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Transaction" + } + } +} diff --git a/openrpc/src/contentDescriptors/TransactionHash.json b/openrpc/src/contentDescriptors/TransactionHash.json new file mode 100644 index 000000000..90cc538cd --- /dev/null +++ b/openrpc/src/contentDescriptors/TransactionHash.json @@ -0,0 +1,11 @@ +{ + "TransactionHash": { + "name": "hash", + "summary": "transaction hash to query", + "description": "Transaction hash to query as a hex-encoded string. This transaction hash should correspond to transaction that has been previously submitted to the network.", + "required": true, + "schema": { + "$ref": "#/components/schemas/TransactionHash" + } + } +} diff --git a/openrpc/src/examplePairingObjects/EventsPairs.json b/openrpc/src/examplePairingObjects/EventsPairs.json new file mode 100644 index 000000000..56b0dac95 --- /dev/null +++ b/openrpc/src/examplePairingObjects/EventsPairs.json @@ -0,0 +1,25 @@ +{ + "NativeTransferEventsExample": { + "name": "Native XLM Transfer Events", + "description": "Example request to the `getEvents` method, filtering for `transfer` events for native Lumens, and limiting the number of returned events to 2.", + "params": [ + { "$ref": "#/components/examples/StartLedger" }, + { "$ref": "#/components/examples/NativeTransfersFilter" }, + { "$ref": "#/components/examples/PaginationLimitTwo" } + ], + "result": { + "$ref": "#/components/examples/TwoNativeTransferEvents" + } + }, + "AnyEventsExample": { + "name": "All Events", + "description": "Example request to the `getEvents` method, filtering for all events of all types for any and all contracts.", + "params": [ + { "$ref": "#/components/examples/StartLedger" }, + { "$ref": "#/components/examples/PaginationLimitTwo" } + ], + "result": { + "$ref": "#/components/examples/AnyTwoEvents" + } + } +} diff --git a/openrpc/src/examplePairingObjects/GetTransactionPairs.json b/openrpc/src/examplePairingObjects/GetTransactionPairs.json new file mode 100644 index 000000000..8e35a604f --- /dev/null +++ b/openrpc/src/examplePairingObjects/GetTransactionPairs.json @@ -0,0 +1,32 @@ +{ + "SuccessfulTransaction": { + "name": "Successful Transaction", + "description": "Query for a transaction hash that returns `SUCCESS` from the RPC node.", + "params": [ + { "$ref": "#/components/examples/RecentTransactionHash" } + ], + "result": { + "$ref": "#/components/examples/SuccessTransactionResult" + } + }, + "NotFoundTransaction": { + "name": "Not Found Transaction", + "description": "Query for a transaction hash that returns `NOT_FOUND` from the RPC node.", + "params": [ + { "$ref": "#/components/examples/TooOldTransactionHash" } + ], + "result": { + "$ref": "#/components/examples/NotFoundTransactionResult" + } + }, + "FailedTransaction": { + "name": "Failed Transaction", + "description": "Query for a transaction hash that returns `FAILED` from the RPC node.", + "params": [ + { "$ref": "#/components/examples/FailedTransactionHash" } + ], + "result": { + "$ref": "#/components/examples/FailedTransactionResult" + } + } +} diff --git a/openrpc/src/examplePairingObjects/LedgerEntriesPairs.json b/openrpc/src/examplePairingObjects/LedgerEntriesPairs.json new file mode 100644 index 000000000..f66d45e8b --- /dev/null +++ b/openrpc/src/examplePairingObjects/LedgerEntriesPairs.json @@ -0,0 +1,32 @@ +{ + "CounterLedgerEntryExample": { + "name": "Retrieve a Contract's Counter Entry for an Address", + "description": "Example request to the `getNetwork` method for a `Counter(Address)` ledger entry.", + "params": [ + { "$ref": "#/components/examples/LedgerKeyCounterAddress" } + ], + "result": { + "$ref": "#/components/examples/LedgerEntryCounterAddressResult" + } + }, + "ContractBalanceLedgerEntryExample": { + "name": "Retrieve a Token's Balance Entry for Contract", + "description": "Example request to the `getNetwork` method for a SAC balance ledger entry belonging to a contract.", + "params": [ + { "$ref": "#/components/examples/LedgerKeyContractBalance" } + ], + "result": { + "$ref": "#/components/examples/LedgerEntryContractBalanceResult" + } + }, + "CombinedLedgerEntryExample": { + "name": "Retrieve Multiple Ledger Entries from Different Contracts.", + "description": "Example request to the `getNetwork` method for a `Counter(Address)` ledger entry and a SAC balance ledger entry.", + "params": [ + { "$ref": "#/components/examples/CombinedLedgerKeys" } + ], + "result": { + "$ref": "#/components/examples/CombinedLedgerEntryResult" + } + } +} diff --git a/openrpc/src/examplePairingObjects/NetworkPairs.json b/openrpc/src/examplePairingObjects/NetworkPairs.json new file mode 100644 index 000000000..4f452ff2f --- /dev/null +++ b/openrpc/src/examplePairingObjects/NetworkPairs.json @@ -0,0 +1,28 @@ +{ + "TestnetNetworkConfig": { + "name": "Testnet Network Configuration", + "description": "Example request to the `getNetwork` method for a node connected to the Stellar Testnet network.", + "params": [], + "result": { + "name": "getNetworkResult", + "value": { + "friendbotUrl": "https://friendbot-testnet.stellar.org/", + "passphrase": "Test SDF Network ; September 2015", + "protocolVersion": 20 + } + } + }, + "FuturenetNetworkConfig": { + "name": "Futurenet Network Configuration", + "description": "Example request to the `getNetwork` method for a node connected to the Stellar Futurenet network.", + "params": [], + "result": { + "name": "getNetworkResult", + "value": { + "friendbotUrl": "https://friendbot-futurenet.stellar.org/", + "passphrase": "Test SDF Future Network ; October 2022", + "protocolVersion": 20 + } + } + } +} diff --git a/openrpc/src/examplePairingObjects/SendTransactionPairs.json b/openrpc/src/examplePairingObjects/SendTransactionPairs.json new file mode 100644 index 000000000..5c22066b6 --- /dev/null +++ b/openrpc/src/examplePairingObjects/SendTransactionPairs.json @@ -0,0 +1,42 @@ +{ + "PendingTransaction": { + "name": "Pending Transaction", + "description": "Submitting a valid transaction using the `sendTransaction` method, resulting in a `PENDING` status.", + "params": [ + { "$ref": "#/components/examples/ValidSentTransaction" } + ], + "result": { + "$ref": "#/components/examples/PendingTransactionResult" + } + }, + "DuplicateTransaction": { + "name": "Duplicate Transaction", + "description": "Submitting a valid, yet duplicate transaction using the `sendTransaction` method, resulting in a `DUPLICATE` status.", + "params": [ + { "$ref": "#/components/examples/ValidSentTransaction" } + ], + "result": { + "$ref": "#/components/examples/DuplicateTransactionResult" + } + }, + "ErrorTransaction": { + "name": "Error Transaction", + "description": "Submitting an invalid transaction using the `sendTransaction` method, resulting in an `ERROR` status.", + "params": [ + { "$ref": "#/components/examples/InvalidSentTransaction" } + ], + "result": { + "$ref": "#/components/examples/ErrorTransactionResult" + } + }, + "TryAgainLaterTransaction": { + "name": "Try Again Later Transaction", + "description": "Submitting a valid transaction before an account's previously submitted transaction has settled using the `sendTransaction` method, resulting in a `TRY_AGAIN_LATER` status.", + "params": [ + { "$ref": "#/components/examples/ValidSentTransaction" } + ], + "result": { + "$ref": "#/components/examples/TryAgainLaterTransactionResult" + } + } +} diff --git a/openrpc/src/examplePairingObjects/SimulationPairs.json b/openrpc/src/examplePairingObjects/SimulationPairs.json new file mode 100644 index 000000000..3df5d03ee --- /dev/null +++ b/openrpc/src/examplePairingObjects/SimulationPairs.json @@ -0,0 +1,24 @@ +{ + "SuccessfulTransactionSimulation": { + "name": "Successful Transaction Simulation", + "description": "Transaction simulation that succeeds and returns the necessary information to prepare and submit the transaction.", + "params": [ + { "$ref": "#/components/examples/ValidContractTransaction" }, + { "$ref": "#/components/examples/DefaultResourceConfig" } + ], + "result": { + "$ref": "#/components/examples/SuccessfulSimulationResult" + } + }, + "FailedTransactionSimulation": { + "name": "Failed Transaction Simulation", + "description": "Transaction simulation that fails due to the contract invocation being constructed with an improper number of arguments.", + "params": [ + { "$ref": "#/components/examples/InvalidContractTransaction" }, + { "$ref": "#/components/examples/DefaultResourceConfig" } + ], + "result": { + "$ref": "#/components/examples/FailedSimulationResult" + } + } +} diff --git a/openrpc/src/examples/Events.json b/openrpc/src/examples/Events.json new file mode 100644 index 000000000..1422f07d8 --- /dev/null +++ b/openrpc/src/examples/Events.json @@ -0,0 +1,113 @@ +{ + "StartLedger": { + "name": "startLedger", + "value": 2530000 + }, + "NativeTransfersFilter": { + "name": "filters", + "value": [ + { + "type": "contract", + "contractIds": [ "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC" ], + "topics": [ + [ "AAAADwAAAAh0cmFuc2Zlcg==", "*", "*", "*" ] + ] + } + ] + }, + "EmptyFilters": { + "name": "filters", + "value": [] + }, + "PaginationLimitTwo": { + "name": "pagination", + "value": { + "limit": 2 + } + }, + "TwoNativeTransferEvents": { + "name": "getEventsResult", + "value": { + "events": [ + { + "type": "contract", + "ledger": 2531021, + "ledgerClosedAt": "2023-11-15T08:58:25Z", + "contractId": "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC", + "id": "0010870652420501504-0000000004", + "pagingToken": "0010870652420501504-0000000004", + "topic": [ + "AAAADwAAAAh0cmFuc2Zlcg==", + "AAAAEgAAAAAAAAAAjt5DlR5mhneFx/1Lct0ToW555OFzg/Y28++28cJXU+I=", + "AAAAEgAAAAAAAAAA33Fu/fnobL8/u8tyLCIZzpMXbsRWRBlfAuEv7fBvTwM=", + "AAAADgAAAAZuYXRpdmUAAA==" + ], + "value": { + "xdr": "AAAACgAAAAAAAAAAAAAAAAAAAJY=" + }, + "inSuccessfulContractCall": true + }, + { + "type": "contract", + "ledger": 2531273, + "ledgerClosedAt": "2023-11-15T09:20:38Z", + "contractId": "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC", + "id": "0010871734752280576-0000000004", + "pagingToken": "0010871734752280576-0000000004", + "topic": [ + "AAAADwAAAAh0cmFuc2Zlcg==", + "AAAAEgAAAAAAAAAA+YQ+FM83vUUwQ6P3gKCMVTyC3/jO+DERXTWJDKEjagU=", + "AAAAEgAAAAAAAAAAwl0UMLLKYqMEedoowz8VnwbRywjcKEeQegoMmU6C9/0=", + "AAAADgAAAAZuYXRpdmUAAA==" + ], + "value": { + "xdr": "AAAACgAAAAAAAAAAAAAAAAAAAJY=" + }, + "inSuccessfulContractCall": true + } + ], + "latestLedger": 2539388 + } + }, + "AnyTwoEvents": { + "name": "getEventsResult", + "value": { + "events": [ + { + "type": "diagnostic", + "ledger": 2530001, + "ledgerClosedAt": "2023-11-15T07:29:05Z", + "contractId": "", + "id": "0010866271553875968-0000000000", + "pagingToken": "0010866271553875968-0000000000", + "topic": [ + "AAAADwAAAAdmbl9jYWxsAA==", + "AAAADQAAACCGE7Aj5EvXxmmTtyojmlFF/Qv3qMTyL7THd6SG4GHZxQ==", + "AAAADwAAABFzZXRfY3VycmVuY3lfcmF0ZQAAAA==" + ], + "value": { + "xdr": "AAAAEAAAAAEAAAACAAAADwAAAAN1c2QAAAAACQAAAAAAAAAAAAAAAAASHQg=" + }, + "inSuccessfulContractCall": true + }, + { + "type": "diagnostic", + "ledger": 2530001, + "ledgerClosedAt": "2023-11-15T07:29:05Z", + "contractId": "CCDBHMBD4RF5PRTJSO3SUI42KFC72C7XVDCPEL5UY532JBXAMHM4KOQ3", + "id": "0010866271553875968-0000000001", + "pagingToken": "0010866271553875968-0000000001", + "topic": [ + "AAAADwAAAAlmbl9yZXR1cm4AAAA=", + "AAAADwAAABFzZXRfY3VycmVuY3lfcmF0ZQAAAA==" + ], + "value": { + "xdr": "AAAAAQ==" + }, + "inSuccessfulContractCall": true + } + ], + "latestLedger": 2539529 + } + } +} diff --git a/openrpc/src/examples/LedgerEntries.json b/openrpc/src/examples/LedgerEntries.json new file mode 100644 index 000000000..c92d0f4e3 --- /dev/null +++ b/openrpc/src/examples/LedgerEntries.json @@ -0,0 +1,71 @@ +{ + "LedgerKeyCounterAddress": { + "name": "keys", + "summary": "ledger key for an address' counter entry", + "description": "A ledger key that will request a ledger entry defined using a tuple variant enum in a contract: `Counter(Address)`", + "value": [ + "AAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAE=" + ] + }, + "LedgerEntryCounterAddressResult": { + "name": "getLedgerEntriesResult", + "value": { + "entries": [ + { + "key": "AAAAB+qfy4GuVKKfazvyk4R9P9fpo2n9HICsr+xqvVcTF+DC", + "xdr": "AAAABgAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAQAAAAAQAAAAIAAAAPAAAAB0NvdW50ZXIAAAAAEgAAAAAAAAAAIOHWwMbBgBiAnwRt4k9nChmEOoSuLCVs2eqK9Qub+hgAAAABAAAAAwAAAAw=", + "lastModifiedLedgerSeq": 2552504 + } + ], + "latestLedger": 2552990 + } + }, + "LedgerKeyContractBalance": { + "name": "keys", + "summary": "ledger key for a contract's native XLM balance", + "description": "A ledger key that will request a ledger entry corresponding to a contract's balance on the native XLM Stellar Asset Contract.", + "value": [ + "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==" + ] + }, + "LedgerEntryContractBalanceResult": { + "name": "getLedgerEntriesResult", + "value": { + "entries": [ + { + "key": "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==", + "xdr": "AAAABgAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAQAAAAAQAAAAIAAAAPAAAAB0JhbGFuY2UAAAAAEgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAAAEAAAARAAAAAQAAAAMAAAAPAAAABmFtb3VudAAAAAAACgAAAAAAAAAAAAAAAB3NZQAAAAAPAAAACmF1dGhvcml6ZWQAAAAAAAAAAAABAAAADwAAAAhjbGF3YmFjawAAAAAAAAAA", + "lastModifiedLedgerSeq": 2553612 + } + ], + "latestLedger": 2553713 + } + }, + "CombinedLedgerKeys": { + "name": "keys", + "summary": "ledger keys for multiple ledger entries", + "description": "Two ledger keys: One for a counter entry, and one for a contract's native XLM balance.", + "value": [ + "AAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAE=", + "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==" + ] + }, + "CombinedLedgerEntryResult": { + "name": "getLedgerEntriesResult", + "value": { + "entries": [ + { + "key": "AAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAE=", + "xdr": "AAAABgAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAQAAAAAQAAAAIAAAAPAAAAB0JhbGFuY2UAAAAAEgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAAAEAAAARAAAAAQAAAAMAAAAPAAAABmFtb3VudAAAAAAACgAAAAAAAAAAAAAAAB3NZQAAAAAPAAAACmF1dGhvcml6ZWQAAAAAAAAAAAABAAAADwAAAAhjbGF3YmFjawAAAAAAAAAA", + "lastModifiedLedgerSeq": 2553612 + }, + { + "key": "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==", + "xdr": "AAAABgAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAQAAAAAQAAAAIAAAAPAAAAB0NvdW50ZXIAAAAAEgAAAAAAAAAAIOHWwMbBgBiAnwRt4k9nChmEOoSuLCVs2eqK9Qub+hgAAAABAAAAAwAAAAw=", + "lastModifiedLedgerSeq": 2552504 + } + ], + "latestLedger": 2553767 + } + } +} diff --git a/openrpc/src/examples/Simulations.json b/openrpc/src/examples/Simulations.json new file mode 100644 index 000000000..522574cc3 --- /dev/null +++ b/openrpc/src/examples/Simulations.json @@ -0,0 +1,59 @@ +{ + "ValidContractTransaction": { + "name": "transaction", + "summary": "a valid transaction", + "description": "A transaction that will correctly invoke a contract function.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAACDh1sDGwYAYgJ8EbeJPZwoZhDqEriwlbNnqivULm/oYAAAAAwAAAAMAAAAAAAAAAAAAAAA=" + }, + "SuccessfulSimulationResult": { + "name": "simulateTransactionResult", + "value": { + "transactionData": "AAAAAAAAAAIAAAAGAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAFAAAAAEAAAAHy8vNUZ8vyZ2ybPHW0XbSrRtP7gEWsJ6zDzcfY9P8z88AAAABAAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAEAHfKyAAAFiAAAAIgAAAAAAAAAAw==", + "minResourceFee": "90353", + "events": [ + "AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAACDh1sDGwYAYgJ8EbeJPZwoZhDqEriwlbNnqivULm/oYAAAAAwAAAAM=", + "AAAAAQAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAAAw=" + ], + "results": [ + { + "auth": [], + "xdr": "AAAAAwAAAAw=" + } + ], + "cost": { + "cpuInsns": "1635562", + "memBytes": "1295756" + }, + "latestLedger": 2552139 + } + }, + "InvalidContractTransaction": { + "name": "transaction", + "summary": "an invalid transaction", + "description": "A transaction that attempts to invoke a contract function with the wrong number of arguments.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAJaW5jcmVtZW50AAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAA" + }, + "FailedSimulationResult": { + "name": "simulateTransactionResult", + "value": { + "error": "host invocation failed\n\nCaused by:\n HostError: Error(WasmVm, InternalError)\n \n Event log (newest first):\n 0: [Diagnostic Event] contract:cc03fe74fd0fb0dcd8bc5175a6fedaf11417c07e5e837b9905b6d68c4f4fc00b, topics:[error, Error(WasmVm, InternalError)], data:[\"VM call failed: Func(MismatchingParameterLen)\", increment]\n 1: [Diagnostic Event] topics:[fn_call, Bytes(cc03fe74fd0fb0dcd8bc5175a6fedaf11417c07e5e837b9905b6d68c4f4fc00b), increment], data:3\n \n Backtrace (newest first):\n 0: soroban_env_host::vm::Vm::invoke_function_raw\n 1: soroban_env_host::host::frame::::with_frame\n 2: soroban_env_host::host::frame::::call_n_internal\n 3: soroban_env_host::host::frame::::invoke_function\n 4: preflight::preflight::preflight_invoke_hf_op\n 5: preflight::preflight_invoke_hf_op::{{closure}}\n 6: core::ops::function::FnOnce::call_once{{vtable.shim}}\n 7: preflight::catch_preflight_panic\n 8: _cgo_0b49d6ed4a0b_Cfunc_preflight_invoke_hf_op\n at tmp/go-build/cgo-gcc-prolog:103:11\n 9: runtime.asmcgocall\n at ./runtime/asm_amd64.s:848\n \n ", + "events": [ + "AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAPAAAACWluY3JlbWVudAAAAAAAAAMAAAAD", + "AAAAAAAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAACAAAAAAAAAAIAAAAPAAAABWVycm9yAAAAAAAAAgAAAAEAAAAHAAAAEAAAAAEAAAACAAAADgAAAC1WTSBjYWxsIGZhaWxlZDogRnVuYyhNaXNtYXRjaGluZ1BhcmFtZXRlckxlbikAAAAAAAAPAAAACWluY3JlbWVudAAAAA==" + ], + "cost": { + "cpuInsns": "0", + "memBytes": "0" + }, + "latestLedger": 2552013 + } + }, + "DefaultResourceConfig": { + "name": "resourceConfig", + "summary": "the default resource configuration", + "description": "The default value for the (optional) resource configuration object for transaction simulation.", + "value": { + "instructionLeeway": 3000000 + } + } +} diff --git a/openrpc/src/examples/Transactions.json b/openrpc/src/examples/Transactions.json new file mode 100644 index 000000000..6e3721bd8 --- /dev/null +++ b/openrpc/src/examples/Transactions.json @@ -0,0 +1,111 @@ +{ + "RecentTransactionHash": { + "name": "hash", + "summary": "a recent transaction hash", + "description": "Transaction hash that hit the network recently enough to still be visible through the RPC node.", + "value": "6bc97bddc21811c626839baf4ab574f4f9f7ddbebb44d286ae504396d4e752da" + }, + "TooOldTransactionHash": { + "name": "hash", + "summary": "an old transaction hash", + "description": "Transaction has that is old enough for the RPC node to have forgotten about it.", + "value": "85f7aa8bfda425b98c0e53ffe56796ffd8865ec2fcc3ad71abf120801e2a14e5" + }, + "FailedTransactionHash": { + "name": "hash", + "summary": "a failed transaction hash", + "description": "Transaction hash that failed to be accepted into a ledger.", + "value": "2e4c699cbcb8ee83fffb857c9579bcc91f73f0df2a0444292f66e37563785929" + }, + "SuccessTransactionResult": { + "name": "getTransactionResult", + "value": { + "status": "SUCCESS", + "latestLedger": 2540076, + "latestLedgerCloseTime": "1700086333", + "oldestLedger": 2538637, + "oldestLedgerCloseTime": "1700078796", + "applicationOrder": 1, + "envelopeXdr": "AAAAAgAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owCpsoQAJY3OAAAjqgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAARc2V0X2N1cnJlbmN5X3JhdGUAAAAAAAACAAAADwAAAANldXIAAAAACQAAAAAAAAAAAAAAAAARCz4AAAABAAAAAAAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAARc2V0X2N1cnJlbmN5X3JhdGUAAAAAAAACAAAADwAAAANldXIAAAAACQAAAAAAAAAAAAAAAAARCz4AAAAAAAAAAQAAAAAAAAABAAAAB4408vVXuLU3mry897TfPpYjjsSN7n42REos241RddYdAAAAAQAAAAYAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAAUAAAAAQFvcYAAAImAAAAHxAAAAAAAAAACAAAAARio+aMAAABATbFMyom/TUz87wHex0LoYZA8jbNJkXbaDSgmOdk+wSBFJuMuta+/vSlro0e0vK2+1FqD/zWHZeYig4pKmM3rDA==", + "resultXdr": "AAAAAAARFy8AAAAAAAAAAQAAAAAAAAAYAAAAAMu8SHUN67hTUJOz3q+IrH9M/4dCVXaljeK6x1Ss20YWAAAAAA==", + "resultMetaXdr": "AAAAAwAAAAAAAAACAAAAAwAmwiAAAAAAAAAAAMYVjXj9HUoPRUa1NuLlinh3su4xbSJBssz8BSIYqPmjAAAAFUHZob0AJY3OAAAjqQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAACbCHwAAAABlVUH3AAAAAAAAAAEAJsIgAAAAAAAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owAAABVB2aG9ACWNzgAAI6oAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAmwiAAAAAAZVVB/AAAAAAAAAABAAAAAgAAAAMAJsIfAAAABgAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAAUAAAAAQAAABMAAAAAjjTy9Ve4tTeavLz3tN8+liOOxI3ufjZESizbjVF11h0AAAABAAAABQAAABAAAAABAAAAAQAAAA8AAAAJQ29yZVN0YXRlAAAAAAAAEQAAAAEAAAAGAAAADwAAAAVhZG1pbgAAAAAAABIAAAAAAAAAADn1LT+CCK/HiHMChoEi/AtPrkos4XRR2E45Pr25lb3/AAAADwAAAAljb2xfdG9rZW4AAAAAAAASAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAADwAAAAxvcmFjbGVfYWRtaW4AAAASAAAAAAAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owAAAA8AAAAKcGFuaWNfbW9kZQAAAAAAAAAAAAAAAAAPAAAAEHByb3RvY29sX21hbmFnZXIAAAASAAAAAAAAAAAtSfyAwmj05lZ0WduHsQYQZgvahCNVtZyqS2HRC99kyQAAAA8AAAANc3RhYmxlX2lzc3VlcgAAAAAAABIAAAAAAAAAAEM5BlXva0R5UN6SCMY+6evwJa4mY/f062z0TKLnqN4wAAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADZXVyAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAAUGpebFxuPbvxZFzOxh8TWAxUwFgraPxPuJEY/8yhiYEAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVBvgAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEQb8AAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADdXNkAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAATUEqdkvrE2LnSiwOwed3v4VEaulOEiS1rxQw6rJkfxCAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVB9wAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEnzuAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA2V1cgAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADZXVyAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAAAlQL5AAAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAAlQL5AAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAABAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA3VzZAAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADdXNkAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAABF2WS4AAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAA7msoAAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAACAAAAAAAAAAEAJsIgAAAABgAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAAUAAAAAQAAABMAAAAAjjTy9Ve4tTeavLz3tN8+liOOxI3ufjZESizbjVF11h0AAAABAAAABQAAABAAAAABAAAAAQAAAA8AAAAJQ29yZVN0YXRlAAAAAAAAEQAAAAEAAAAGAAAADwAAAAVhZG1pbgAAAAAAABIAAAAAAAAAADn1LT+CCK/HiHMChoEi/AtPrkos4XRR2E45Pr25lb3/AAAADwAAAAljb2xfdG9rZW4AAAAAAAASAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAADwAAAAxvcmFjbGVfYWRtaW4AAAASAAAAAAAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owAAAA8AAAAKcGFuaWNfbW9kZQAAAAAAAAAAAAAAAAAPAAAAEHByb3RvY29sX21hbmFnZXIAAAASAAAAAAAAAAAtSfyAwmj05lZ0WduHsQYQZgvahCNVtZyqS2HRC99kyQAAAA8AAAANc3RhYmxlX2lzc3VlcgAAAAAAABIAAAAAAAAAAEM5BlXva0R5UN6SCMY+6evwJa4mY/f062z0TKLnqN4wAAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADZXVyAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAAUGpebFxuPbvxZFzOxh8TWAxUwFgraPxPuJEY/8yhiYEAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVB/AAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEQs+AAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADdXNkAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAATUEqdkvrE2LnSiwOwed3v4VEaulOEiS1rxQw6rJkfxCAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVB9wAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEnzuAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA2V1cgAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADZXVyAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAAAlQL5AAAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAAlQL5AAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAABAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA3VzZAAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADdXNkAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAABF2WS4AAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAA7msoAAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAFQAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAwAAAA8AAAAHZm5fY2FsbAAAAAANAAAAIIYTsCPkS9fGaZO3KiOaUUX9C/eoxPIvtMd3pIbgYdnFAAAADwAAABFzZXRfY3VycmVuY3lfcmF0ZQAAAAAAABAAAAABAAAAAgAAAA8AAAADZXVyAAAAAAkAAAAAAAAAAAAAAAAAEQs+AAAAAQAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAARc2V0X2N1cnJlbmN5X3JhdGUAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAACnJlYWRfZW50cnkAAAAAAAUAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAt3cml0ZV9lbnRyeQAAAAAFAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAQbGVkZ2VyX3JlYWRfYnl0ZQAAAAUAAAAAAACJaAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAABFsZWRnZXJfd3JpdGVfYnl0ZQAAAAAAAAUAAAAAAAAHxAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAA1yZWFkX2tleV9ieXRlAAAAAAAABQAAAAAAAABUAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAADndyaXRlX2tleV9ieXRlAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAOcmVhZF9kYXRhX2J5dGUAAAAAAAUAAAAAAAAH6AAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAA93cml0ZV9kYXRhX2J5dGUAAAAABQAAAAAAAAfEAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAADnJlYWRfY29kZV9ieXRlAAAAAAAFAAAAAAAAgYAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAPd3JpdGVfY29kZV9ieXRlAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAplbWl0X2V2ZW50AAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAPZW1pdF9ldmVudF9ieXRlAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAhjcHVfaW5zbgAAAAUAAAAAATLTQAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAhtZW1fYnl0ZQAAAAUAAAAAACqhewAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAABFpbnZva2VfdGltZV9uc2VjcwAAAAAAAAUAAAAAABFfSQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAA9tYXhfcndfa2V5X2J5dGUAAAAABQAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAAEG1heF9yd19kYXRhX2J5dGUAAAAFAAAAAAAAB+gAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAQbWF4X3J3X2NvZGVfYnl0ZQAAAAUAAAAAAACBgAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAABNtYXhfZW1pdF9ldmVudF9ieXRlAAAAAAUAAAAAAAAAAA==", + "ledger": 2540064, + "createdAt": "1700086268" + } + }, + "NotFoundTransactionResult": { + "name": "getTransactionResult", + "value": { + "status": "NOT_FOUND", + "latestLedger": 2540099, + "latestLedgerCloseTime": "1700086455", + "oldestLedger": 2538660, + "oldestLedgerCloseTime": "1700078913" + } + }, + "FailedTransactionResult": { + "name": "getTransactionResult", + "value": { + "status": "FAILED", + "latestLedger": 2540124, + "latestLedgerCloseTime": "1700086588", + "oldestLedger": 2538685, + "oldestLedgerCloseTime": "1700079044", + "applicationOrder": 2, + "envelopeXdr": "AAAAAgAAAABZvyflsZ5FumtSdS+t0/YnWWML3YWdzX1BGk/Qy786aQAAAG4AFyJfAABKvgAAAAIAAAAAAAAAAQAmwlEAJsK1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAE/fr1kk7lqP0srDPW4JExF1MWmpsG49FsRE3b0vMCmzAAAAAUVVUlMAAAAArPm4/+q9j4dl178h2JjrqjgRXnQ1WiGkyVy+nv3nGkEAAAAAAVjZQAAAAAAAAAABy786aQAAAEDybJBtG7V5NrRFpoboRUN/5ecys5wSUgag3CnTtWLmq3JDOxrEjK9noAnu/F5O0E8iXuVzX9BxZSO9JZ+Tw6kK", + "resultXdr": "AAAAAAAAAGT/////AAAAAQAAAAAAAAAB////+gAAAAA=", + "resultMetaXdr": "AAAAAwAAAAAAAAACAAAAAwAmwlIAAAAAAAAAAFm/J+WxnkW6a1J1L63T9idZYwvdhZ3NfUEaT9DLvzppAAAAF0g7NXsAFyJfAABKvQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAACbCSwAAAABlVULiAAAAAAAAAAEAJsJSAAAAAAAAAABZvyflsZ5FumtSdS+t0/YnWWML3YWdzX1BGk/Qy786aQAAABdIOzV7ABciXwAASr4AAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAmwlIAAAAAZVVDBwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "ledger": 2540114, + "createdAt": "1700086535" + } + }, + "ValidSentTransaction": { + "name": "transaction", + "summary": "a valid transaction sent to the network", + "description": "A valid Stellar transaction that was sent to the network successfully.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACgAAAAVIZWxsbwAAAAAAAAEAAAAMU29yb2JhbiBEb2NzAAAAAAAAAAELm/oYAAAAQATr6Ghp/DNO7S6JjEFwcJ9a+dvI6NJr7I/2eQttvoovjQ8te4zKKaapC3mbmx6ld6YKL5T81mxs45TjzdG5zw0=" + }, + "InvalidSentTransaction": { + "name": "transaction", + "summary": "an invalid transaction sent to the network", + "description": "An invalid Stellar transaction that was sent to the network, built with an incorrect sequence number.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACgAAAAVIZWxsbwAAAAAAAAEAAAAMU29yb2JhbiBEb2NzAAAAAAAAAAELm/oYAAAAQMQkfl8sdCYQIOdJB0TyazJ126y2TFRjL8yNHSb4TTsH5Ym6qM6gkTx1ENRZ0PFprVGusMTHISzdPHYJ4njBZAQ=" + }, + "PendingTransactionResult": { + "name": "sendTransactionResult", + "value": { + "status": "PENDING", + "hash": "d8ec9b68780314ffdfdfc2194b1b35dd27d7303c3bceaef6447e31631a1419dc", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + }, + "DuplicateTransactionResult": { + "name": "sendTransactionResult", + "value": { + "status": "DUPLICATE", + "hash": "d8ec9b68780314ffdfdfc2194b1b35dd27d7303c3bceaef6447e31631a1419dc", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + }, + "ErrorTransactionResult": { + "name": "sendTransactionResult", + "value": { + "errorResultXdr": "AAAAAAAAAGT////7AAAAAA==", + "status": "ERROR", + "hash": "84a5f62bff422581dda019811daed0868a3db41833ad6e90a12f0d7db1be8167", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + }, + "TryAgainLaterTransactionResult": { + "name": "sendTransactionResult", + "value": { + "status": "TRY_AGAIN_LATER", + "hash": "d8ec9b68780314ffdfdfc2194b1b35dd27d7303c3bceaef6447e31631a1419dc", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + } +} diff --git a/openrpc/src/methods/getEvents.json b/openrpc/src/methods/getEvents.json new file mode 100644 index 000000000..dd57ee2d9 --- /dev/null +++ b/openrpc/src/methods/getEvents.json @@ -0,0 +1,42 @@ +{ + "name": "getEvents", + "summary": "returns contract events", + "description": "Clients can request a filtered list of events emitted by a given ledger range.\n\nSoroban-RPC will support querying within a maximum 24 hours of recent ledgers.\n\nNote, this could be used by the client to only prompt a refresh when there is a new ledger with relevant events. It should also be used by backend Dapp components to \"ingest\" events into their own database for querying and serving.\n\nIf making multiple requests, clients should deduplicate any events received, based on the event's unique id field. This prevents double-processing in the case of duplicate events being received.\n\nBy default soroban-rpc retains the most recent 24 hours of events.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getEvents" + }, + "paramStructure": "by-name", + "params": [ + { + "$ref": "#/components/contentDescriptors/StartLedger" + }, + { + "$ref": "#/components/contentDescriptors/EventFilters" + }, + { + "$ref": "#/components/contentDescriptors/Pagination" + } + ], + "result": { + "name": "getEventsResult", + "schema": { + "type": "object", + "properties": { + "latestLedger": { + "$ref": "#/components/schemas/LatestLedger" + }, + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event" + } + } + } + } + }, + "examples": [ + { "$ref": "#/components/examplePairingObjects/NativeTransferEventsExample" }, + { "$ref": "#/components/examplePairingObjects/AnyEventsExample" } + ] +} + diff --git a/openrpc/src/methods/getHealth.json b/openrpc/src/methods/getHealth.json new file mode 100644 index 000000000..348b3a642 --- /dev/null +++ b/openrpc/src/methods/getHealth.json @@ -0,0 +1,35 @@ +{ + "name": "getHealth", + "summary": "returns node health", + "description": "General node health check.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getHealth" + }, + "paramStructure": "by-name", + "params": [], + "result": { + "name": "getHealthResult", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "\"healthy\"" + } + } + } + }, + "examples": [ + { + "name": "Current node health", + "description": "Example request to the `getHealth` method", + "params": [], + "result": { + "name": "getHealthResult", + "value": { + "status": "healthy" + } + } + } + ] +} diff --git a/openrpc/src/methods/getLatestLedger.json b/openrpc/src/methods/getLatestLedger.json new file mode 100644 index 000000000..210835ab0 --- /dev/null +++ b/openrpc/src/methods/getLatestLedger.json @@ -0,0 +1,42 @@ +{ + "name": "getLatestLedger", + "summary": "returns latest known ledger", + "description": "For finding out the current latest known ledger of this node. This is a subset of the ledger info from Horizon.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getLatestLedger" + }, + "paramStructure": "by-name", + "params": [], + "result": { + "name": "getLatestLedgerResult", + "schema": { + "type": "object", + "properties": { + "id": { + "$ref": "#/components/schemas/LedgerHash" + }, + "protocolVersion": { + "$ref": "#/components/schemas/ProtocolVersion" + }, + "sequence": { + "$ref": "#/components/schemas/LatestLedger" + } + } + } + }, + "examples": [ + { + "name": "Details of the Current Ledger", + "description": "Example request to the `getLatestLedger` method.", + "params": [], + "result": { + "name": "getLatestLedgerResult", + "value": { + "id": "c73c5eac58a441d4eb733c35253ae85f783e018f7be5ef974258fed067aabb36", + "protocolVersion": 20, + "sequence": 2539605 + } + } + } + ] +} diff --git a/openrpc/src/methods/getLedgerEntries.json b/openrpc/src/methods/getLedgerEntries.json new file mode 100644 index 000000000..a9ad27d0b --- /dev/null +++ b/openrpc/src/methods/getLedgerEntries.json @@ -0,0 +1,38 @@ +{ + "name": "getLedgerEntries", + "summary": "returns ledger entries", + "description": "For reading the current value of ledger entries directly.\n\nAllows you to directly inspect the current state of a contract, a contract's code, or any other ledger entry. This is a backup way to access your contract data which may not be available via events or `simulateTransaction`.\n\nTo fetch contract wasm byte-code, use the ContractCode ledger entry key.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getLedgerEntries" + }, + "paramStructure": "by-name", + "params": [ + { + "$ref": "#/components/contentDescriptors/LedgerKeys" + } + ], + "result": { + "name": "getLedgerEntriesResult", + "schema": { + "type": "object", + "properties": { + "latestLedger": { + "$ref": "#/components/schemas/LatestLedger" + }, + "entries": { + "type": "array", + "description": "Array of objects containing all found ledger entries", + "items": { + "$ref": "#/components/schemas/LedgerEntry" + } + } + }, + "required": [ "latestLedger" ] + } + }, + "examples": [ + { "$ref": "#/components/examplePairingObjects/CounterLedgerEntryExample" }, + { "$ref": "#/components/examplePairingObjects/ContractBalanceLedgerEntryExample" }, + { "$ref": "#/components/examplePairingObjects/CombinedLedgerEntryExample" } + ] +} diff --git a/openrpc/src/methods/getNetwork.json b/openrpc/src/methods/getNetwork.json new file mode 100644 index 000000000..181e0a494 --- /dev/null +++ b/openrpc/src/methods/getNetwork.json @@ -0,0 +1,33 @@ +{ + "name": "getNetwork", + "summary": "returns network config", + "description": "General information about the currently configured network. This response will contain all the information needed to successfully submit transactions to the network this node serves.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getNetwork" + }, + "paramStructure": "by-name", + "params": [], + "result": { + "name": "getNetworkResult", + "schema": { + "type": "object", + "properties": { + "passphrase": { + "$ref": "#/components/schemas/NetworkPassphrase" + }, + "protocolVersion": { + "$ref": "#/components/schemas/ProtocolVersion" + }, + "friendbotUrl": { + "type": "string", + "description": "(optional) The URL of this network's \"friendbot\" faucet" + } + }, + "required": [ "passphrase", "protocolVersion" ] + } + }, + "examples": [ + { "$ref": "#/components/examplePairingObjects/TestnetNetworkConfig" }, + { "$ref": "#/components/examplePairingObjects/FuturenetNetworkConfig" } + ] +} diff --git a/openrpc/src/methods/getTransaction.json b/openrpc/src/methods/getTransaction.json new file mode 100644 index 000000000..b4dd95b17 --- /dev/null +++ b/openrpc/src/methods/getTransaction.json @@ -0,0 +1,79 @@ +{ + "name": "getTransaction", + "summary": "returns transaction details", + "description": "The getTransaction method provides details about the specified transaction. Clients are expected to periodically query this method to ascertain when a transaction has been successfully recorded on the blockchain. The soroban-rpc system maintains a restricted history of recently processed transactions, with the default retention window set at 1440 ledgers, approximately equivalent to a 2-hour timeframe. For private soroban-rpc instances, it is possible to modify the retention window value by adjusting the transaction-retention-window configuration setting. For comprehensive debugging needs that extend beyond the 2-hour timeframe, it is advisable to retrieve transaction information from Horizon, as it provides a lasting and persistent record.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getTransaction" + }, + "paramStructure": "by-name", + "params": [ + { + "$ref": "#/components/contentDescriptors/TransactionHash" + } + ], + "result": { + "name": "getTransactionResult", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "The current status of the transaction by hash", + "enum": [ + "SUCCESS", + "NOT_FOUND", + "FAILED" + ] + }, + "latestLedger": { + "$ref": "#/components/schemas/LatestLedger" + }, + "latestLedgerCloseTime": { + "$ref": "#/components/schemas/LatestLedgerCloseTime" + }, + "oldestLedger": { + "$ref": "#/components/schemas/OldestLedger" + }, + "oldestLedgerCloseTime": { + "$ref": "#/components/schemas/OldestLedgerCloseTime" + }, + "ledger": { + "title": "ledger", + "description": "(optional) The sequence number of the ledger which included the transaction. This field is only present if `status` is `SUCCESS` or `FAILED`.", + "$ref": "#/components/schemas/LedgerSequence" + }, + "createdAt": { + "title": "createdAt", + "description": "(optional) The unix timestamp of when the transaction was included in the ledger. This field is only present if `status` is `SUCCESS` or `FAILED`.", + "$ref": "#/components/schemas/LedgerCloseTime" + }, + "applicationOrder": { + "type": "number", + "description": "(optional) The index of the transaction among all transactions included in the ledger. This field is only present if `status` is `SUCCESS` or `FAILED`." + }, + "feeBump": { + "type": "boolean", + "description": "(optional) Indicates whether the transaction was fee bumped. This field is only present if `status` is `SUCCESS` or `FAILED`." + }, + "envelopeXdr": { + "type": "string", + "description": "(optional) A base64 encoded string of the raw TransactionEnvelope XDR struct for this transaction." + }, + "resultXdr": { + "type": "string", + "description": "(optional) A base64 encoded string of the raw TransactionResult XDR struct for this transaction. This field is only present if `status` is `SUCCESS` or `FAILED`." + }, + "resultMetaXdr": { + "type": "string", + "description": "(optional) A base64 encoded string of the raw TransactionResultMeta XDR struct for this transaction." + } + }, + "required": [ "status", "latestLedger", "latestLedgerCloseTime", "oldestLedger", "oldestLedgerCloseTime" ] + } + }, + "examples": [ + { "$ref": "#/components/examplePairingObjects/SuccessfulTransaction" }, + { "$ref": "#/components/examplePairingObjects/NotFoundTransaction" }, + { "$ref": "#/components/examplePairingObjects/FailedTransaction" } + ] +} diff --git a/openrpc/src/methods/sendTransaction.json b/openrpc/src/methods/sendTransaction.json new file mode 100644 index 000000000..81696df11 --- /dev/null +++ b/openrpc/src/methods/sendTransaction.json @@ -0,0 +1,63 @@ +{ + "name": "sendTransaction", + "summary": "submits a transaction", + "description": "Submit a real transaction to the Stellar network. This is the only way to make changes on-chain.\n\n Unlike Horizon, this does not wait for transaction completion. It simply validates and enqueues the transaction. Clients should call `getTransaction` to learn about transaction success/failure.\n\nThis supports all transactions, not only smart contract-related transactions.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/sendTransaction" + }, + "paramStructure": "by-name", + "params": [ + { + "$ref": "#/components/contentDescriptors/SignedTransaction" + } + ], + "result": { + "name": "sendTransactionResult", + "summary": "Transaction status and network state.", + "description": "Transaction status and network state. The result will include if the transaction was successfully enqueued, and information about the current ledger.", + "schema": { + "type": "object", + "properties": { + "hash": { + "$ref": "#/components/schemas/TransactionHash" + }, + "status": { + "type": "string", + "description": "The current status of the transaction by hash.", + "enum": [ + "PENDING", + "DUPLICATE", + "TRY_AGAIN_LATER", + "ERROR" + ] + }, + "latestLedger": { + "$ref": "#/components/schemas/LatestLedger" + }, + "latestLedgerCloseTime": { + "$ref": "#/components/schemas/LatestLedgerCloseTime" + }, + "errorResultXdr": { + "type": "string", + "description": "(optional) If the transaction status is `ERROR`, this will be a base64 encoded string of the raw TransactionResult XDR struct containing details on why stellar-core rejected the transaction.", + "contentEncoding": "base64" + }, + "diagnosticEventsXdr": { + "type": "array", + "description": "(optional) If the transaction status is `ERROR`, this field may be present with an array of base64 encoded strings. Each string will decode to a raw DiagnosticEvent XDR struct containing details on why stellar-core rejected the transaction.", + "contentEncoding": "base64", + "items": { + "type": "string" + } + } + }, + "required": [ "hash", "status", "latestLedger", "latestLedgerCloseTime" ] + } + }, + "examples": [ + { "$ref": "#/components/examplePairingObjects/PendingTransaction" }, + { "$ref": "#/components/examplePairingObjects/DuplicateTransaction" }, + { "$ref": "#/components/examplePairingObjects/ErrorTransaction" }, + { "$ref": "#/components/examplePairingObjects/TryAgainLaterTransaction" } + ] +} diff --git a/openrpc/src/methods/simulateTransaction.json b/openrpc/src/methods/simulateTransaction.json new file mode 100644 index 000000000..197fc13b4 --- /dev/null +++ b/openrpc/src/methods/simulateTransaction.json @@ -0,0 +1,106 @@ +{ + "name": "simulateTransaction", + "summary": "submits a trial contract invocation transaction", + "description": "Submit a trial contract invocation to simulate how it would be executed by the network. This endpoint calculates the effective transaction data, required authorizations, and minimal resource fee. It provides a way to test and analyze the potential outcomes of a transaction without actually submitting it to the network.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/simulateTransaction" + }, + "paramStructure": "by-name", + "params": [ + { + "$ref": "#/components/contentDescriptors/UnsignedTransaction" + }, + { + "$ref": "#/components/contentDescriptors/ResourceConfig" + } + ], + "result": { + "name": "simulateTransactionResult", + "summary": "anticipated affects of the transaction.", + "description": "The response will include the anticipated affects the given transaction will have on the network. Additionally, information needed to build, sign, and actually submit the transaction will be provided.", + "schema": { + "type": "object", + "properties": { + "latestLedger": { + "$ref": "#/components/schemas/LatestLedger" + }, + "minResourceFee": { + "type": "string", + "description": "(optional) Stringified number - Recommended minimum resource fee to add when submitting the transaction. This fee is to be added on top of the [Stellar network fee](https://developers.stellar.org/docs/encyclopedia/fees-surge-pricing-fee-strategies#network-fees-on-stellar). Not present in case of error." + }, + "cost": { + "type": "object", + "description": "(optional) - The cost object is legacy, inaccurate, and will be deprecated in future RPC releases. Please decode transactionData XDR to retrieve the correct resources.", + "deprecated": true, + "properties": { + "cpuInsns": { + "type": "string", + "description": "Stringified number - Total cpu instructions consumed by this transaction" + }, + "memBytes": { + "type": "string", + "description": "Stringified number - Total memory bytes allocated by this transaction" + } + }, + "required": [ "cpuInsns", "memBytes" ] + }, + "results": { + "type": "array", + "description": "(optional) - This array will only have one element: the result for the Host Function invocation. Only present on successful simulation (i.e. no error) of `InvokeHostFunction` operations.", + "items": { + "type": "object", + "properties": { + "xdr": { + "type": "string", + "description": "Serialized base64 string - return value of the Host Function call." + }, + "auth": { + "type": "array", + "description": "Array of serialized base64 strings - Per-address authorizations recorded when simulating this Host Function call.", + "items": { + "type": "string" + } + } + }, + "required": [ "xdr", "auth" ] + } + }, + "transactionData": { + "type": "string", + "description": "(optional) Serialized base64 string - The recommended Soroban Transaction Data to use when submitting the simulated transaction. This data contains the refundable fee and resource usage information such as the ledger footprint and IO access data (serialized in a base64 string). Not present in case of error." + }, + "events": { + "type": "array", + "description": "(optional) Array of serialized base64 strings - Array of the events emitted during the contract invocation. The events are ordered by their emission time. (an array of serialized base64 strings). Only present when simulating of `InvokeHostFunction` operations, note that it can be present on error, providing extra context about what failed.", + "items": { + "type": "string" + } + }, + "restorePreamble": { + "type": "object", + "description": "(optional) - It can only be present on successful simulation (i.e. no error) of `InvokeHostFunction` operations. If present, it indicates that the simulation detected archived ledger entries which need to be restored before the submission of the `InvokeHostFunction` operation. The `minResourceFee` and `transactionData` fields should be used to submit a transaction containing a `RestoreFootprint` operation.", + "properties": { + "minResourceFee": { + "type": "string", + "description": "Stringified number - Recommended minimum resource fee to add when submitting the `RestoreFootprint` operation. This fee is to be added on top of the [Stellar network fee](https://developers.stellar.org/docs/encyclopedia/fees-surge-pricing-fee-strategies#network-fees-on-stellar)." + }, + "transactionData": { + "type": "string", + "description": "Serialized base64 string - The recommended Soroban Transaction Data to use when submitting the `RestoreFootprint` operation." + } + }, + "required": [ "minResourceFee", "transactionData" ] + }, + "error": { + "type": "string", + "description": "(optional) - This field will include details about why the invoke host function call failed. Only present if the transaction simulation failed." + } + }, + "required": [ "latestLedger" ] + } + }, + "examples": [ + { "$ref": "#/components/examplePairingObjects/SuccessfulTransactionSimulation" }, + { "$ref": "#/components/examplePairingObjects/FailedTransactionSimulation" } + ] +} diff --git a/openrpc/src/schemas/ContractIds.json b/openrpc/src/schemas/ContractIds.json new file mode 100644 index 000000000..ed3f6b236 --- /dev/null +++ b/openrpc/src/schemas/ContractIds.json @@ -0,0 +1,16 @@ +{ + "ContractId": { + "title": "contractId", + "description": "A StrKey representation of a contract address (`C...`). ([SEP-23](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md#specification)).", + "type": "string" + }, + "ContractIds": { + "title": "contractIds", + "type": "array", + "description": "List of contract IDs to query for events. If omitted, return events for all contracts. Maximum 5 contract IDs are allowed per request.", + "maxItems": 5, + "items": { + "$ref": "#/components/schemas/ContractId" + } + } +} diff --git a/openrpc/src/schemas/Event.json b/openrpc/src/schemas/Event.json new file mode 100644 index 000000000..3d208490a --- /dev/null +++ b/openrpc/src/schemas/Event.json @@ -0,0 +1,64 @@ +{ + "Event": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/EventType" + }, + "ledger": { + "description": "Sequence number of the ledger in which this event was emitted.", + "$ref": "#/components/schemas/LedgerSequence" + }, + "ledgerClosedAt": { + "type": "string", + "description": "[ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) timestamp of the ledger closing time" + }, + "contractId": { + "description": "StrKey representation of the contract address that emitted this event.", + "$ref": "#/components/schemas/ContractId" + }, + "id": { + "$ref": "#/components/schemas/EventId" + }, + "pagingToken": { + "description": "Duplicate of `id` field, but in the standard place for pagination tokens.", + "$ref": "#/components/schemas/EventId" + }, + "inSuccessfulContractCall": { + "description": "If true the event was emitted during a successful contract call.", + "type": "boolean" + }, + "topic": { + "type": "array", + "description": "List containing the topic this event was emitted with.", + "$ref": "#/components/schemas/TopicFilter" + }, + "value": { + "$ref": "#/components/schemas/EventValue" + } + } + }, + "EventType": { + "title": "type", + "description": "The type of event emission.", + "type": "string", + "enum": [ "contract", "diagnostic", "system" ] + }, + "EventId": { + "description": "Unique identifier for this event.\n\n- The event's unique id field is based on a [`toid` from Horizon](https://github.com/stellar/go/blob/master/toid/main.go) as used in Horizon's /effects endpoint.\n\n- https://github.com/stellar/go/blob/master/services/horizon/internal/db2/history/effect.go#L58\n\n- Specifically, it is a string containing:\n\n- bigint(32 bit ledger sequence + 20 bit txn number + 12 bit operation) + `` + number for the event within the operation.\n\n- For example: `1234-1`", + "type": "string" + }, + "EventXdr": { + "description": "The emitted body value of the event (serialized in a base64 string).", + "type": "string" + }, + "EventValue": { + "description": "The data the event was broadcasting in the emitted event.", + "type": "object", + "properties": { + "xdr": { + "$ref": "#/components/schemas/EventXdr" + } + } + } +} diff --git a/openrpc/src/schemas/EventFilters.json b/openrpc/src/schemas/EventFilters.json new file mode 100644 index 000000000..193b93cf8 --- /dev/null +++ b/openrpc/src/schemas/EventFilters.json @@ -0,0 +1,52 @@ +{ + "EventFilters": { + "type": "array", + "maxItems": 5, + "items": { + "$ref": "#/components/schemas/EventFilter" + } + }, + "EventFilter": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/EventFilterType" + }, + "contractIds": { + "$ref": "#/components/schemas/ContractIds" + }, + "topics": { + "$ref": "#/components/schemas/TopicFilters" + } + }, + "required": [] + }, + "EventFilterType": { + "title": "type", + "type": "string", + "description": "A comma separated list of event types (system, contract, or diagnostic) used to filter events. If omitted, all event types are included." + }, + "TopicFilters": { + "title": "topics", + "type": "array", + "description": "List of topic filters. If omitted, query for all events. If multiple filters are specified, events will be included if they match any of the filters. Maximum 5 filters are allowed per request.", + "maxItems": 5, + "items": { + "$ref": "#/components/schemas/TopicFilter" + } + }, + "SegmentMatcher": { + "title": "SegmentMatcher", + "type": "string", + "description": "A `SegmentMatcher` is one of the following:\n\n- For an exact segment match, a string containing a base64-encoded ScVal\n\n- For a wildcard single-segment match, the string \"*\", matches exactly one segment." + }, + "TopicFilter": { + "type": "array", + "description": "A `TopicFilter` is `SegmentMatcher[]`\n\n- The list can be 1-4 `SegmentMatchers` long.", + "minItems": 1, + "maxItems": 4, + "items": { + "$ref": "#/components/schemas/SegmentMatcher" + } + } +} diff --git a/openrpc/src/schemas/Hash.json b/openrpc/src/schemas/Hash.json new file mode 100644 index 000000000..f12fe2cfc --- /dev/null +++ b/openrpc/src/schemas/Hash.json @@ -0,0 +1,19 @@ +{ + "Hash": { + "title": "hash", + "type": "string", + "minLength": 64, + "maxLength": 64, + "pattern": "^[a-f\\d]{64}$" + }, + "TransactionHash": { + "title": "hash", + "description": "Transaction hash (as a hex-encoded string)", + "$ref": "#/components/schemas/Hash" + }, + "LedgerHash": { + "title": "id", + "description": "Hash identifier of the latest ledger (as a hex-encoded string) known to Soroban RPC at the time it handled the request.", + "$ref": "#/components/schemas/Hash" + } +} diff --git a/openrpc/src/schemas/LedgerCloseTime.json b/openrpc/src/schemas/LedgerCloseTime.json new file mode 100644 index 000000000..ba6df7fea --- /dev/null +++ b/openrpc/src/schemas/LedgerCloseTime.json @@ -0,0 +1,17 @@ +{ + "LedgerCloseTime": { + "title": "ledgerCloseTime", + "description": "The unix timestamp of the close time of the ledger.", + "type": "string" + }, + "LatestLedgerCloseTime": { + "title": "latestLedgerCloseTime", + "description": "The unix timestamp of the close time of the latest ledger known to Soroban RPC at the time it handled the request.", + "$ref": "#/components/schemas/LedgerCloseTime" + }, + "OldestLedgerCloseTime": { + "title": "oldestLedgerCloseTime", + "description": "The unix timestamp of the close time of the oldest ledger ingested by Soroban RPC at the time it handled the request.", + "$ref": "#/components/schemas/LedgerCloseTime" + } +} diff --git a/openrpc/src/schemas/LedgerEntries.json b/openrpc/src/schemas/LedgerEntries.json new file mode 100644 index 000000000..dc9b98efb --- /dev/null +++ b/openrpc/src/schemas/LedgerEntries.json @@ -0,0 +1,34 @@ +{ + "LedgerKey": { + "type": "string", + "description": "Ledger key, serialized as a base64 string, corresponding to an existing ledger entry you wish to retrieve." + }, + "LedgerKeys": { + "description": "Array containing ledger keys.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LedgerKey" + } + }, + "LedgerEntry": { + "type": "object", + "description": "Object containing information about an existing ledger entry.", + "properties": { + "key": { + "type": "string", + "description": "The key of the ledger entry (serialized in a base64 string)." + }, + "xdr": { + "type": "string", + "description": "The current value of the given ledger entry (serialized in a base64 string)." + }, + "lastModifiedLedgerSeq": { + "description": "The ledger sequence number of the last time this entry was updated.", + "$ref": "#/components/schemas/LedgerSequence" + }, + "liveUntilLedgerSeq": { + "$ref": "#/components/schemas/LedgerSequence" + } + } + } +} diff --git a/openrpc/src/schemas/LedgerSequence.json b/openrpc/src/schemas/LedgerSequence.json new file mode 100644 index 000000000..bd097ba91 --- /dev/null +++ b/openrpc/src/schemas/LedgerSequence.json @@ -0,0 +1,17 @@ +{ + "LedgerSequence": { + "title": "ledgerSequence", + "description": "Sequence number of the ledger.", + "type": "number" + }, + "LatestLedger": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "$ref": "#/components/schemas/LedgerSequence" + }, + "OldestLedger": { + "title": "oldestLedger", + "description": "The sequence number of the oldest ledger ingested by Soroban RPC at the time it handled the request.", + "$ref": "#/components/schemas/LedgerSequence" + } +} diff --git a/openrpc/src/schemas/NetworkConfig.json b/openrpc/src/schemas/NetworkConfig.json new file mode 100644 index 000000000..fdcf3a990 --- /dev/null +++ b/openrpc/src/schemas/NetworkConfig.json @@ -0,0 +1,12 @@ +{ + "ProtocolVersion": { + "title": "protocolVersion", + "description": "Stellar Core protocol version associated with the latest ledger.", + "type": "number" + }, + "NetworkPassphrase": { + "title": "networkPassphrase", + "description": "Network passphrase configured for this Soroban RPC node.", + "type": "string" + } +} diff --git a/openrpc/src/schemas/Pagination.json b/openrpc/src/schemas/Pagination.json new file mode 100644 index 000000000..42732a542 --- /dev/null +++ b/openrpc/src/schemas/Pagination.json @@ -0,0 +1,16 @@ +{ + "Pagination": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "A string ID that points to a specific location in a collection of responses and is pulled from the `paging_token` value of a record. When a cursor is provided Soroban-RPC will _not_ include the element whose id matches the cursor in the response. Only elements which appear _after_ the cursor are included." + }, + "limit": { + "type": "number", + "description": "The maximum number of records returned. The limit for [getEvents](https://developers.stellar.org/network/soroban-rpc/getEvents) can range from 1 to 10000 - an upper limit that is hardcoded in Soroban-RPC for performance reasons. If this argument isn't designated, it defaults to 100." + } + }, + "required": [] + } +} diff --git a/openrpc/src/schemas/ResourceConfig.json b/openrpc/src/schemas/ResourceConfig.json new file mode 100644 index 000000000..92cfd4b42 --- /dev/null +++ b/openrpc/src/schemas/ResourceConfig.json @@ -0,0 +1,14 @@ +{ + "ResourceConfig": { + "title": "resourceConfig", + "description": "Configuration for how resources will be calculated.", + "type": "object", + "properties": { + "instructionLeeway": { + "title": "instructionLeeway", + "description": "Allow this many extra instructions when budgeting resources.", + "type": "number" + } + } + } +} diff --git a/openrpc/src/schemas/Transaction.json b/openrpc/src/schemas/Transaction.json new file mode 100644 index 000000000..730936cc5 --- /dev/null +++ b/openrpc/src/schemas/Transaction.json @@ -0,0 +1,7 @@ +{ + "Transaction": { + "title": "transaction", + "description": "A Stellar transaction, serialized as a base64 string", + "type": "string" + } +} diff --git a/package.json b/package.json index ae3989ed2..6d752f340 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "bundle-horizon": "redocly bundle openapi/horizon/main.yml --output openapi/horizon/bundled.yml", "bundle-anchor-platform": "redocly bundle openapi/anchor-platform/Platform\\ API.yml --output openapi/anchor-platform/bundled.yml && yarn redocly bundle openapi/anchor-platform/Callbacks\\ API.yml --output openapi/anchor-platform/bundled_callback.yml && yarn redocly bundle openapi/anchor-platform/Custody\\ API.yml --output openapi/anchor-platform/bundled_custody.yml", "bundle-stellar-disbursement-platform": "redocly bundle openapi/stellar-disbursement-platform/main.yml --output openapi/stellar-disbursement-platform/bundled.yml", - "api:gen": "docusaurus gen-api-docs all && rm api/horizon/resources/*.info.mdx && rm api/anchor-platform/resources/*.info.mdx && rm api/anchor-platform/callbacks/*.info.mdx && rm api/stellar-disbursement-platform/resources/*.info.mdx && rm api/anchor-platform/custody-server/*.info.mdx", + "api:gen": "docusaurus gen-api-docs all && rm network/horizon/resources/*.info.mdx && rm network/anchor-platform/resources/*.info.mdx && rm network/anchor-platform/callbacks/*.info.mdx && rm network/stellar-disbursement-platform/resources/*.info.mdx && rm network/anchor-platform/custody-server/*.info.mdx", "api": "yarn api:clean && yarn api:bundle && yarn api:gen", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", @@ -23,7 +23,10 @@ "check:mdx": "prettier -c \"docs/**/*.{md,mdx}\"", "lint:fix": "eslint \"src/**/*.{js,jsx,ts,tsx}\" --fix", "lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", - "prepare": "husky install" + "prepare": "husky install", + "postinstall": "patch-package", + "rpcspec:build": "node openrpc/scripts/build.mjs", + "rpcspec:validate": "node openrpc/scripts/build.mjs && node openrpc/scripts/validate.mjs" }, "dependencies": { "@docusaurus/core": "^2.2.0", @@ -32,6 +35,9 @@ "@docusaurus/remark-plugin-npm2yarn": "^2.4.1", "@mdx-js/react": "^1.6.22", "@metamask/open-rpc-docs-react": "^0.1.2", + "@open-rpc/meta-schema": "^1.14.6", + "@open-rpc/schema-utils-js": "^1.16.1", + "ajv": "^8.12.0", "clsx": "^1.2.1", "docusaurus-plugin-openapi-docs": "^1.7.2", "docusaurus-plugin-sass": "^0.2.2", @@ -40,6 +46,7 @@ "hast-util-is-element": "1.1.0", "mdx-mermaid": "^1.3.2", "mermaid": "^8.11.5", + "patch-package": "^8.0.0", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/patches/@metamask+open-rpc-docs-react+0.1.2.patch b/patches/@metamask+open-rpc-docs-react+0.1.2.patch new file mode 100644 index 000000000..61e8f0de8 --- /dev/null +++ b/patches/@metamask+open-rpc-docs-react+0.1.2.patch @@ -0,0 +1,131 @@ +diff --git a/node_modules/@metamask/open-rpc-docs-react/dist/ExamplePairing/ExamplePairing.js b/node_modules/@metamask/open-rpc-docs-react/dist/ExamplePairing/ExamplePairing.js +index 354ce73..129371f 100644 +--- a/node_modules/@metamask/open-rpc-docs-react/dist/ExamplePairing/ExamplePairing.js ++++ b/node_modules/@metamask/open-rpc-docs-react/dist/ExamplePairing/ExamplePairing.js +@@ -45,10 +45,37 @@ class ExamplePairing extends react_1.Component { + }), {}) + : examplePairing.params.map(((p) => p.value)); + const methodCall = { ++ jsonrpc: "2.0", ++ id: 8675309, + method: methodName, + params, + }; +- const jsCode = `await window.ethereum.request(${JSON.stringify(methodCall, null, " ")});`; ++ if (Object.keys(params).length === 0) { ++ delete methodCall.params ++ } ++ const resultObj = { ++ jsonrpc: "2.0", ++ id: 8675309, ++ result: examplePairing.result.value ++ } ++ // const jsCode = `await window.ethereum.request(${JSON.stringify(methodCall, null, " ")});`; ++ const curlCode = `curl -X POST \\ ++-H 'Content-Type: application/json' \\ ++-d '${JSON.stringify(methodCall, null, 2)}' \\ ++https://soroban-testnet.stellar.org:443 | jq` ++ const jsCode = `let requestBody = ${JSON.stringify(methodCall, null, 2)} ++let res = await fetch('https://soroban-testnet.stellar.org', { ++ method: 'POST', ++ headers: { ++ 'Content-Type': 'application/json', ++ }, ++ body: JSON.stringify(requestBody), ++}) ++let json = await res.json() ++console.log(json)` ++ const pythonCode = `import json, requests ++res = requests.post('https://soroban-testnet.stellar.org', json=${JSON.stringify(methodCall, null, 4)}) ++print(json.dumps(res.json(), indent=4))` + return (react_1.default.createElement("div", null, + react_1.default.createElement("div", null, + react_1.default.createElement(MarkdownDescription_1.default, { uiSchema: uiSchema, source: examplePairing.description || "", className: "example-pairing-description" })), +@@ -56,18 +83,28 @@ class ExamplePairing extends react_1.Component { + react_1.default.createElement("div", null, + react_1.default.createElement("h3", null, "Request"), + react_1.default.createElement("div", null, +- components && components.CodeBlock && react_1.default.createElement(components.CodeBlock, { className: "language-js" }, jsCode), ++ components && components.CodeBlock && components.Tabs && components.TabItem && ++ react_1.default.createElement(components.Tabs, { groupId: "rpc-examples" }, ++ react_1.default.createElement(components.TabItem, { value: "curl", label: "cURL" }, ++ react_1.default.createElement(components.CodeBlock, { className: "language-bash" }, curlCode)), ++ react_1.default.createElement(components.TabItem, { value: "js", label: "JavaScript" }, ++ react_1.default.createElement(components.CodeBlock, { className: "language-js" }, jsCode)), ++ react_1.default.createElement(components.TabItem, { value: "python", label: "Python" }, ++ react_1.default.createElement(components.CodeBlock, { className: "language-python" }, pythonCode)), ++ react_1.default.createElement(components.TabItem, { value: "json", label: "JSON" }, ++ react_1.default.createElement(components.CodeBlock, { className: "language-json" }, JSON.stringify(methodCall, null, 2))), ++ ), + !components?.CodeBlock && + react_1.default.createElement("pre", null, +- react_1.default.createElement("code", null, jsCode))))), ++ react_1.default.createElement("code", null, curlCode))))), + react_1.default.createElement("div", null, + react_1.default.createElement("div", null, + react_1.default.createElement("h3", null, "Result"), + react_1.default.createElement("div", null, +- components && components.CodeBlock && react_1.default.createElement(components.CodeBlock, { className: "language-js" }, JSON.stringify(examplePairing.result.value, null, ' ')), ++ components && components.CodeBlock && react_1.default.createElement(components.CodeBlock, { className: "language-json" }, JSON.stringify(resultObj, null, ' ')), + !components?.CodeBlock && + react_1.default.createElement("pre", null, +- react_1.default.createElement("code", null, JSON.stringify(examplePairing.result.value)))))))); ++ react_1.default.createElement("code", null, JSON.stringify(resultObj, null, ' ')))))))); + } + } + exports.default = ExamplePairing; +diff --git a/node_modules/@metamask/open-rpc-docs-react/dist/Method/Method.d.ts b/node_modules/@metamask/open-rpc-docs-react/dist/Method/Method.d.ts +index b8b0f3d..9a49549 100644 +--- a/node_modules/@metamask/open-rpc-docs-react/dist/Method/Method.d.ts ++++ b/node_modules/@metamask/open-rpc-docs-react/dist/Method/Method.d.ts +@@ -11,6 +11,14 @@ interface IProps { + children: string; + className?: string; + }>; ++ Tabs?: React.FC<{ ++ children: any; ++ }>; ++ TabItem?: React.FC<{ ++ children: any; ++ label: string; ++ value: string; ++ }>; + }; + onExamplePairingChange?: (examplePairing: ExamplePairingObject | undefined) => void; + reactJsonOptions?: object; +diff --git a/node_modules/@metamask/open-rpc-docs-react/dist/Params/Params.js b/node_modules/@metamask/open-rpc-docs-react/dist/Params/Params.js +index 4b059a6..b5dafce 100644 +--- a/node_modules/@metamask/open-rpc-docs-react/dist/Params/Params.js ++++ b/node_modules/@metamask/open-rpc-docs-react/dist/Params/Params.js +@@ -34,17 +34,20 @@ class Params extends react_1.Component { + if (!params || params.length === 0) { + return null; + } +- return (params.map((row, i) => react_1.default.createElement("section", null, +- react_1.default.createElement("h3", null, +- i + 1, +- ". ", +- row.name, +- (row.required === undefined || +- row.required === true) && +- react_1.default.createElement("span", { className: "content-descriptor-summary" }, +- react_1.default.createElement("i", null, +- react_1.default.createElement("small", null, " (required)")))), +- react_1.default.createElement(ContentDescriptor_1.default, { key: row.name, contentDescriptor: row, uiSchema: uiSchema })))); ++ return ( ++ [react_1.default.createElement("p", { key: "param-structure", className: "param-structure-requirement" }, "Please note that parameter structure within the request must contain named parameters as a by-name object, and not as positional arguments in a by-position array"), ++ ...params.map((row, i) => react_1.default.createElement("section", null, ++ react_1.default.createElement("h3", null, ++ i + 1, ++ ". ", ++ row.name, ++ (row.required === undefined || ++ row.required === true) && ++ react_1.default.createElement("span", { className: "content-descriptor-summary" }, ++ react_1.default.createElement("i", null, ++ react_1.default.createElement("small", null, " (required)")))), ++ react_1.default.createElement(ContentDescriptor_1.default, { key: row.name, contentDescriptor: row, uiSchema: uiSchema })))] ++ ); + } + } + exports.default = Params; diff --git a/sidebars.js b/sidebars.js index 22e20f0f8..f5f512dfb 100644 --- a/sidebars.js +++ b/sidebars.js @@ -36,19 +36,6 @@ const sidebars = { dirName: 'issuing-assets', }] }, - { - type: 'category', - label: 'Anchor Assets', - link: { - type: 'generated-index', - title: 'Anchor Assets', - slug: '/category/anchor-assets', - }, - items: [{ - type: 'autogenerated', - dirName: 'anchoring-assets', - }] - }, { type: 'category', label: 'Build Applications', @@ -62,74 +49,27 @@ const sidebars = { dirName: 'building-apps', }] }, - { - type: 'category', - label: 'Run a Core Node', - link: { - type: 'doc', - id: 'run-core-node/index' - }, - // I can't (yet) figure out a way to autogenerate this without having - // `overview` show up as an item - items: [ - 'run-core-node/prerequisites', - 'run-core-node/installation', - 'run-core-node/configuring', - 'run-core-node/publishing-history-archives', - 'run-core-node/running-node', - 'run-core-node/monitoring', - 'run-core-node/commands', - 'run-core-node/network-upgrades', - 'run-core-node/tier-1-orgs', - ] - }, - { - type: 'category', - label: 'Run Platform Services', - link: { - type: 'doc', - id: 'run-platform-server/index' - }, - // I can't (yet) figure out a way to autogenerate this without having - // `overview` show up as an item - items: [ - 'run-platform-server/prerequisites', - 'run-platform-server/installing', - 'run-platform-server/configuring', - 'run-platform-server/running', - 'run-platform-server/ingestion', - 'run-platform-server/monitoring', - 'run-platform-server/scaling', - 'run-platform-server/upgrading', - 'run-platform-server/ingestion-filtering', - ] - }, - { - type: 'category', - label: 'Access Historical Data', - link: { - type: 'generated-index', - title: 'Access Historical Data', - slug: '/category/access-historical-data', - }, - items: [{ - type: 'autogenerated', - dirName: 'accessing-data', - }] - }, - { - type: 'category', - label: 'Use the Stellar Disbursement Platform', - link: { - type: 'generated-index', - title: 'Use the Stellar Disbursement Platform', - slug: '/category/use-the-stellar-disbursement-platform', - }, - items: [{ - type: 'autogenerated', - dirName: 'stellar-disbursement-platform', - }] - }, + // { + // type: 'category', + // label: 'Run a Core Node', + // link: { + // type: 'doc', + // id: 'run-core-node/index' + // }, + // // I can't (yet) figure out a way to autogenerate this without having + // // `overview` show up as an item + // items: [ + // 'run-core-node/prerequisites', + // 'run-core-node/installation', + // 'run-core-node/configuring', + // 'run-core-node/publishing-history-archives', + // 'run-core-node/running-node', + // 'run-core-node/monitoring', + // 'run-core-node/commands', + // 'run-core-node/network-upgrades', + // 'run-core-node/tier-1-orgs', + // ] + // }, { type: 'category', label: 'Encyclopedia', diff --git a/sidebarsApi.js b/sidebarsApi.js deleted file mode 100644 index 7e3f3727a..000000000 --- a/sidebarsApi.js +++ /dev/null @@ -1,44 +0,0 @@ -// @ts-check - -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ -const sidebars = { - horizon: [ - { - type: 'category', - label: 'Horizon API', - items: [ - { - type: "autogenerated", - dirName: "horizon", - }, - ], - collapsible: false, - }, - ], - anchor_platform: [ - { - type: 'category', - label: 'Anchor Platform API', - items: [ - { - type: "autogenerated", - dirName: "anchor-platform", - }, - ], - } - ], - stellar_disbursement_platform: [ - { - type: "category", - label: "Stellar Disbursement Platform API", - items: [ - { - "type": "autogenerated", - "dirName": "stellar-disbursement-platform" - } - ] - } - ] -} - -module.exports = sidebars; diff --git a/sidebarsNetwork.js b/sidebarsNetwork.js new file mode 100644 index 000000000..7fb4b1b18 --- /dev/null +++ b/sidebarsNetwork.js @@ -0,0 +1,81 @@ +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + horizon: [ + { + type: 'category', + label: 'Horizon', + items: [ + { + type: "autogenerated", + dirName: "horizon", + }, + ], + collapsible: false, + }, + ], + hubble: [ + { + type: 'category', + label: 'Hubble', + items: [ + { + type: "autogenerated", + dirName: "hubble", + }, + ], + collapsible: false, + }, + ], + anchor_platform: [ + { + type: 'category', + label: 'Anchor Platform', + items: [ + { + type: "autogenerated", + dirName: "anchor-platform", + }, + ], + }, + ], + stellar_disbursement_platform: [ + { + type: "category", + label: "Stellar Disbursement Platform", + items: [ + { + type: "autogenerated", + dirName: "stellar-disbursement-platform", + }, + ], + }, + ], + soroban_rpc: [ + { + type: "category", + label: "Soroban RPC", + items: [ + { + type: 'autogenerated', + dirName: 'soroban-rpc', + }, + ], + }, + ], + core_node: [ + { + type: 'category', + label: 'Core Node', + items: [ + { + type: 'autogenerated', + dirName: 'core-node', + }, + ], + }, + ], +} + +module.exports = sidebars; diff --git a/src/components/RpcMethod.tsx b/src/components/RpcMethod.tsx index f341dc581..eb0917cf0 100644 --- a/src/components/RpcMethod.tsx +++ b/src/components/RpcMethod.tsx @@ -2,8 +2,16 @@ import Method from "@metamask/open-rpc-docs-react"; import React from "react"; const CodeBlock = require('@theme/CodeBlock').default; +const Tabs = require('@theme/Tabs').default; +const TabItem = require('@theme/TabItem').default; -export const RpcMethod = ({ method }) => { - const rpcMethod = require(`@site/static/assets/rpc-methods/${method}.json`); - return (); -}; \ No newline at end of file +export const RpcMethod = ({ method, platform }) => { + if (platform === 'soroban') { + const rpcDoc = require('@site/static/openrpc.json'); + const rpcMethod = rpcDoc.methods.filter((meth: any) => meth.name === method)[0] + return () + } else { + const rpcMethod = require(`@site/static/assets/rpc-methods/${method}.json`); + return (); + } +}; diff --git a/src/css/custom.scss b/src/css/custom.scss index 97e58fdfa..85cf6a191 100644 --- a/src/css/custom.scss +++ b/src/css/custom.scss @@ -131,3 +131,35 @@ div[class^='announcementBar_'] { var(--site-announcement-bar-stripe-color2) 40px ); } + +/* Navbar customizations */ + +.navbar .subtitle { + small { + text-transform: uppercase; + color: #999; + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + } + + hr { + width: 93%; + height: 4px; + margin: 0.4em auto; + background-color: var(--ifm-menu-color-background-active); + } +} + +.navbar .dropdown > a.active { + color: var(--ifm-color-primary) +} + +/* Customizations to metamask openrpc package styles */ + +select[data-testid="example-pairing-select"] { + padding: 0.75rem; + width: 100%; + margin-bottom: 1rem; + font-size: var(--ifm-font-size-base); + border-radius: 5px; +} diff --git a/src/sidebar-api-generator.js b/src/sidebar-network-generator.js similarity index 100% rename from src/sidebar-api-generator.js rename to src/sidebar-network-generator.js diff --git a/src/theme/ApiItem/Layout/index.js b/src/theme/ApiItem/Layout/index.js index bdd7642c5..d1d72cf75 100644 --- a/src/theme/ApiItem/Layout/index.js +++ b/src/theme/ApiItem/Layout/index.js @@ -1,6 +1,7 @@ import React from "react"; import { MDXProvider } from "@mdx-js/react"; import Layout from "@theme-original/ApiItem/Layout"; +// import DocItem from "@theme-original/DocItem"; import { useDoc } from "@docusaurus/theme-common/internal"; import { WrapperApiReference } from "@site/src/components/WrapperApiReference"; diff --git a/src/theme/ApiItem/index.js b/src/theme/ApiItem/index.js new file mode 100644 index 000000000..e0fa24ac4 --- /dev/null +++ b/src/theme/ApiItem/index.js @@ -0,0 +1,23 @@ +import React from 'react'; +import ApiItem from '@theme-original/ApiItem'; +import DocItem from '@theme-original/DocItem'; + +export default function ApiItemWrapper(props) { + if ( + props.location?.pathname?.includes('admin-guide') + || props.location?.pathname?.startsWith('/network/hubble') + || props.location?.pathname?.startsWith('/network/soroban-rpc') + || props.location?.pathname?.startsWith('/network/core-node') + ) { + return ( + <> + + + ); + } + return ( + <> + + + ); +} diff --git a/src/theme/DocSidebar/index.js b/src/theme/DocSidebar/index.js index 8aba0c34b..81ca44ccb 100644 --- a/src/theme/DocSidebar/index.js +++ b/src/theme/DocSidebar/index.js @@ -5,7 +5,7 @@ export default function DocSidebarWrapper(props) { let newProps // For all `/api` sidebars, remove the parent category from the sidebar - if (props.path.startsWith('/api')) { + if (props.path.startsWith('/network')) { newProps = { ...props, sidebar: props.sidebar[0].items diff --git a/static/openrpc.json b/static/openrpc.json new file mode 100644 index 000000000..0ae4794bf --- /dev/null +++ b/static/openrpc.json @@ -0,0 +1,1211 @@ +{ + "openrpc": "1.2.4", + "info": { + "title": "Soroban RPC", + "description": "Soroban-RPC allows you to communicate directly with Soroban via a JSON RPC interface.", + "termsOfService": "https://stellar.org/terms-of-service", + "contact": { + "name": "Stellar Development Foundation", + "url": "https://stellar.org/connect", + "email": "hello@stellar.org" + }, + "license": { + "name": "Apache 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "20.1.0" + }, + "servers": [ + { + "name": "Testnet", + "url": "https://soroban-testnet.stellar.org:443", + "summary": "Publicly available RPC server maintained by SDF, operating on the Testnet test network.", + "description": "Testnet is meant to be a stable network that runs a production (or near-production) version of the Stellar network." + }, + { + "name": "Futurenet", + "url": "https://rpc-futurenet.stellar.org:443", + "summary": "Publicly available RPC server maintained by SDF, operating on the Futurenet test network.", + "description": "Futurenet is meant to be a bleeding-edge, experimental network that runs an early, test version of the Stellar network." + } + ], + "methods": [ + { + "name": "getEvents", + "summary": "returns contract events", + "description": "Clients can request a filtered list of events emitted by a given ledger range.\n\nSoroban-RPC will support querying within a maximum 24 hours of recent ledgers.\n\nNote, this could be used by the client to only prompt a refresh when there is a new ledger with relevant events. It should also be used by backend Dapp components to \"ingest\" events into their own database for querying and serving.\n\nIf making multiple requests, clients should deduplicate any events received, based on the event's unique id field. This prevents double-processing in the case of duplicate events being received.\n\nBy default soroban-rpc retains the most recent 24 hours of events.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getEvents" + }, + "paramStructure": "by-name", + "params": [ + { + "name": "startLedger", + "summary": "ledger to begin searching from", + "description": "Ledger sequence number to fetch events after (inclusive). This method will return an error if `startLedger` is less than the oldest ledger stored in this node, or greater than the latest ledger seen by this node. If a cursor is included in the request, `startLedger` must be omitted.", + "required": true, + "schema": { + "title": "ledgerSequence", + "description": "Sequence number of the ledger.", + "type": "number" + } + }, + { + "name": "filters", + "summary": "filters to narrow events search", + "description": "List of filters for the returned events. Events matching any of the filters are included. To match a filter, an event must match both a contractId and a topic. Maximum 5 filters are allowed per request.", + "schema": { + "type": "array", + "maxItems": 5, + "items": { + "type": "object", + "required": [], + "properties": { + "type": { + "title": "type", + "type": "string", + "description": "A comma separated list of event types (system, contract, or diagnostic) used to filter events. If omitted, all event types are included." + }, + "contractIds": { + "title": "contractIds", + "type": "array", + "description": "List of contract IDs to query for events. If omitted, return events for all contracts. Maximum 5 contract IDs are allowed per request.", + "maxItems": 5, + "items": { + "title": "contractId", + "description": "A StrKey representation of a contract address (`C...`). ([SEP-23](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md#specification)).", + "type": "string" + } + }, + "topics": { + "title": "topics", + "type": "array", + "description": "List of topic filters. If omitted, query for all events. If multiple filters are specified, events will be included if they match any of the filters. Maximum 5 filters are allowed per request.", + "maxItems": 5, + "items": { + "type": "array", + "description": "A `TopicFilter` is `SegmentMatcher[]`\n\n- The list can be 1-4 `SegmentMatchers` long.", + "minItems": 1, + "maxItems": 4, + "items": { + "title": "SegmentMatcher", + "type": "string", + "description": "A `SegmentMatcher` is one of the following:\n\n- For an exact segment match, a string containing a base64-encoded ScVal\n\n- For a wildcard single-segment match, the string \"*\", matches exactly one segment." + } + } + } + } + } + } + }, + { + "name": "pagination", + "summary": "pagination options", + "description": "Pagination in soroban-rpc is similar to pagination in Horizon. See [Pagination](https://developers.stellar.org/network/soroban-rpc/pagination).", + "required": false, + "schema": { + "type": "object", + "required": [], + "properties": { + "cursor": { + "type": "string", + "description": "A string ID that points to a specific location in a collection of responses and is pulled from the `paging_token` value of a record. When a cursor is provided Soroban-RPC will _not_ include the element whose id matches the cursor in the response. Only elements which appear _after_ the cursor are included." + }, + "limit": { + "type": "number", + "description": "The maximum number of records returned. The limit for [getEvents](https://developers.stellar.org/network/soroban-rpc/getEvents) can range from 1 to 10000 - an upper limit that is hardcoded in Soroban-RPC for performance reasons. If this argument isn't designated, it defaults to 100." + } + } + } + } + ], + "result": { + "name": "getEventsResult", + "schema": { + "type": "object", + "properties": { + "latestLedger": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "number" + }, + "events": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "title": "type", + "description": "The type of event emission.", + "type": "string", + "enum": [ + "contract", + "diagnostic", + "system" + ] + }, + "ledger": { + "title": "ledgerSequence", + "description": "Sequence number of the ledger in which this event was emitted.", + "type": "number" + }, + "ledgerClosedAt": { + "type": "string", + "description": "[ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) timestamp of the ledger closing time" + }, + "contractId": { + "title": "contractId", + "description": "StrKey representation of the contract address that emitted this event.", + "type": "string" + }, + "id": { + "description": "Unique identifier for this event.\n\n- The event's unique id field is based on a [`toid` from Horizon](https://github.com/stellar/go/blob/master/toid/main.go) as used in Horizon's /effects endpoint.\n\n- https://github.com/stellar/go/blob/master/services/horizon/internal/db2/history/effect.go#L58\n\n- Specifically, it is a string containing:\n\n- bigint(32 bit ledger sequence + 20 bit txn number + 12 bit operation) + `` + number for the event within the operation.\n\n- For example: `1234-1`", + "type": "string" + }, + "pagingToken": { + "description": "Duplicate of `id` field, but in the standard place for pagination tokens.", + "type": "string" + }, + "inSuccessfulContractCall": { + "description": "If true the event was emitted during a successful contract call.", + "type": "boolean" + }, + "topic": { + "type": "array", + "description": "List containing the topic this event was emitted with.", + "minItems": 1, + "maxItems": 4, + "items": { + "title": "SegmentMatcher", + "type": "string", + "description": "A `SegmentMatcher` is one of the following:\n\n- For an exact segment match, a string containing a base64-encoded ScVal\n\n- For a wildcard single-segment match, the string \"*\", matches exactly one segment." + } + }, + "value": { + "description": "The data the event was broadcasting in the emitted event.", + "type": "object", + "properties": { + "xdr": { + "description": "The emitted body value of the event (serialized in a base64 string).", + "type": "string" + } + } + } + } + } + } + } + } + }, + "examples": [ + { + "name": "Native XLM Transfer Events", + "description": "Example request to the `getEvents` method, filtering for `transfer` events for native Lumens, and limiting the number of returned events to 2.", + "params": [ + { + "name": "startLedger", + "value": 2530000 + }, + { + "name": "filters", + "value": [ + { + "type": "contract", + "contractIds": [ + "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC" + ], + "topics": [ + [ + "AAAADwAAAAh0cmFuc2Zlcg==", + "*", + "*", + "*" + ] + ] + } + ] + }, + { + "name": "pagination", + "value": { + "limit": 2 + } + } + ], + "result": { + "name": "getEventsResult", + "value": { + "events": [ + { + "type": "contract", + "ledger": 2531021, + "ledgerClosedAt": "2023-11-15T08:58:25Z", + "contractId": "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC", + "id": "0010870652420501504-0000000004", + "pagingToken": "0010870652420501504-0000000004", + "topic": [ + "AAAADwAAAAh0cmFuc2Zlcg==", + "AAAAEgAAAAAAAAAAjt5DlR5mhneFx/1Lct0ToW555OFzg/Y28++28cJXU+I=", + "AAAAEgAAAAAAAAAA33Fu/fnobL8/u8tyLCIZzpMXbsRWRBlfAuEv7fBvTwM=", + "AAAADgAAAAZuYXRpdmUAAA==" + ], + "value": { + "xdr": "AAAACgAAAAAAAAAAAAAAAAAAAJY=" + }, + "inSuccessfulContractCall": true + }, + { + "type": "contract", + "ledger": 2531273, + "ledgerClosedAt": "2023-11-15T09:20:38Z", + "contractId": "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC", + "id": "0010871734752280576-0000000004", + "pagingToken": "0010871734752280576-0000000004", + "topic": [ + "AAAADwAAAAh0cmFuc2Zlcg==", + "AAAAEgAAAAAAAAAA+YQ+FM83vUUwQ6P3gKCMVTyC3/jO+DERXTWJDKEjagU=", + "AAAAEgAAAAAAAAAAwl0UMLLKYqMEedoowz8VnwbRywjcKEeQegoMmU6C9/0=", + "AAAADgAAAAZuYXRpdmUAAA==" + ], + "value": { + "xdr": "AAAACgAAAAAAAAAAAAAAAAAAAJY=" + }, + "inSuccessfulContractCall": true + } + ], + "latestLedger": 2539388 + } + } + }, + { + "name": "All Events", + "description": "Example request to the `getEvents` method, filtering for all events of all types for any and all contracts.", + "params": [ + { + "name": "startLedger", + "value": 2530000 + }, + { + "name": "pagination", + "value": { + "limit": 2 + } + } + ], + "result": { + "name": "getEventsResult", + "value": { + "events": [ + { + "type": "diagnostic", + "ledger": 2530001, + "ledgerClosedAt": "2023-11-15T07:29:05Z", + "contractId": "", + "id": "0010866271553875968-0000000000", + "pagingToken": "0010866271553875968-0000000000", + "topic": [ + "AAAADwAAAAdmbl9jYWxsAA==", + "AAAADQAAACCGE7Aj5EvXxmmTtyojmlFF/Qv3qMTyL7THd6SG4GHZxQ==", + "AAAADwAAABFzZXRfY3VycmVuY3lfcmF0ZQAAAA==" + ], + "value": { + "xdr": "AAAAEAAAAAEAAAACAAAADwAAAAN1c2QAAAAACQAAAAAAAAAAAAAAAAASHQg=" + }, + "inSuccessfulContractCall": true + }, + { + "type": "diagnostic", + "ledger": 2530001, + "ledgerClosedAt": "2023-11-15T07:29:05Z", + "contractId": "CCDBHMBD4RF5PRTJSO3SUI42KFC72C7XVDCPEL5UY532JBXAMHM4KOQ3", + "id": "0010866271553875968-0000000001", + "pagingToken": "0010866271553875968-0000000001", + "topic": [ + "AAAADwAAAAlmbl9yZXR1cm4AAAA=", + "AAAADwAAABFzZXRfY3VycmVuY3lfcmF0ZQAAAA==" + ], + "value": { + "xdr": "AAAAAQ==" + }, + "inSuccessfulContractCall": true + } + ], + "latestLedger": 2539529 + } + } + } + ] + }, + { + "name": "getHealth", + "summary": "returns node health", + "description": "General node health check.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getHealth" + }, + "paramStructure": "by-name", + "params": [], + "result": { + "name": "getHealthResult", + "schema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "\"healthy\"" + } + } + } + }, + "examples": [ + { + "name": "Current node health", + "description": "Example request to the `getHealth` method", + "params": [], + "result": { + "name": "getHealthResult", + "value": { + "status": "healthy" + } + } + } + ] + }, + { + "name": "getLatestLedger", + "summary": "returns latest known ledger", + "description": "For finding out the current latest known ledger of this node. This is a subset of the ledger info from Horizon.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getLatestLedger" + }, + "paramStructure": "by-name", + "params": [], + "result": { + "name": "getLatestLedgerResult", + "schema": { + "type": "object", + "properties": { + "id": { + "title": "id", + "type": "string", + "minLength": 64, + "maxLength": 64, + "pattern": "^[a-f\\d]{64}$", + "description": "Hash identifier of the latest ledger (as a hex-encoded string) known to Soroban RPC at the time it handled the request." + }, + "protocolVersion": { + "title": "protocolVersion", + "description": "Stellar Core protocol version associated with the latest ledger.", + "type": "number" + }, + "sequence": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "number" + } + } + } + }, + "examples": [ + { + "name": "Details of the Current Ledger", + "description": "Example request to the `getLatestLedger` method.", + "params": [], + "result": { + "name": "getLatestLedgerResult", + "value": { + "id": "c73c5eac58a441d4eb733c35253ae85f783e018f7be5ef974258fed067aabb36", + "protocolVersion": 20, + "sequence": 2539605 + } + } + } + ] + }, + { + "name": "getLedgerEntries", + "summary": "returns ledger entries", + "description": "For reading the current value of ledger entries directly.\n\nAllows you to directly inspect the current state of a contract, a contract's code, or any other ledger entry. This is a backup way to access your contract data which may not be available via events or `simulateTransaction`.\n\nTo fetch contract wasm byte-code, use the ContractCode ledger entry key.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getLedgerEntries" + }, + "paramStructure": "by-name", + "params": [ + { + "name": "keys", + "summary": "array of ledger keys", + "description": "Array containing the keys of the ledger entries you wish to retrieve. (an array of serialized base64 strings)", + "required": true, + "schema": { + "description": "Array containing ledger keys.", + "type": "array", + "items": { + "type": "string", + "description": "Ledger key, serialized as a base64 string, corresponding to an existing ledger entry you wish to retrieve." + } + } + } + ], + "result": { + "name": "getLedgerEntriesResult", + "schema": { + "type": "object", + "required": [ + "latestLedger" + ], + "properties": { + "latestLedger": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "number" + }, + "entries": { + "type": "array", + "description": "Array of objects containing all found ledger entries", + "items": { + "type": "object", + "description": "Object containing information about an existing ledger entry.", + "properties": { + "key": { + "type": "string", + "description": "The key of the ledger entry (serialized in a base64 string)." + }, + "xdr": { + "type": "string", + "description": "The current value of the given ledger entry (serialized in a base64 string)." + }, + "lastModifiedLedgerSeq": { + "title": "ledgerSequence", + "description": "The ledger sequence number of the last time this entry was updated.", + "type": "number" + }, + "liveUntilLedgerSeq": { + "title": "ledgerSequence", + "description": "Sequence number of the ledger.", + "type": "number" + } + } + } + } + } + } + }, + "examples": [ + { + "name": "Retrieve a Contract's Counter Entry for an Address", + "description": "Example request to the `getNetwork` method for a `Counter(Address)` ledger entry.", + "params": [ + { + "name": "keys", + "summary": "ledger key for an address' counter entry", + "description": "A ledger key that will request a ledger entry defined using a tuple variant enum in a contract: `Counter(Address)`", + "value": [ + "AAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAE=" + ] + } + ], + "result": { + "name": "getLedgerEntriesResult", + "value": { + "entries": [ + { + "key": "AAAAB+qfy4GuVKKfazvyk4R9P9fpo2n9HICsr+xqvVcTF+DC", + "xdr": "AAAABgAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAQAAAAAQAAAAIAAAAPAAAAB0NvdW50ZXIAAAAAEgAAAAAAAAAAIOHWwMbBgBiAnwRt4k9nChmEOoSuLCVs2eqK9Qub+hgAAAABAAAAAwAAAAw=", + "lastModifiedLedgerSeq": 2552504 + } + ], + "latestLedger": 2552990 + } + } + }, + { + "name": "Retrieve a Token's Balance Entry for Contract", + "description": "Example request to the `getNetwork` method for a SAC balance ledger entry belonging to a contract.", + "params": [ + { + "name": "keys", + "summary": "ledger key for a contract's native XLM balance", + "description": "A ledger key that will request a ledger entry corresponding to a contract's balance on the native XLM Stellar Asset Contract.", + "value": [ + "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==" + ] + } + ], + "result": { + "name": "getLedgerEntriesResult", + "value": { + "entries": [ + { + "key": "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==", + "xdr": "AAAABgAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAQAAAAAQAAAAIAAAAPAAAAB0JhbGFuY2UAAAAAEgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAAAEAAAARAAAAAQAAAAMAAAAPAAAABmFtb3VudAAAAAAACgAAAAAAAAAAAAAAAB3NZQAAAAAPAAAACmF1dGhvcml6ZWQAAAAAAAAAAAABAAAADwAAAAhjbGF3YmFjawAAAAAAAAAA", + "lastModifiedLedgerSeq": 2553612 + } + ], + "latestLedger": 2553713 + } + } + }, + { + "name": "Retrieve Multiple Ledger Entries from Different Contracts.", + "description": "Example request to the `getNetwork` method for a `Counter(Address)` ledger entry and a SAC balance ledger entry.", + "params": [ + { + "name": "keys", + "summary": "ledger keys for multiple ledger entries", + "description": "Two ledger keys: One for a counter entry, and one for a contract's native XLM balance.", + "value": [ + "AAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAE=", + "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==" + ] + } + ], + "result": { + "name": "getLedgerEntriesResult", + "value": { + "entries": [ + { + "key": "AAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAE=", + "xdr": "AAAABgAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAQAAAAAQAAAAIAAAAPAAAAB0JhbGFuY2UAAAAAEgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAAAEAAAARAAAAAQAAAAMAAAAPAAAABmFtb3VudAAAAAAACgAAAAAAAAAAAAAAAB3NZQAAAAAPAAAACmF1dGhvcml6ZWQAAAAAAAAAAAABAAAADwAAAAhjbGF3YmFjawAAAAAAAAAA", + "lastModifiedLedgerSeq": 2553612 + }, + { + "key": "AAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABAAAAABAAAAAgAAAA8AAAAHQmFsYW5jZQAAAAASAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAAQ==", + "xdr": "AAAABgAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAQAAAAAQAAAAIAAAAPAAAAB0NvdW50ZXIAAAAAEgAAAAAAAAAAIOHWwMbBgBiAnwRt4k9nChmEOoSuLCVs2eqK9Qub+hgAAAABAAAAAwAAAAw=", + "lastModifiedLedgerSeq": 2552504 + } + ], + "latestLedger": 2553767 + } + } + } + ] + }, + { + "name": "getNetwork", + "summary": "returns network config", + "description": "General information about the currently configured network. This response will contain all the information needed to successfully submit transactions to the network this node serves.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getNetwork" + }, + "paramStructure": "by-name", + "params": [], + "result": { + "name": "getNetworkResult", + "schema": { + "type": "object", + "required": [ + "passphrase", + "protocolVersion" + ], + "properties": { + "passphrase": { + "title": "networkPassphrase", + "description": "Network passphrase configured for this Soroban RPC node.", + "type": "string" + }, + "protocolVersion": { + "title": "protocolVersion", + "description": "Stellar Core protocol version associated with the latest ledger.", + "type": "number" + }, + "friendbotUrl": { + "type": "string", + "description": "(optional) The URL of this network's \"friendbot\" faucet" + } + } + } + }, + "examples": [ + { + "name": "Testnet Network Configuration", + "description": "Example request to the `getNetwork` method for a node connected to the Stellar Testnet network.", + "params": [], + "result": { + "name": "getNetworkResult", + "value": { + "friendbotUrl": "https://friendbot-testnet.stellar.org/", + "passphrase": "Test SDF Network ; September 2015", + "protocolVersion": 20 + } + } + }, + { + "name": "Futurenet Network Configuration", + "description": "Example request to the `getNetwork` method for a node connected to the Stellar Futurenet network.", + "params": [], + "result": { + "name": "getNetworkResult", + "value": { + "friendbotUrl": "https://friendbot-futurenet.stellar.org/", + "passphrase": "Test SDF Future Network ; October 2022", + "protocolVersion": 20 + } + } + } + ] + }, + { + "name": "getTransaction", + "summary": "returns transaction details", + "description": "The getTransaction method provides details about the specified transaction. Clients are expected to periodically query this method to ascertain when a transaction has been successfully recorded on the blockchain. The soroban-rpc system maintains a restricted history of recently processed transactions, with the default retention window set at 1440 ledgers, approximately equivalent to a 2-hour timeframe. For private soroban-rpc instances, it is possible to modify the retention window value by adjusting the transaction-retention-window configuration setting. For comprehensive debugging needs that extend beyond the 2-hour timeframe, it is advisable to retrieve transaction information from Horizon, as it provides a lasting and persistent record.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/getTransaction" + }, + "paramStructure": "by-name", + "params": [ + { + "name": "hash", + "summary": "transaction hash to query", + "description": "Transaction hash to query as a hex-encoded string. This transaction hash should correspond to transaction that has been previously submitted to the network.", + "required": true, + "schema": { + "title": "hash", + "type": "string", + "minLength": 64, + "maxLength": 64, + "pattern": "^[a-f\\d]{64}$", + "description": "Transaction hash (as a hex-encoded string)" + } + } + ], + "result": { + "name": "getTransactionResult", + "schema": { + "type": "object", + "required": [ + "status", + "latestLedger", + "latestLedgerCloseTime", + "oldestLedger", + "oldestLedgerCloseTime" + ], + "properties": { + "status": { + "type": "string", + "description": "The current status of the transaction by hash", + "enum": [ + "SUCCESS", + "NOT_FOUND", + "FAILED" + ] + }, + "latestLedger": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "number" + }, + "latestLedgerCloseTime": { + "title": "latestLedgerCloseTime", + "description": "The unix timestamp of the close time of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "string" + }, + "oldestLedger": { + "title": "oldestLedger", + "description": "The sequence number of the oldest ledger ingested by Soroban RPC at the time it handled the request.", + "type": "number" + }, + "oldestLedgerCloseTime": { + "title": "oldestLedgerCloseTime", + "description": "The unix timestamp of the close time of the oldest ledger ingested by Soroban RPC at the time it handled the request.", + "type": "string" + }, + "ledger": { + "title": "ledger", + "description": "(optional) The sequence number of the ledger which included the transaction. This field is only present if `status` is `SUCCESS` or `FAILED`.", + "type": "number" + }, + "createdAt": { + "title": "createdAt", + "description": "(optional) The unix timestamp of when the transaction was included in the ledger. This field is only present if `status` is `SUCCESS` or `FAILED`.", + "type": "string" + }, + "applicationOrder": { + "type": "number", + "description": "(optional) The index of the transaction among all transactions included in the ledger. This field is only present if `status` is `SUCCESS` or `FAILED`." + }, + "feeBump": { + "type": "boolean", + "description": "(optional) Indicates whether the transaction was fee bumped. This field is only present if `status` is `SUCCESS` or `FAILED`." + }, + "envelopeXdr": { + "type": "string", + "description": "(optional) A base64 encoded string of the raw TransactionEnvelope XDR struct for this transaction." + }, + "resultXdr": { + "type": "string", + "description": "(optional) A base64 encoded string of the raw TransactionResult XDR struct for this transaction. This field is only present if `status` is `SUCCESS` or `FAILED`." + }, + "resultMetaXdr": { + "type": "string", + "description": "(optional) A base64 encoded string of the raw TransactionResultMeta XDR struct for this transaction." + } + } + } + }, + "examples": [ + { + "name": "Successful Transaction", + "description": "Query for a transaction hash that returns `SUCCESS` from the RPC node.", + "params": [ + { + "name": "hash", + "summary": "a recent transaction hash", + "description": "Transaction hash that hit the network recently enough to still be visible through the RPC node.", + "value": "6bc97bddc21811c626839baf4ab574f4f9f7ddbebb44d286ae504396d4e752da" + } + ], + "result": { + "name": "getTransactionResult", + "value": { + "status": "SUCCESS", + "latestLedger": 2540076, + "latestLedgerCloseTime": "1700086333", + "oldestLedger": 2538637, + "oldestLedgerCloseTime": "1700078796", + "applicationOrder": 1, + "envelopeXdr": "AAAAAgAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owCpsoQAJY3OAAAjqgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAARc2V0X2N1cnJlbmN5X3JhdGUAAAAAAAACAAAADwAAAANldXIAAAAACQAAAAAAAAAAAAAAAAARCz4AAAABAAAAAAAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAARc2V0X2N1cnJlbmN5X3JhdGUAAAAAAAACAAAADwAAAANldXIAAAAACQAAAAAAAAAAAAAAAAARCz4AAAAAAAAAAQAAAAAAAAABAAAAB4408vVXuLU3mry897TfPpYjjsSN7n42REos241RddYdAAAAAQAAAAYAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAAUAAAAAQFvcYAAAImAAAAHxAAAAAAAAAACAAAAARio+aMAAABATbFMyom/TUz87wHex0LoYZA8jbNJkXbaDSgmOdk+wSBFJuMuta+/vSlro0e0vK2+1FqD/zWHZeYig4pKmM3rDA==", + "resultXdr": "AAAAAAARFy8AAAAAAAAAAQAAAAAAAAAYAAAAAMu8SHUN67hTUJOz3q+IrH9M/4dCVXaljeK6x1Ss20YWAAAAAA==", + "resultMetaXdr": "AAAAAwAAAAAAAAACAAAAAwAmwiAAAAAAAAAAAMYVjXj9HUoPRUa1NuLlinh3su4xbSJBssz8BSIYqPmjAAAAFUHZob0AJY3OAAAjqQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAACbCHwAAAABlVUH3AAAAAAAAAAEAJsIgAAAAAAAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owAAABVB2aG9ACWNzgAAI6oAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAmwiAAAAAAZVVB/AAAAAAAAAABAAAAAgAAAAMAJsIfAAAABgAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAAUAAAAAQAAABMAAAAAjjTy9Ve4tTeavLz3tN8+liOOxI3ufjZESizbjVF11h0AAAABAAAABQAAABAAAAABAAAAAQAAAA8AAAAJQ29yZVN0YXRlAAAAAAAAEQAAAAEAAAAGAAAADwAAAAVhZG1pbgAAAAAAABIAAAAAAAAAADn1LT+CCK/HiHMChoEi/AtPrkos4XRR2E45Pr25lb3/AAAADwAAAAljb2xfdG9rZW4AAAAAAAASAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAADwAAAAxvcmFjbGVfYWRtaW4AAAASAAAAAAAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owAAAA8AAAAKcGFuaWNfbW9kZQAAAAAAAAAAAAAAAAAPAAAAEHByb3RvY29sX21hbmFnZXIAAAASAAAAAAAAAAAtSfyAwmj05lZ0WduHsQYQZgvahCNVtZyqS2HRC99kyQAAAA8AAAANc3RhYmxlX2lzc3VlcgAAAAAAABIAAAAAAAAAAEM5BlXva0R5UN6SCMY+6evwJa4mY/f062z0TKLnqN4wAAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADZXVyAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAAUGpebFxuPbvxZFzOxh8TWAxUwFgraPxPuJEY/8yhiYEAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVBvgAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEQb8AAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADdXNkAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAATUEqdkvrE2LnSiwOwed3v4VEaulOEiS1rxQw6rJkfxCAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVB9wAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEnzuAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA2V1cgAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADZXVyAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAAAlQL5AAAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAAlQL5AAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAABAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA3VzZAAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADdXNkAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAABF2WS4AAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAA7msoAAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAACAAAAAAAAAAEAJsIgAAAABgAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAAUAAAAAQAAABMAAAAAjjTy9Ve4tTeavLz3tN8+liOOxI3ufjZESizbjVF11h0AAAABAAAABQAAABAAAAABAAAAAQAAAA8AAAAJQ29yZVN0YXRlAAAAAAAAEQAAAAEAAAAGAAAADwAAAAVhZG1pbgAAAAAAABIAAAAAAAAAADn1LT+CCK/HiHMChoEi/AtPrkos4XRR2E45Pr25lb3/AAAADwAAAAljb2xfdG9rZW4AAAAAAAASAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAADwAAAAxvcmFjbGVfYWRtaW4AAAASAAAAAAAAAADGFY14/R1KD0VGtTbi5Yp4d7LuMW0iQbLM/AUiGKj5owAAAA8AAAAKcGFuaWNfbW9kZQAAAAAAAAAAAAAAAAAPAAAAEHByb3RvY29sX21hbmFnZXIAAAASAAAAAAAAAAAtSfyAwmj05lZ0WduHsQYQZgvahCNVtZyqS2HRC99kyQAAAA8AAAANc3RhYmxlX2lzc3VlcgAAAAAAABIAAAAAAAAAAEM5BlXva0R5UN6SCMY+6evwJa4mY/f062z0TKLnqN4wAAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADZXVyAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAAUGpebFxuPbvxZFzOxh8TWAxUwFgraPxPuJEY/8yhiYEAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVB/AAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEQs+AAAAEAAAAAEAAAACAAAADwAAAAhDdXJyZW5jeQAAAA8AAAADdXNkAAAAABEAAAABAAAABQAAAA8AAAAGYWN0aXZlAAAAAAAAAAAAAQAAAA8AAAAIY29udHJhY3QAAAASAAAAATUEqdkvrE2LnSiwOwed3v4VEaulOEiS1rxQw6rJkfxCAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAAC2xhc3RfdXBkYXRlAAAAAAUAAAAAZVVB9wAAAA8AAAAEcmF0ZQAAAAkAAAAAAAAAAAAAAAAAEnzuAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA2V1cgAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADZXVyAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA2V1cgAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAAAlQL5AAAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAAlQL5AAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAABAAAAEAAAAAEAAAACAAAADwAAAApWYXVsdHNJbmZvAAAAAAAPAAAAA3VzZAAAAAARAAAAAQAAAAgAAAAPAAAADGRlbm9taW5hdGlvbgAAAA8AAAADdXNkAAAAAA8AAAAKbG93ZXN0X2tleQAAAAAAEAAAAAEAAAACAAAADwAAAARTb21lAAAAEQAAAAEAAAADAAAADwAAAAdhY2NvdW50AAAAABIAAAAAAAAAAGKaH7iFUU2kfGOJGONeYuJ2U2QUeQ+zOEfYZvAoeHDsAAAADwAAAAxkZW5vbWluYXRpb24AAAAPAAAAA3VzZAAAAAAPAAAABWluZGV4AAAAAAAACQAAAAAAAAAAAAAAA7msoAAAAAAPAAAADG1pbl9jb2xfcmF0ZQAAAAkAAAAAAAAAAAAAAAAAp9jAAAAADwAAABFtaW5fZGVidF9jcmVhdGlvbgAAAAAAAAkAAAAAAAAAAAAAAAA7msoAAAAADwAAABBvcGVuaW5nX2NvbF9yYXRlAAAACQAAAAAAAAAAAAAAAACveeAAAAAPAAAACXRvdGFsX2NvbAAAAAAAAAkAAAAAAAAAAAAAABF2WS4AAAAADwAAAAp0b3RhbF9kZWJ0AAAAAAAJAAAAAAAAAAAAAAAA7msoAAAAAA8AAAAMdG90YWxfdmF1bHRzAAAABQAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAFQAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAwAAAA8AAAAHZm5fY2FsbAAAAAANAAAAIIYTsCPkS9fGaZO3KiOaUUX9C/eoxPIvtMd3pIbgYdnFAAAADwAAABFzZXRfY3VycmVuY3lfcmF0ZQAAAAAAABAAAAABAAAAAgAAAA8AAAADZXVyAAAAAAkAAAAAAAAAAAAAAAAAEQs+AAAAAQAAAAAAAAABhhOwI+RL18Zpk7cqI5pRRf0L96jE8i+0x3ekhuBh2cUAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAARc2V0X2N1cnJlbmN5X3JhdGUAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAACnJlYWRfZW50cnkAAAAAAAUAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAt3cml0ZV9lbnRyeQAAAAAFAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAQbGVkZ2VyX3JlYWRfYnl0ZQAAAAUAAAAAAACJaAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAABFsZWRnZXJfd3JpdGVfYnl0ZQAAAAAAAAUAAAAAAAAHxAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAA1yZWFkX2tleV9ieXRlAAAAAAAABQAAAAAAAABUAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAADndyaXRlX2tleV9ieXRlAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAOcmVhZF9kYXRhX2J5dGUAAAAAAAUAAAAAAAAH6AAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAA93cml0ZV9kYXRhX2J5dGUAAAAABQAAAAAAAAfEAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAADnJlYWRfY29kZV9ieXRlAAAAAAAFAAAAAAAAgYAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAPd3JpdGVfY29kZV9ieXRlAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAplbWl0X2V2ZW50AAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAPZW1pdF9ldmVudF9ieXRlAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAhjcHVfaW5zbgAAAAUAAAAAATLTQAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAAhtZW1fYnl0ZQAAAAUAAAAAACqhewAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAABFpbnZva2VfdGltZV9uc2VjcwAAAAAAAAUAAAAAABFfSQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAAA9tYXhfcndfa2V5X2J5dGUAAAAABQAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAADwAAAAxjb3JlX21ldHJpY3MAAAAPAAAAEG1heF9yd19kYXRhX2J5dGUAAAAFAAAAAAAAB+gAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAPAAAADGNvcmVfbWV0cmljcwAAAA8AAAAQbWF4X3J3X2NvZGVfYnl0ZQAAAAUAAAAAAACBgAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAA8AAAAMY29yZV9tZXRyaWNzAAAADwAAABNtYXhfZW1pdF9ldmVudF9ieXRlAAAAAAUAAAAAAAAAAA==", + "ledger": 2540064, + "createdAt": "1700086268" + } + } + }, + { + "name": "Not Found Transaction", + "description": "Query for a transaction hash that returns `NOT_FOUND` from the RPC node.", + "params": [ + { + "name": "hash", + "summary": "an old transaction hash", + "description": "Transaction has that is old enough for the RPC node to have forgotten about it.", + "value": "85f7aa8bfda425b98c0e53ffe56796ffd8865ec2fcc3ad71abf120801e2a14e5" + } + ], + "result": { + "name": "getTransactionResult", + "value": { + "status": "NOT_FOUND", + "latestLedger": 2540099, + "latestLedgerCloseTime": "1700086455", + "oldestLedger": 2538660, + "oldestLedgerCloseTime": "1700078913" + } + } + }, + { + "name": "Failed Transaction", + "description": "Query for a transaction hash that returns `FAILED` from the RPC node.", + "params": [ + { + "name": "hash", + "summary": "a failed transaction hash", + "description": "Transaction hash that failed to be accepted into a ledger.", + "value": "2e4c699cbcb8ee83fffb857c9579bcc91f73f0df2a0444292f66e37563785929" + } + ], + "result": { + "name": "getTransactionResult", + "value": { + "status": "FAILED", + "latestLedger": 2540124, + "latestLedgerCloseTime": "1700086588", + "oldestLedger": 2538685, + "oldestLedgerCloseTime": "1700079044", + "applicationOrder": 2, + "envelopeXdr": "AAAAAgAAAABZvyflsZ5FumtSdS+t0/YnWWML3YWdzX1BGk/Qy786aQAAAG4AFyJfAABKvgAAAAIAAAAAAAAAAQAmwlEAJsK1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAE/fr1kk7lqP0srDPW4JExF1MWmpsG49FsRE3b0vMCmzAAAAAUVVUlMAAAAArPm4/+q9j4dl178h2JjrqjgRXnQ1WiGkyVy+nv3nGkEAAAAAAVjZQAAAAAAAAAABy786aQAAAEDybJBtG7V5NrRFpoboRUN/5ecys5wSUgag3CnTtWLmq3JDOxrEjK9noAnu/F5O0E8iXuVzX9BxZSO9JZ+Tw6kK", + "resultXdr": "AAAAAAAAAGT/////AAAAAQAAAAAAAAAB////+gAAAAA=", + "resultMetaXdr": "AAAAAwAAAAAAAAACAAAAAwAmwlIAAAAAAAAAAFm/J+WxnkW6a1J1L63T9idZYwvdhZ3NfUEaT9DLvzppAAAAF0g7NXsAFyJfAABKvQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAACbCSwAAAABlVULiAAAAAAAAAAEAJsJSAAAAAAAAAABZvyflsZ5FumtSdS+t0/YnWWML3YWdzX1BGk/Qy786aQAAABdIOzV7ABciXwAASr4AAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAmwlIAAAAAZVVDBwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "ledger": 2540114, + "createdAt": "1700086535" + } + } + } + ] + }, + { + "name": "sendTransaction", + "summary": "submits a transaction", + "description": "Submit a real transaction to the Stellar network. This is the only way to make changes on-chain.\n\n Unlike Horizon, this does not wait for transaction completion. It simply validates and enqueues the transaction. Clients should call `getTransaction` to learn about transaction success/failure.\n\nThis supports all transactions, not only smart contract-related transactions.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/sendTransaction" + }, + "paramStructure": "by-name", + "params": [ + { + "name": "transaction", + "summary": "transaction to be submitted to the network", + "description": "The signed transaction to broadcast for inclusion in a ledger.", + "required": true, + "schema": { + "title": "transaction", + "description": "A Stellar transaction, serialized as a base64 string", + "type": "string" + } + } + ], + "result": { + "name": "sendTransactionResult", + "summary": "Transaction status and network state.", + "description": "Transaction status and network state. The result will include if the transaction was successfully enqueued, and information about the current ledger.", + "schema": { + "type": "object", + "required": [ + "hash", + "status", + "latestLedger", + "latestLedgerCloseTime" + ], + "properties": { + "hash": { + "title": "hash", + "type": "string", + "minLength": 64, + "maxLength": 64, + "pattern": "^[a-f\\d]{64}$", + "description": "Transaction hash (as a hex-encoded string)" + }, + "status": { + "type": "string", + "description": "The current status of the transaction by hash.", + "enum": [ + "PENDING", + "DUPLICATE", + "TRY_AGAIN_LATER", + "ERROR" + ] + }, + "latestLedger": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "number" + }, + "latestLedgerCloseTime": { + "title": "latestLedgerCloseTime", + "description": "The unix timestamp of the close time of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "string" + }, + "errorResultXdr": { + "type": "string", + "description": "(optional) If the transaction status is `ERROR`, this will be a base64 encoded string of the raw TransactionResult XDR struct containing details on why stellar-core rejected the transaction.", + "contentEncoding": "base64" + }, + "diagnosticEventsXdr": { + "type": "array", + "description": "(optional) If the transaction status is `ERROR`, this field may be present with an array of base64 encoded strings. Each string will decode to a raw DiagnosticEvent XDR struct containing details on why stellar-core rejected the transaction.", + "contentEncoding": "base64", + "items": { + "type": "string" + } + } + } + } + }, + "examples": [ + { + "name": "Pending Transaction", + "description": "Submitting a valid transaction using the `sendTransaction` method, resulting in a `PENDING` status.", + "params": [ + { + "name": "transaction", + "summary": "a valid transaction sent to the network", + "description": "A valid Stellar transaction that was sent to the network successfully.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACgAAAAVIZWxsbwAAAAAAAAEAAAAMU29yb2JhbiBEb2NzAAAAAAAAAAELm/oYAAAAQATr6Ghp/DNO7S6JjEFwcJ9a+dvI6NJr7I/2eQttvoovjQ8te4zKKaapC3mbmx6ld6YKL5T81mxs45TjzdG5zw0=" + } + ], + "result": { + "name": "sendTransactionResult", + "value": { + "status": "PENDING", + "hash": "d8ec9b68780314ffdfdfc2194b1b35dd27d7303c3bceaef6447e31631a1419dc", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + } + }, + { + "name": "Duplicate Transaction", + "description": "Submitting a valid, yet duplicate transaction using the `sendTransaction` method, resulting in a `DUPLICATE` status.", + "params": [ + { + "name": "transaction", + "summary": "a valid transaction sent to the network", + "description": "A valid Stellar transaction that was sent to the network successfully.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACgAAAAVIZWxsbwAAAAAAAAEAAAAMU29yb2JhbiBEb2NzAAAAAAAAAAELm/oYAAAAQATr6Ghp/DNO7S6JjEFwcJ9a+dvI6NJr7I/2eQttvoovjQ8te4zKKaapC3mbmx6ld6YKL5T81mxs45TjzdG5zw0=" + } + ], + "result": { + "name": "sendTransactionResult", + "value": { + "status": "DUPLICATE", + "hash": "d8ec9b68780314ffdfdfc2194b1b35dd27d7303c3bceaef6447e31631a1419dc", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + } + }, + { + "name": "Error Transaction", + "description": "Submitting an invalid transaction using the `sendTransaction` method, resulting in an `ERROR` status.", + "params": [ + { + "name": "transaction", + "summary": "an invalid transaction sent to the network", + "description": "An invalid Stellar transaction that was sent to the network, built with an incorrect sequence number.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACgAAAAVIZWxsbwAAAAAAAAEAAAAMU29yb2JhbiBEb2NzAAAAAAAAAAELm/oYAAAAQMQkfl8sdCYQIOdJB0TyazJ126y2TFRjL8yNHSb4TTsH5Ym6qM6gkTx1ENRZ0PFprVGusMTHISzdPHYJ4njBZAQ=" + } + ], + "result": { + "name": "sendTransactionResult", + "value": { + "errorResultXdr": "AAAAAAAAAGT////7AAAAAA==", + "status": "ERROR", + "hash": "84a5f62bff422581dda019811daed0868a3db41833ad6e90a12f0d7db1be8167", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + } + }, + { + "name": "Try Again Later Transaction", + "description": "Submitting a valid transaction before an account's previously submitted transaction has settled using the `sendTransaction` method, resulting in a `TRY_AGAIN_LATER` status.", + "params": [ + { + "name": "transaction", + "summary": "a valid transaction sent to the network", + "description": "A valid Stellar transaction that was sent to the network successfully.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACgAAAAVIZWxsbwAAAAAAAAEAAAAMU29yb2JhbiBEb2NzAAAAAAAAAAELm/oYAAAAQATr6Ghp/DNO7S6JjEFwcJ9a+dvI6NJr7I/2eQttvoovjQ8te4zKKaapC3mbmx6ld6YKL5T81mxs45TjzdG5zw0=" + } + ], + "result": { + "name": "sendTransactionResult", + "value": { + "status": "TRY_AGAIN_LATER", + "hash": "d8ec9b68780314ffdfdfc2194b1b35dd27d7303c3bceaef6447e31631a1419dc", + "latestLedger": 2553978, + "latestLedgerCloseTime": "1700159337" + } + } + } + ] + }, + { + "name": "simulateTransaction", + "summary": "submits a trial contract invocation transaction", + "description": "Submit a trial contract invocation to simulate how it would be executed by the network. This endpoint calculates the effective transaction data, required authorizations, and minimal resource fee. It provides a way to test and analyze the potential outcomes of a transaction without actually submitting it to the network.", + "externalDocs": { + "url": "https://developers.stellar.org/network/soroban-rpc/methods/simulateTransaction" + }, + "paramStructure": "by-name", + "params": [ + { + "name": "transaction", + "summary": "transaction to be simulated", + "description": "In order for the RPC server to successfully simulate a Stellar transaction, the provided transaction must contain only a single operation of the type `invokeHostFunction`.", + "required": true, + "schema": { + "title": "transaction", + "description": "A Stellar transaction, serialized as a base64 string", + "type": "string" + } + }, + { + "name": "resourceConfig", + "summary": "configuration for how resources will be calculated", + "description": "Contains configuration for how resources will be calculated when simulating transactions.", + "required": false, + "schema": { + "title": "resourceConfig", + "description": "Configuration for how resources will be calculated.", + "type": "object", + "properties": { + "instructionLeeway": { + "title": "instructionLeeway", + "description": "Allow this many extra instructions when budgeting resources.", + "type": "number" + } + } + } + } + ], + "result": { + "name": "simulateTransactionResult", + "summary": "anticipated affects of the transaction.", + "description": "The response will include the anticipated affects the given transaction will have on the network. Additionally, information needed to build, sign, and actually submit the transaction will be provided.", + "schema": { + "type": "object", + "required": [ + "latestLedger" + ], + "properties": { + "latestLedger": { + "title": "latestLedger", + "description": "The sequence number of the latest ledger known to Soroban RPC at the time it handled the request.", + "type": "number" + }, + "minResourceFee": { + "type": "string", + "description": "(optional) Stringified number - Recommended minimum resource fee to add when submitting the transaction. This fee is to be added on top of the [Stellar network fee](https://developers.stellar.org/docs/encyclopedia/fees-surge-pricing-fee-strategies#network-fees-on-stellar). Not present in case of error." + }, + "cost": { + "type": "object", + "description": "(optional) - The cost object is legacy, inaccurate, and will be deprecated in future RPC releases. Please decode transactionData XDR to retrieve the correct resources.", + "deprecated": true, + "required": [ + "cpuInsns", + "memBytes" + ], + "properties": { + "cpuInsns": { + "type": "string", + "description": "Stringified number - Total cpu instructions consumed by this transaction" + }, + "memBytes": { + "type": "string", + "description": "Stringified number - Total memory bytes allocated by this transaction" + } + } + }, + "results": { + "type": "array", + "description": "(optional) - This array will only have one element: the result for the Host Function invocation. Only present on successful simulation (i.e. no error) of `InvokeHostFunction` operations.", + "items": { + "type": "object", + "required": [ + "xdr", + "auth" + ], + "properties": { + "xdr": { + "type": "string", + "description": "Serialized base64 string - return value of the Host Function call." + }, + "auth": { + "type": "array", + "description": "Array of serialized base64 strings - Per-address authorizations recorded when simulating this Host Function call.", + "items": { + "type": "string" + } + } + } + } + }, + "transactionData": { + "type": "string", + "description": "(optional) Serialized base64 string - The recommended Soroban Transaction Data to use when submitting the simulated transaction. This data contains the refundable fee and resource usage information such as the ledger footprint and IO access data (serialized in a base64 string). Not present in case of error." + }, + "events": { + "type": "array", + "description": "(optional) Array of serialized base64 strings - Array of the events emitted during the contract invocation. The events are ordered by their emission time. (an array of serialized base64 strings). Only present when simulating of `InvokeHostFunction` operations, note that it can be present on error, providing extra context about what failed.", + "items": { + "type": "string" + } + }, + "restorePreamble": { + "type": "object", + "description": "(optional) - It can only be present on successful simulation (i.e. no error) of `InvokeHostFunction` operations. If present, it indicates that the simulation detected archived ledger entries which need to be restored before the submission of the `InvokeHostFunction` operation. The `minResourceFee` and `transactionData` fields should be used to submit a transaction containing a `RestoreFootprint` operation.", + "required": [ + "minResourceFee", + "transactionData" + ], + "properties": { + "minResourceFee": { + "type": "string", + "description": "Stringified number - Recommended minimum resource fee to add when submitting the `RestoreFootprint` operation. This fee is to be added on top of the [Stellar network fee](https://developers.stellar.org/docs/encyclopedia/fees-surge-pricing-fee-strategies#network-fees-on-stellar)." + }, + "transactionData": { + "type": "string", + "description": "Serialized base64 string - The recommended Soroban Transaction Data to use when submitting the `RestoreFootprint` operation." + } + } + }, + "error": { + "type": "string", + "description": "(optional) - This field will include details about why the invoke host function call failed. Only present if the transaction simulation failed." + } + } + } + }, + "examples": [ + { + "name": "Successful Transaction Simulation", + "description": "Transaction simulation that succeeds and returns the necessary information to prepare and submit the transaction.", + "params": [ + { + "name": "transaction", + "summary": "a valid transaction", + "description": "A transaction that will correctly invoke a contract function.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAACDh1sDGwYAYgJ8EbeJPZwoZhDqEriwlbNnqivULm/oYAAAAAwAAAAMAAAAAAAAAAAAAAAA=" + }, + { + "name": "resourceConfig", + "summary": "the default resource configuration", + "description": "The default value for the (optional) resource configuration object for transaction simulation.", + "value": { + "instructionLeeway": 3000000 + } + } + ], + "result": { + "name": "simulateTransactionResult", + "value": { + "transactionData": "AAAAAAAAAAIAAAAGAAAAAcwD/nT9D7Dc2LxRdab+2vEUF8B+XoN7mQW21oxPT8ALAAAAFAAAAAEAAAAHy8vNUZ8vyZ2ybPHW0XbSrRtP7gEWsJ6zDzcfY9P8z88AAAABAAAABgAAAAHMA/50/Q+w3Ni8UXWm/trxFBfAfl6De5kFttaMT0/ACwAAABAAAAABAAAAAgAAAA8AAAAHQ291bnRlcgAAAAASAAAAAAAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAAEAHfKyAAAFiAAAAIgAAAAAAAAAAw==", + "minResourceFee": "90353", + "events": [ + "AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAACDh1sDGwYAYgJ8EbeJPZwoZhDqEriwlbNnqivULm/oYAAAAAwAAAAM=", + "AAAAAQAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAAAw=" + ], + "results": [ + { + "auth": [], + "xdr": "AAAAAwAAAAw=" + } + ], + "cost": { + "cpuInsns": "1635562", + "memBytes": "1295756" + }, + "latestLedger": 2552139 + } + } + }, + { + "name": "Failed Transaction Simulation", + "description": "Transaction simulation that fails due to the contract invocation being constructed with an improper number of arguments.", + "params": [ + { + "name": "transaction", + "summary": "an invalid transaction", + "description": "A transaction that attempts to invoke a contract function with the wrong number of arguments.", + "value": "AAAAAgAAAAAg4dbAxsGAGICfBG3iT2cKGYQ6hK4sJWzZ6or1C5v6GAAAAGQAJsOiAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAJaW5jcmVtZW50AAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAA" + }, + { + "name": "resourceConfig", + "summary": "the default resource configuration", + "description": "The default value for the (optional) resource configuration object for transaction simulation.", + "value": { + "instructionLeeway": 3000000 + } + } + ], + "result": { + "name": "simulateTransactionResult", + "value": { + "error": "host invocation failed\n\nCaused by:\n HostError: Error(WasmVm, InternalError)\n \n Event log (newest first):\n 0: [Diagnostic Event] contract:cc03fe74fd0fb0dcd8bc5175a6fedaf11417c07e5e837b9905b6d68c4f4fc00b, topics:[error, Error(WasmVm, InternalError)], data:[\"VM call failed: Func(MismatchingParameterLen)\", increment]\n 1: [Diagnostic Event] topics:[fn_call, Bytes(cc03fe74fd0fb0dcd8bc5175a6fedaf11417c07e5e837b9905b6d68c4f4fc00b), increment], data:3\n \n Backtrace (newest first):\n 0: soroban_env_host::vm::Vm::invoke_function_raw\n 1: soroban_env_host::host::frame::::with_frame\n 2: soroban_env_host::host::frame::::call_n_internal\n 3: soroban_env_host::host::frame::::invoke_function\n 4: preflight::preflight::preflight_invoke_hf_op\n 5: preflight::preflight_invoke_hf_op::{{closure}}\n 6: core::ops::function::FnOnce::call_once{{vtable.shim}}\n 7: preflight::catch_preflight_panic\n 8: _cgo_0b49d6ed4a0b_Cfunc_preflight_invoke_hf_op\n at tmp/go-build/cgo-gcc-prolog:103:11\n 9: runtime.asmcgocall\n at ./runtime/asm_amd64.s:848\n \n ", + "events": [ + "AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAAPAAAACWluY3JlbWVudAAAAAAAAAMAAAAD", + "AAAAAAAAAAAAAAABzAP+dP0PsNzYvFF1pv7a8RQXwH5eg3uZBbbWjE9PwAsAAAACAAAAAAAAAAIAAAAPAAAABWVycm9yAAAAAAAAAgAAAAEAAAAHAAAAEAAAAAEAAAACAAAADgAAAC1WTSBjYWxsIGZhaWxlZDogRnVuYyhNaXNtYXRjaGluZ1BhcmFtZXRlckxlbikAAAAAAAAPAAAACWluY3JlbWVudAAAAA==" + ], + "cost": { + "cpuInsns": "0", + "memBytes": "0" + }, + "latestLedger": 2552013 + } + } + } + ] + } + ], + "components": {} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 103a9ae74..87c1f2e8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2036,7 +2036,42 @@ resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== -"@json-schema-tools/traverse@^1.10.1": +"@json-schema-spec/json-pointer@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@json-schema-spec/json-pointer/-/json-pointer-0.1.2.tgz#5153d5d01b94134015ee829deca5a970cf0406fd" + integrity sha512-BYY7IavBjwsWWSmVcMz2A9mKiDD9RvacnsItgmy1xV8cmgbtxFfKmKMtkVpD7pYtkx4mIW4800yZBXueVFIWPw== + +"@json-schema-tools/dereferencer@1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@json-schema-tools/dereferencer/-/dereferencer-1.5.4.tgz#2a1830ab84e81c56ab14be68a10df6d3274bc40e" + integrity sha512-4cmEdRPIG7WrcSWGRV6HBDCLXEOXGkaOZnopqBxoG24mKYuCHWg4M6N9nioTQyNfKqlPkOPvT4lStQqkPnhLgA== + dependencies: + "@json-schema-tools/reference-resolver" "^1.2.4" + "@json-schema-tools/traverse" "^1.7.8" + fast-safe-stringify "^2.0.7" + +"@json-schema-tools/meta-schema@1.6.19": + version "1.6.19" + resolved "https://registry.yarnpkg.com/@json-schema-tools/meta-schema/-/meta-schema-1.6.19.tgz#295301c2d4a0c01eb2eafbf605aca8ebc0dfbbb6" + integrity sha512-55zuWFW7tr4tf/G5AYmybcPdGOkVAreQbt2JdnogX4I2r/zkxZiimYPJESDf5je9BI2oRveak2p296HzDppeaA== + +"@json-schema-tools/reference-resolver@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@json-schema-tools/reference-resolver/-/reference-resolver-1.2.4.tgz#ace48726f4e3026301d50efa09a4f1a942fa9d3c" + integrity sha512-Oag20zDuapO6nBQp00k8Rd5sDTb8Gfz9uH43Tf7dHKNx7nHDK/WdeTe7OxkOmLQCL6aS+mCJx1Zv+fZBCD+tzQ== + dependencies: + "@json-schema-spec/json-pointer" "^0.1.2" + isomorphic-fetch "^3.0.0" + +"@json-schema-tools/reference-resolver@^1.2.4": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@json-schema-tools/reference-resolver/-/reference-resolver-1.2.5.tgz#47179269010eeb1f6fc289fa355da7111b633baf" + integrity sha512-xNQgX/ABnwvbIeexL5Czv08lXjHAL80HEUogza7E19eIL/EXD8HM4FvxG1JuTGyi5fA+sSP64C9pabELizcBBw== + dependencies: + "@json-schema-spec/json-pointer" "^0.1.2" + isomorphic-fetch "^3.0.0" + +"@json-schema-tools/traverse@^1.10.1", "@json-schema-tools/traverse@^1.7.8": version "1.10.1" resolved "https://registry.yarnpkg.com/@json-schema-tools/traverse/-/traverse-1.10.1.tgz#1129579c37fef9bb997082c62840f5989a667c0d" integrity sha512-vYY5EIxCPzEXEWL/vTjdHy4g92tv1ApUQCjPJsj9gEoXLNNVwJlwwgRZisuvgFBZ3zeLzQygrbehERSpYdmFZA== @@ -2139,6 +2174,32 @@ resolved "https://registry.yarnpkg.com/@open-rpc/examples/-/examples-1.7.0.tgz#5b34a6a9adb0eb8cb87c059c17cbd587f5b71b05" integrity sha512-io/HHMgE5rY4KcArZLAgLONQFPpIfV/ELlueJ/LQULkNM0xuM2yAfsrAJddnEI7MrK5F1XjAfjUJU9v7ab+osQ== +"@open-rpc/meta-schema@1.14.2": + version "1.14.2" + resolved "https://registry.yarnpkg.com/@open-rpc/meta-schema/-/meta-schema-1.14.2.tgz#1af0b1ea77e50b5076ae31267e97efcb9ff352f8" + integrity sha512-vD4Nbkrb7wYFRcSQf+j228LwOy1C6/KKpy5NADlpMElGrAWPRxhTa2yTi6xG+x88OHzg2+cydQ0GAD6o40KUcg== + +"@open-rpc/meta-schema@^1.14.6": + version "1.14.6" + resolved "https://registry.yarnpkg.com/@open-rpc/meta-schema/-/meta-schema-1.14.6.tgz#85901c55c0c66e374d772d109db362b100f10954" + integrity sha512-swxmiiIYwSyltJCgb12B/rQ9S1GbkXJnM67qSB4ka+uMxO/wEJSrooXARYLIHx80qvR31H7hYLdaHq2Ktqwy3Q== + +"@open-rpc/schema-utils-js@^1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@open-rpc/schema-utils-js/-/schema-utils-js-1.16.1.tgz#3e9f09561dec67ec751e6ce8146d94abb0caa5f4" + integrity sha512-8D4OgBnHDAv7JeaYZ5v7SL4yR0YLLO4WLTWtdR8vmqSqvX3SvPzSsGYv06zqm9z1Lhm563MAcuearrc8g9eJ4w== + dependencies: + "@json-schema-tools/dereferencer" "1.5.4" + "@json-schema-tools/meta-schema" "1.6.19" + "@json-schema-tools/reference-resolver" "1.2.4" + "@open-rpc/meta-schema" "1.14.2" + ajv "^6.10.0" + detect-node "^2.0.4" + fast-safe-stringify "^2.0.7" + fs-extra "^9.0.0" + is-url "^1.2.4" + isomorphic-fetch "^3.0.0" + "@paloaltonetworks/openapi-to-postmanv2@3.1.0-hotfix.1": version "3.1.0-hotfix.1" resolved "https://registry.yarnpkg.com/@paloaltonetworks/openapi-to-postmanv2/-/openapi-to-postmanv2-3.1.0-hotfix.1.tgz#4baf401d2e94ba86d888e6011a4c45d824e88114" @@ -3614,6 +3675,11 @@ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -4558,6 +4624,17 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" @@ -4732,6 +4809,11 @@ ci-info@^3.1.1, ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f" integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== +ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -6124,6 +6206,15 @@ defer-to-connect@^1.0.1: resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +define-data-property@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" @@ -6688,6 +6779,18 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" @@ -7404,6 +7507,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" @@ -7577,6 +7687,11 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" @@ -7611,6 +7726,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@ has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" @@ -7904,6 +8030,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -7986,6 +8119,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz#3decd7cb4654bca8883f6fcbd4fb3695628c4296" @@ -8991,6 +9131,11 @@ is-typedarray@^1.0.0: resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" @@ -9040,6 +9185,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -9057,6 +9207,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + jest-util@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" @@ -9216,6 +9374,16 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stable-stringify@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== + dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + json5@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" @@ -9247,6 +9415,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + jsonpointer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" @@ -9308,6 +9481,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" @@ -10812,7 +10992,7 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^7.0.2: +open@^7.0.2, open@^7.4.2: version "7.4.2" resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== @@ -10866,6 +11046,11 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" @@ -11049,6 +11234,27 @@ pascalcase@^0.1.1: resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-browserify@1.0.1, path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" @@ -12923,6 +13129,13 @@ semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.5.3: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -12991,6 +13204,18 @@ set-blocking@^2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + set-harmonic-interval@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" @@ -13177,6 +13402,11 @@ sitemap@^7.1.1: arg "^5.0.0" sax "^1.2.4" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -13902,6 +14132,13 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.3: resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" @@ -14926,6 +15163,11 @@ websocket-extensions@>=0.1.1: resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-fetch@^3.4.1: + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" @@ -15144,6 +15386,11 @@ yaml@1.10.2, yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.0.tgz#2376db1083d157f4b3a452995803dbcf43b08140" + integrity sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz"