From 244a9581eecafcf941ee19485ca60d0ebf86156f Mon Sep 17 00:00:00 2001 From: Mohammed Islam Date: Tue, 21 Jan 2025 11:26:24 -0500 Subject: [PATCH 1/3] docs: mi/3170/overview-updates --- packages/documentation/astro.config.mjs | 303 +++++++++--------- .../integration/requirements/overview.mdx | 27 +- 2 files changed, 166 insertions(+), 164 deletions(-) diff --git a/packages/documentation/astro.config.mjs b/packages/documentation/astro.config.mjs index 19c02459dd..d59fbb8497 100644 --- a/packages/documentation/astro.config.mjs +++ b/packages/documentation/astro.config.mjs @@ -72,206 +72,201 @@ export default defineConfig({ }, sidebar: [ { - label: 'Rafiki Docs', + label: 'Overview', items: [ { - label: 'Overview', - items: [ - { - label: 'Introducing Rafiki', - link: '/overview/overview' - }, - { - label: 'Concepts', - collapsed: true, - items: [ - { - label: 'Accounting', - link: '/overview/concepts/accounting' - }, - { - label: 'Interledger', - link: '/overview/concepts/interledger' - }, - { - label: 'Open Payments', - link: '/overview/concepts/open-payments' - }, - { - label: 'Telemetry', - link: '/overview/concepts/telemetry' - } - ] - } - ] + label: 'Introducing Rafiki', + link: '/overview/overview' }, { - label: 'Integration', + label: 'Concepts', collapsed: true, items: [ { - label: 'Requirements', - collapsed: true, - items: [ - { - label: 'Overview and checklist', - link: '/integration/requirements/overview' - }, - { - label: 'Assets', - link: '/integration/requirements/assets' - }, - { - label: 'Peers', - link: '/integration/requirements/peers' - }, - { - label: 'Wallet addresses', - link: '/integration/requirements/wallet-addresses' - }, - { - label: 'Webhook events', - link: '/integration/requirements/webhook-events' - }, - { - label: 'Exchange rates', - link: '/integration/requirements/exchange-rates' - }, - { - label: 'Sending fees', - link: '/integration/requirements/sending-fees' - }, - { - label: 'Identity provider (IdP)', - link: '/integration/requirements/idp' - } - ] + label: 'Accounting', + link: '/overview/concepts/accounting' }, { - label: 'Test locally', - collapsed: true, - items: [ - { - label: 'Local playground', - link: '/integration/playground/overview' - }, - { - label: 'Autopeering', - link: '/integration/playground/autopeering' - }, - { - label: 'Test network', - link: '/integration/playground/testnet' - } - ] + label: 'Interledger', + link: '/overview/concepts/interledger' }, { - label: 'Deployment', - collapsed: true, - items: [ - { - label: 'Services', - collapsed: true, - items: [ - { - label: 'Auth service', - link: '/integration/deployment/services/auth-service' - }, - { - label: 'Backend service', - link: '/integration/deployment/services/backend-service' - }, - { - label: 'Frontend service', - link: '/integration/deployment/services/frontend-service' - }, - { - label: 'Token introspection', - link: '/integration/deployment/services/token-introspection' - } - ] - }, - { - label: 'Docker Compose', - link: '/integration/deployment/docker-compose' - }, - { - label: 'Helm and Kubernetes', - link: '/integration/deployment/helm-k8s' - } - ] + label: 'Open Payments', + link: '/overview/concepts/open-payments' + }, + { + label: 'Telemetry', + link: '/overview/concepts/telemetry' } ] - }, + } + ] + }, + { + label: 'Integration', + collapsed: true, + items: [ { - label: 'Administration', + label: 'Requirements', collapsed: true, items: [ { - label: 'Rafiki Admin', - link: '/admin/admin-user-guide' + label: 'Overview and checklist', + link: '/integration/requirements/overview' }, { - label: 'Manage liquidity', - link: '/admin/manage-liquidity' - } - ] - }, - { - label: 'Resources', - collapsed: true, - items: [ + label: 'Assets', + link: '/integration/requirements/assets' + }, { - label: 'Releases', - link: '/resources/releases' + label: 'Peers', + link: '/integration/requirements/peers' }, { - label: 'Glossary', - link: '/resources/glossary' + label: 'Wallet addresses', + link: '/integration/requirements/wallet-addresses' }, { - label: 'Architecture', - link: '/resources/architecture' + label: 'Webhook events', + link: '/integration/requirements/webhook-events' }, { - label: 'Environment variables', - link: '/resources/environment-variables' + label: 'Exchange rates', + link: '/integration/requirements/exchange-rates' }, { - label: 'Webhook event types', - link: '/resources/webhook-event-types' + label: 'Sending fees', + link: '/integration/requirements/sending-fees' }, { - label: 'Get involved', - link: '/resources/get-involved' + label: 'Identity provider (IdP)', + link: '/integration/requirements/idp' } ] }, { - label: 'APIs', + label: 'Test locally', collapsed: true, items: [ { - label: 'GraphQL Admin APIs', - link: '/apis/graphql/admin-api-overview' + label: 'Local playground', + link: '/integration/playground/overview' }, { - label: 'Backend Admin API', - collapsed: true, - autogenerate: { - directory: 'apis/graphql/backend' - } + label: 'Autopeering', + link: '/integration/playground/autopeering' }, { - label: 'Auth Admin API', + label: 'Test network', + link: '/integration/playground/testnet' + } + ] + }, + { + label: 'Deployment', + collapsed: true, + items: [ + { + label: 'Services', collapsed: true, - autogenerate: { - directory: 'apis/graphql/auth' - } + items: [ + { + label: 'Auth service', + link: '/integration/deployment/services/auth-service' + }, + { + label: 'Backend service', + link: '/integration/deployment/services/backend-service' + }, + { + label: 'Frontend service', + link: '/integration/deployment/services/frontend-service' + }, + { + label: 'Token introspection', + link: '/integration/deployment/services/token-introspection' + } + ] + }, + { + label: 'Docker Compose', + link: '/integration/deployment/docker-compose' + }, + { + label: 'Helm and Kubernetes', + link: '/integration/deployment/helm-k8s' } ] } ] + }, + { + label: 'Administration', + collapsed: true, + items: [ + { + label: 'Rafiki Admin', + link: '/admin/admin-user-guide' + }, + { + label: 'Manage liquidity', + link: '/admin/manage-liquidity' + } + ] + }, + { + label: 'Resources', + collapsed: true, + items: [ + { + label: 'Releases', + link: '/resources/releases' + }, + { + label: 'Glossary', + link: '/resources/glossary' + }, + { + label: 'Architecture', + link: '/resources/architecture' + }, + { + label: 'Environment variables', + link: '/resources/environment-variables' + }, + { + label: 'Webhook event types', + link: '/resources/webhook-event-types' + }, + { + label: 'Get involved', + link: '/resources/get-involved' + } + ] + }, + { + label: 'APIs', + collapsed: true, + items: [ + { + label: 'GraphQL Admin APIs', + link: '/apis/graphql/admin-api-overview' + }, + { + label: 'Backend Admin API', + collapsed: true, + autogenerate: { + directory: 'apis/graphql/backend' + } + }, + { + label: 'Auth Admin API', + collapsed: true, + autogenerate: { + directory: 'apis/graphql/auth' + } + } + ] } ], plugins: [ diff --git a/packages/documentation/src/content/docs/integration/requirements/overview.mdx b/packages/documentation/src/content/docs/integration/requirements/overview.mdx index 3e549518de..5b0a77b8b0 100644 --- a/packages/documentation/src/content/docs/integration/requirements/overview.mdx +++ b/packages/documentation/src/content/docs/integration/requirements/overview.mdx @@ -2,51 +2,58 @@ title: Requirements overview and integration checklist --- +import { Badge } from '@astrojs/starlight/components' import { LinkOut } from '@interledger/docs-design-system' You must meet the following requirements before you deploy Rafiki to a production environment. -## Be an account servicing entity +## Be an account servicing entity An account servicing entity (ASE) is an entity that provides and maintains payment accounts for its customers and is regulated within the jurisdictions it operates. Examples of ASEs include banks, digital wallet providers, and mobile money providers. The [Introducing Rafiki](/overview/overview#more-about-account-servicing-entities) page provides a few examples of an ASE's responsibilities and obligations. Rafiki should not be used in production by non-regulated entities. -## Support at least one asset +## Support at least one asset You must set up Rafiki to support at least one asset. An asset in Rafiki represents an item of value that can be transferred via the Interledger Protocol. Since the Interledger Protocol aims to create an internet of value, it allows for the transfer of any asset, not just currency. In practice, however, assets are usually denominated in a currency (fiat or branded currencies). [Set up your assets](/integration/requirements/assets) -## Associate each user-facing payment account with a wallet address +## Associate each user-facing payment account with a wallet address A wallet address is a publicly shareable standardized ID for a payment account. Each payment account belonging to your users (e.g., customers) must have at least one associated wallet address for the account to be able to send and/or receive payments via Open Payments and Interledger. [Set up your wallet addresses](/integration/requirements/wallet-addresses) -## Expose a webhook endpoint and react to events accordingly +## Expose a webhook endpoint and react to events accordingly The main communication channel between you and your Rafiki instance is composed of the Backend Admin API and a set of webhook events. Most of these events require you to interact with Rafiki. You must expose a webhook endpoint that listens for events dispatched by Rafiki, then react accordingly (for example, deposit or withdraw liquidity). [Specify your webhook endpoint and learn how to handle each event](/integration/requirements/webhook-events) -## Expose an exchange rate endpoint +## Expose an exchange rate endpoint -To support cross-currency transactions, you must specify from where your Rafiki instance will fetch current exchange rates. Exchange rates are calculated as part of a payment's quote, which estimates the full cost of transferring value over the network. +If you plan to support cross-currency transactions, you must specify from where your Rafiki instance will fetch current exchange rates. Exchange rates are calculated as part of a payment's quote, which estimates the full cost of transferring value over the network. [Specify your exchange rate endpoint](/integration/requirements/exchange-rates) -## Charge a sending fee +## Define your sending fees -You can charge a sending fee, on top of any estimated network fees, for facilitating transfers. Each asset you support can have a different fee structure. +You have the option to charge a sending fee, on top of any estimated network fees, for facilitating transfers. Each asset you support can have a different fee structure. [Define your sending fees](/integration/requirements/sending-fees) -## Integrate with an identity provider (IdP) +## Peers + +While you could use Rafiki soley for transfers between accounts on your ledger, you must add one or more peers if you intend to enable Interledger payments on your accounts. A peer is another ASE that you want to connect with via Interledger and is likely running their own Rafiki instance. + +[Set up peers in your Rafiki instance](/integration/requirements/peers) + +## Integrate with an identity provider (IdP) An identity provider (IdP) is a system or service that stores and manages user identity information, authentication, and consent. Examples of IdPs include OpenID Connect and Okta. -Integration with an IdP is required if you plan to support Open Payments outgoing payments for your users. Open Payments requires that outgoing payment grant requests be interactive. In an interactive grant request, explicit interaction by an individual (e.g., an account holder) is required to approve the grant. Your IdP will handle the authentication and consent required to authorize a grant request. +Integration with an IdP is required if you plan to use the authorization server provided through Rafiki's auth service. The authorization server requires consent to be collected via an interactive grant before an outgoing payment request is issued. The purpose of the IdP is to handle the authentication and consent required to authorize the interactive grant request. [Integrate Rafiki with your IdP](/integration/requirements/idp) From b2a34f8b9128df49fcab33fe09570a5ce9a2ed3b Mon Sep 17 00:00:00 2001 From: Mohammed Islam Date: Tue, 21 Jan 2025 11:30:10 -0500 Subject: [PATCH 2/3] docs: mi/3170/overview-updates --- .../src/content/docs/integration/requirements/overview.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/documentation/src/content/docs/integration/requirements/overview.mdx b/packages/documentation/src/content/docs/integration/requirements/overview.mdx index 5b0a77b8b0..9e6ac47122 100644 --- a/packages/documentation/src/content/docs/integration/requirements/overview.mdx +++ b/packages/documentation/src/content/docs/integration/requirements/overview.mdx @@ -43,13 +43,13 @@ You have the option to charge a sending fee, on top of any estimated network fee [Define your sending fees](/integration/requirements/sending-fees) -## Peers +## Peers While you could use Rafiki soley for transfers between accounts on your ledger, you must add one or more peers if you intend to enable Interledger payments on your accounts. A peer is another ASE that you want to connect with via Interledger and is likely running their own Rafiki instance. [Set up peers in your Rafiki instance](/integration/requirements/peers) -## Integrate with an identity provider (IdP) +## Integrate with an identity provider (IdP) An identity provider (IdP) is a system or service that stores and manages user identity information, authentication, and consent. Examples of IdPs include OpenID Connect and Okta. From 30aa3fa9810afc479a96fb4ab8abb42533a9a80c Mon Sep 17 00:00:00 2001 From: Mohammed Islam Date: Wed, 22 Jan 2025 14:43:54 -0500 Subject: [PATCH 3/3] docs: mi/3170/overview-updates - Updated Expose an exchange rate endpoint to Conditionally Optional - Updated Peers to Required - Fixed typo within Peers section --- .../src/content/docs/integration/requirements/overview.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/documentation/src/content/docs/integration/requirements/overview.mdx b/packages/documentation/src/content/docs/integration/requirements/overview.mdx index 9e6ac47122..e6ea0c68c8 100644 --- a/packages/documentation/src/content/docs/integration/requirements/overview.mdx +++ b/packages/documentation/src/content/docs/integration/requirements/overview.mdx @@ -31,7 +31,7 @@ The main communication channel between you and your Rafiki instance is composed [Specify your webhook endpoint and learn how to handle each event](/integration/requirements/webhook-events) -## Expose an exchange rate endpoint +## Expose an exchange rate endpoint If you plan to support cross-currency transactions, you must specify from where your Rafiki instance will fetch current exchange rates. Exchange rates are calculated as part of a payment's quote, which estimates the full cost of transferring value over the network. @@ -43,9 +43,9 @@ You have the option to charge a sending fee, on top of any estimated network fee [Define your sending fees](/integration/requirements/sending-fees) -## Peers +## Peers -While you could use Rafiki soley for transfers between accounts on your ledger, you must add one or more peers if you intend to enable Interledger payments on your accounts. A peer is another ASE that you want to connect with via Interledger and is likely running their own Rafiki instance. +While you could use Rafiki solely for transfers between accounts on your ledger, you must add one or more peers if you intend to enable Interledger payments on your accounts. A peer is another ASE that you want to connect with via Interledger and is likely running their own Rafiki instance. [Set up peers in your Rafiki instance](/integration/requirements/peers)