Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Update tickers, currencies, countries and transparency documentation - #252

Open
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation
Open

Update tickers, currencies, countries and transparency documentation#252
ricardobcl wants to merge 4 commits into
masterfrom
support/update-market-data-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown

Description

Fixes drift between the market-data pages and the current API behavior, verified against uphold/backend master.

_tickers.md

  • Documented the two currency-pair formats: concatenated for legacy currency pairs (e.g. BTCUSD) and hyphenated for everything else (e.g. SOL-USD) — all samples previously showed only the legacy form. Added hyphenated entries to the list sample.
  • Documented that results depend on authentication: public currencies for unauthenticated requests, additional user-specific currencies when authenticated, and 404 for non-public currencies without auth.
  • Fixed the Response prose ("associative array" → JSON array of objects) and documented the bare GET /v0/ticker route with its USD default explicitly.

_currencies.md

  • Added the previously undocumented features, image and shortName response fields to the table and samples (values taken from the controller and its tests).
  • Added the unavailable asset status, which is also the fallback when no status is known.
  • Clarified that unauthenticated requests return the publicly available assets (not "the full list"), while authenticated requests may include additional, non-public assets.
  • Fixed a typo in the code examples.

_countries.md

  • The payment method field is now documented as an open set: besides ach/card/sepa, alternative payment methods flow through (apple-pay, google-pay, interac, paypal, pix, spei, venmo — all verified in the backend transaction resolver).
  • Documented that blocked subdivisions are excluded from the subdivisions response.

_transparency.md

  • Replaced the stale "an API key is required" claim: the reserve ledger endpoint requires an OAuth access token with the reserve:read scope, issued to an application with the authorization_code grant. The sample now carries an Authorization header.
  • Ledger deposit/withdrawal samples no longer show the empty side with "0.00" — current entries contain only the in side (deposits) or the out side (withdrawals).
  • The Reservechain transfer sample now includes the application, fees and priority fields returned by the public transaction mask.
  • Fixed invalid JSON in four samples (missing commas, unquoted keys) and several typos.

Notes for reviewers

  • The Reservechain samples show transactions but _transparency.md documents no request routes for them; the routes (GET /v0/reserve/transactions[/:id]) live in _transactions.md. GET /v0/reserve/transactions/:id/sources remains undocumented everywhere — left out deliberately, flagging in case it should be added.
  • Ticker samples still contain some delisted legacy assets (e.g. VOX, LBA) mid-list; they remain format-accurate, so they were left untouched.

Related issues

Follow-up to #250 (documentation audit against uphold/backend master).

Impacted areas

Tickers, Currencies, Countries and Transparency pages of the API reference.

Steps to reproduce or test

Development

Every claim was traced to the enforcing code in uphold/backend master (ticker/asset/country/reserve controllers, exchange enums, ledger manager, transaction public mask).

QA

Render the four pages; optionally hit GET /v0/ticker unauthenticated vs authenticated and confirm hyphenated pairs appear for non-legacy assets.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

N/A — no files added or removed, so no slate index changes are needed.

🤖 Generated with Claude Code

CopilotAI lite review requested due to automatic review settings August 23, 2026 21:45
@ricardobclricardobcl self-assigned this Aug 23, 2026

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API reference documentation for market data, assets, countries, and reserve transparency to better reflect current API behavior (as verified against uphold/backend master), including corrected sample payloads and clarified authentication-dependent behavior.

Changes:

  • Tickers: clarify legacy vs hyphenated currency-pair formats, document the bare /v0/ticker route, and clarify auth-dependent results.
  • Currencies: document additional response fields (features, image, shortName) and clarify asset visibility/status semantics.
  • Countries + Transparency: broaden/clarify documented field values and update reserve-ledger auth requirements and ledger/Reservechain samples (including JSON fixes).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

FileDescription
_tickers.mdClarifies currency-pair formats and ticker endpoint behavior, including auth-dependent results and /v0/ticker default base currency.
_currencies.mdAdds undocumented asset fields to tables/samples and clarifies unauthenticated vs authenticated asset visibility plus status semantics.
_countries.mdDocuments payment method as an open set and clarifies that blocked subdivisions are excluded from subdivision results.
_transparency.mdUpdates reserve-ledger auth requirements and refreshes ledger/Reservechain samples, including corrected JSON and field presence changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread_tickers.md Outdated
Comment on lines +6 to +9
Currency pairs are represented in two formats:
pairs between two of the currencies supported early in Uphold's history (such as BTC, ETH, EUR, or USD)
are represented in concatenated form, e.g. `BTCUSD`,
while all other pairs are hyphenated, e.g. `SOL-USD`.
@ricardobcl
ricardobclforce-pushed the support/update-market-data-documentation branch from 33da9ac to 2207c24CompareAugust 23, 2026 22:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ricardobcl