Use canonical documentation links (#7607)
What changed, and why it matters
This commit only updates web links and documentation references throughout the BTCPay Server project. It points users to newer, canonical documentation URLs and refreshes local development instructions. There are no code behavior changes, no security fixes, and no vulnerability patches.
No security action needed. Treat as routine documentation maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff consists entirely of URL substitutions in Markdown files, Razor views, a C# controller string, and a Swagger JSON template. Examples include replacing docs.btcpayserver.org/WalletSetup/ with docs.btcpayserver.org/Users/#set-up-a-wallet and updating Greenfield API example links. No executable logic, input handling, authentication, authorization, cryptography, or data flow was modified.
Changed components
Documentation links in README and ChangelogUI help links in Razor views (Invoices, API Keys, Reports, Server Policies, Bitpay ListTokens)Help link string in UIInvoiceController.csSwagger template external documentation linksInspect captured patch +34 / −17
### BTCPayServer.Tests/README.md
@@ -1,7 +1,7 @@
# Tooling
This README describe some useful tooling that you may need during development and testing.
-To learn how to get started with your local development environment, read [our documentation](https://docs.btcpayserver.org/Development/LocalDevelopment/).
+To learn how to get started with your local development environment, read [our documentation](https://github.com/btcpayserver/btcpayserver/blob/master/docs/maintainers/README.md#local-development).
## How to manually test payments
### BTCPayServer/Controllers/UIInvoiceController.cs
@@ -260,7 +260,7 @@ internal async Task<InvoiceEntity> CreateInvoiceCoreRaw(InvoiceEntity entity, St
var message = new StringBuilder();
if (!store.GetPaymentMethodConfigs(_handlers).Any())
message.AppendLine(
- "No wallet has been linked to your BTCPay Store. See the following link for more information on how to connect your store and wallet. (https://docs.btcpayserver.org/WalletSetup/)");
+ "No wallet has been linked to your BTCPay Store. See the following link for more information on how to connect your store and wallet. (https://docs.btcpayserver.org/Users/#set-up-a-wallet)");
else
{
message.AppendLine("Error retrieving a matching payment method or rate.");
### BTCPayServer/Plugins/Bitpay/Views/ListTokens.cshtml
@@ -12,7 +12,7 @@
<vc:icon symbol="close" />
</button>
<span text-translate="true">Warning: No wallet has been linked to your BTCPay Server Store.</span><br/>
- See <a href="https://docs.btcpayserver.org/WalletSetup/" target="_blank" class="alert-link" rel="noreferrer noopener">this link</a> for more information on how to connect your store and wallet.
+ See <a href="https://docs.btcpayserver.org/Users/#set-up-a-wallet" target="_blank" class="alert-link" rel="noreferrer noopener">this link</a> for more information on how to connect your store and wallet.
</div>
}
<div class="sticky-header">
### BTCPayServer/Plugins/Wallets/Controllers/UIStoreOnChainWalletsController.cs
@@ -613,7 +613,7 @@ public async Task<IActionResult> UpdateWalletSettings(
var config = store.GetPaymentMethodConfig<DerivationSchemeSettings>(PaymentTypes.CHAIN.GetPaymentMethodId(network.CryptoCode), paymentMethodHandlerDictionary);
if (config?.IsHotWallet is not true)
{
- successMessage += " However, PayJoin will not work, as this isn't a <a href='https://docs.btcpayserver.org/HotWallet/' class='alert-link' target='_blank'>hot wallet</a>.";
+ successMessage += " However, PayJoin will not work, as this isn't a <a href='https://docs.btcpayserver.org/Users/#set-up-a-wallet' class='alert-link' target='_blank'>hot wallet</a>.";
}
}
### BTCPayServer/Views/UIInvoice/ListInvoices.cshtml
@@ -103,7 +103,7 @@
<li html-translate="true"><code>orderid:id</code> for filtering a specific order</li>
<li html-translate="true"><code>itemcode:code</code> for filtering a specific type of item purchased through the pos or crowdfund apps</li>
</ul>
- <a href="https://docs.btcpayserver.org/Invoices/" target="_blank" rel="noreferrer noopener" text-translate="true">Learn More</a>
+ <a href="https://docs.btcpayserver.org/Users/invoices/" target="_blank" rel="noreferrer noopener" text-translate="true">Learn More</a>
</div>
<button type="button" class="btn-close ms-auto" data-bs-toggle="collapse" data-bs-target="#descriptor" aria-expanded="false" aria-label="@StringLocalizer["Close"]">
<vc:icon symbol="close" />
### BTCPayServer/Views/UIManage/APIKeys.cshtml
@@ -20,7 +20,7 @@
<p>
@ViewLocalizer["The {0} offers programmatic access to your instance. You can manage your BTCPay Server (e.g. stores, invoices, users) as well as automate workflows and integrations (see {1}). For that you need the API keys, which can be generated here. Find more information in the {2}.",
Html.ActionLink(StringLocalizer["Greenfield API"], "SwaggerDocs", "UIHome", new { }, new { target = "_blank", rel = "noreferrer noopener" }),
- new HtmlString($"<a href=\"https://docs.btcpayserver.org/Development/GreenFieldExample/\" target=\"_blank\" rel=\"noreferrer noopener\">{StringLocalizer["use case examples"]}</a>"),
+ new HtmlString($"<a href=\"https://docs.btcpayserver.org/Developers/api/examples/#curl\" target=\"_blank\" rel=\"noreferrer noopener\">{StringLocalizer["use case examples"]}</a>"),
Html.ActionLink(StringLocalizer["API authentication docs"], "SwaggerDocs", "UIHome", null, null, "section/Authentication", new { }, new { target = "_blank", rel = "noreferrer noopener" })]
</p>
### BTCPayServer/Views/UIReports/StoreReports.cshtml
@@ -33,7 +33,7 @@
<div class="sticky-header">
<h2>
@ViewData["Title"]
- <a href="https://docs.btcpayserver.org/Accounting/" target="_blank" rel="noreferrer noopener" title="@StringLocalizer["More information..."]">
+ <a href="https://docs.btcpayserver.org/Reporting/" target="_blank" rel="noreferrer noopener" title="@StringLocalizer["More information..."]">
<vc:icon symbol="info" />
</a>
</h2>
### BTCPayServer/Views/UIServer/Policies.cshtml
@@ -134,7 +134,7 @@
<input asp-for="AllowHotWalletForAll" type="checkbox" class="btcpay-toggle me-3"/>
<div>
<label asp-for="AllowHotWalletForAll" class="form-check-label"></label>
- <a href="https://docs.btcpayserver.org/CreateWallet/#requirements-to-create-wallets" target="_blank" rel="noreferrer noopener">
+ <a href="https://docs.btcpayserver.org/Users/#requirements-to-create-wallets" target="_blank" rel="noreferrer noopener">
<vc:icon symbol="info" />
</a>
<span asp-validation-for="AllowHotWalletForAll" class="text-danger"></span>
### BTCPayServer/wwwroot/swagger/v1/swagger.template.json
@@ -3,7 +3,7 @@
"info": {
"title": "BTCPay Greenfield API",
"version": "v1",
- "description": "# Introduction\n\nThe BTCPay Server Greenfield API is a REST API. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.\n\n# Authentication\n\nYou can authenticate either via Basic Auth or an API key. It's recommended to use an API key for better security. You can create an API key in the BTCPay Server UI under `Account` -> `Manage Account` -> `API keys`. You can restrict the API key for one or multiple stores and for specific permissions. For testing purposes, you can give it the 'Unrestricted access' permission. On production you should limit the permissions to the actual endpoints you use, you can see the required permission on the API docs at the top of each endpoint under `AUTHORIZATIONS`.\n\nIf you want to simplify the process of creating API keys for your users, you can use the [Authorization endpoint](https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Authorization) to predefine permissions and redirect your users to the BTCPay Server Authorization UI. You can find more information about this on the [API Authorization Flow docs](https://docs.btcpayserver.org/BTCPayServer/greenfield-authorization/) page.\n\n# Usage examples\n\nUse **Basic Auth** to read store information with cURL:\n```bash\nBTCPAY_INSTANCE=\"https://mainnet.demo.btcpayserver.org\"\nUSER=\"MyTestUser@gmail.com\"\nPASSWORD=\"notverysecurepassword\"\nPERMISSION=\"btcpay.store.canmodifystoresettings\"\nBODY=\"$(echo \"{}\" | jq --arg \"a\" \"$PERMISSION\" '. + {permissions:[$a]}')\"\n\nAPI_KEY=\"$(curl -s \\\n -H \"Content-Type: application/json\" \\\n --user \"$USER:$PASSWORD\" \\\n -X POST \\\n -d \"$BODY\" \\\n \"$BTCPAY_INSTANCE/api/v1/api-keys\" | jq -r .apiKey)\"\n```\n\n\nUse an **API key** to read store information with cURL:\n```bash\nSTORE_ID=\"yourStoreId\"\n\ncurl -s \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: token $API_KEY\" \\\n -X GET \\\n \"$BTCPAY_INSTANCE/api/v1/stores/$STORE_ID\"\n```\n\nYou can find more examples on our docs for different programming languages:\n- [cURL](https://docs.btcpayserver.org/Development/GreenFieldExample/)\n- [Javascript/Node.Js](https://docs.btcpayserver.org/Development/GreenFieldExample-NodeJS/)\n- [PHP](https://docs.btcpayserver.org/Development/GreenFieldExample-PHP/)\n\n",
+ "description": "# Introduction\n\nThe BTCPay Server Greenfield API is a REST API. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.\n\n# Authentication\n\nYou can authenticate either via Basic Auth or an API key. It's recommended to use an API key for better security. You can create an API key in the BTCPay Server UI under `Account` -> `Manage Account` -> `API keys`. You can restrict the API key for one or multiple stores and for specific permissions. For testing purposes, you can give it the 'Unrestricted access' permission. On production you should limit the permissions to the actual endpoints you use, you can see the required permission on the API docs at the top of each endpoint under `AUTHORIZATIONS`.\n\nIf you want to simplify the process of creating API keys for your users, you can use the [Authorization endpoint](https://docs.btcpayserver.org/API/Greenfield/v1/#tag/Authorization) to predefine permissions and redirect your users to the BTCPay Server Authorization UI. You can find more information about this on the [API Authorization Flow docs](https://docs.btcpayserver.org/Developers/api/authentication/) page.\n\n# Usage examples\n\nUse **Basic Auth** to read store information with cURL:\n```bash\nBTCPAY_INSTANCE=\"https://mainnet.demo.btcpayserver.org\"\nUSER=\"MyTestUser@gmail.com\"\nPASSWORD=\"notverysecurepassword\"\nPERMISSION=\"btcpay.store.canmodifystoresettings\"\nBODY=\"$(echo \"{}\" | jq --arg \"a\" \"$PERMISSION\" '. + {permissions:[$a]}')\"\n\nAPI_KEY=\"$(curl -s \\\n -H \"Content-Type: application/json\" \\\n --user \"$USER:$PASSWORD\" \\\n -X POST \\\n -d \"$BODY\" \\\n \"$BTCPAY_INSTANCE/api/v1/api-keys\" | jq -r .apiKey)\"\n```\n\n\nUse an **API key** to read store information with cURL:\n```bash\nSTORE_ID=\"yourStoreId\"\n\ncurl -s \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: token $API_KEY\" \\\n -X GET \\\n \"$BTCPAY_INSTANCE/api/v1/stores/$STORE_ID\"\n```\n\nYou can find more examples on our docs for different programming languages:\n- [cURL](https://docs.btcpayserver.org/Developers/api/examples/#curl)\n- [Javascript/Node.Js](https://docs.btcpayserver.org/Developers/api/examples/#nodejs)\n- [PHP](https://docs.btcpayserver.org/Developers/api/examples/#php)\n\n",
"contact": {
"name": "BTCPay Server",
"url": "https://btcpayserver.org"
@@ -21,7 +21,7 @@
],
"externalDocs": {
"description": "Check out our examples on how to use the API",
- "url": "https://docs.btcpayserver.org/Development/GreenFieldExample/"
+ "url": "https://docs.btcpayserver.org/Developers/api/examples/#curl"
},
"components": {
"parameters": {
### Changelog.md
@@ -9,7 +9,7 @@
* **Boltcards**: Remove the desktop smartcard setup and open the Boltcard app instead (#7515) @NicolasDorier
* **Store users**: Users must accept an invitation before joining a store (#7519) @dstrukt
* **Point of Sale**: Remove the per-request `notificationUrl`. Invoices now use the app's configured notification URL @Kukks
-* **Server administration**: Remove legacy SSH settings and add deployment-provided `btcpay-host` integration, including `btcpay-host env` ([documentation](https://docs.btcpayserver.org/Development/HostIntegration/)) (#7511 #7543) @NicolasDorier
+* **Server administration**: Remove legacy SSH settings and add deployment-provided `btcpay-host` integration, including `btcpay-host env` ([documentation](https://docs.btcpayserver.org/Operators/host-integration/#host-integration)) (#7511 #7543) @NicolasDorier
* **API Keys**: Use API key IDs instead of secrets for Greenfield API revocation (#7561) @NicolasDorier
* **Bitpay API**: Remove legacy BitPay Basic-auth API keys (#7561) @NicolasDorier
@@ -3180,7 +3180,7 @@ Those are low risk injection vulnerabilities.
### Altcoins
-* BTCPay Server build is Bitcoin Only by default. If you are developer and wants to work on the altcoins build, please read [the documentation](https://docs.btcpayserver.org/LocalDevelopment/).
+* BTCPay Server build is Bitcoin Only by default. If you are developer and wants to work on the altcoins build, please read [the documentation](https://github.com/btcpayserver/btcpayserver/blob/master/docs/maintainers/README.md#local-development).
* Show sync progress for monero and show amount of monero payment #1729 @xpayserver
## 1.0.5.3:
### docs/maintainers/README.md
@@ -29,8 +29,6 @@ Built-in features are organized under `BTCPayServer/Plugins`. Keep reusable cont
- Install Docker with Compose for the local PostgreSQL, NBXplorer, Bitcoin, Lightning, Tor, and Mailpit services.
- Use Visual Studio 2022 or JetBrains Rider for the repository launch profiles and debugging.
-The broader platform setup guide is in the [public local development documentation](https://docs.btcpayserver.org/Development/LocalDevelopment/).
-
### Build
Build the solution directly:
@@ -49,10 +47,18 @@ On PowerShell, use `./build.ps1`.
### Run
-Start the development dependencies from `BTCPayServer.Tests`:
+Start the development dependencies:
```sh
+cd BTCPayServer.Tests
docker-compose up -d dev
+cd ..
+```
+
+Run BTCPay Server with the `Bitcoin` launch profile:
+
+```sh
+dotnet run --project BTCPayServer/BTCPayServer.csproj --launch-profile Bitcoin
```
After running the build script, start the published application or inspect its options:
@@ -62,7 +68,10 @@ After running the build script, start the published application or inspect its o
./run.sh --help
```
-On PowerShell, use `./run.ps1`. For debugger-driven development, use the `Docker-Regtest` launch profile. The `Docker-Regtest-https` profile also requires a trusted development certificate:
+On PowerShell, use `./run.ps1`. IDEs use the launch profiles from
+`BTCPayServer/Properties/launchSettings.json`. Use `Bitcoin` for HTTP or
+`Bitcoin-HTTPS` for HTTPS. The HTTPS profile requires a trusted development
+certificate:
```sh
dotnet dev-certs https --trust
@@ -81,6 +90,14 @@ Open `brave://certificate-manager/`, select **Authorities** (or **Custom** >
asks, restart the browser, and reopen the local HTTPS URL. The exported file
contains only the public certificate and can be deleted after import.
+For altcoin development, start the alternate dependency environment and use
+the `Altcoins` or `Altcoins-HTTPS` launch profile:
+
+```sh
+cd BTCPayServer.Tests
+docker-compose -f docker-compose.altcoins.yml up -d dev
+```
+
See [testing](#testing) for focused test commands and regtest tooling.
## Testing
### docs/users/invoices.md
@@ -84,7 +84,7 @@ payment before marking an unusual invoice settled.
Apps and integrations can attach metadata such as an order ID, item details,
or buyer information to an invoice. BTCPay Server can display, search, and
include recognized fields in reports. See the developer guide to
-[invoice metadata](../developers/api/invoice-metadata.md) for supported fields,
+[invoice metadata](https://docs.btcpayserver.org/Developers/api/invoice-metadata/) for supported fields,
privacy considerations, and examples.
## Refunding an invoiceWhy this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.