docs: add Ephemeral SPL Token section and remove stale spl-api docs#71
docs: add Ephemeral SPL Token section and remove stale spl-api docs#71dhruvja wants to merge 11 commits into
Conversation
|
Warning Review limit reached
Next review available in: 54 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. WalkthroughDocumentation is reorganized around a new ChangesEphemeral SPL Token Documentation Migration
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
There was a problem hiding this comment.
Actionable comments posted: 12
♻️ Duplicate comments (2)
pages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.json (2)
19-27: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winSame manual-header auth pattern as
stealth-pool.openapi.json.See the corresponding comment on
stealth-pool.openapi.json— usingcomponents.securitySchemes+securityinstead of a plain headerparameterwould resolve the Checkov CKV_OPENAPI_4/5 findings here too and align with Mintlify's own conventions for Bearer auth.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@pages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.json` around lines 19 - 27, The transaction-send OpenAPI spec is modeling Bearer auth as a plain header parameter, which should be converted to a proper security scheme. Update the auth definition in transaction-send.openapi.json to use components.securitySchemes with an HTTP Bearer scheme, then apply it via security on the relevant operation(s) instead of the current authorization parameter. Mirror the same pattern used in stealth-pool.openapi.json so the OpenAPI auth setup matches Mintlify conventions and clears the CKV_OPENAPI_4/5 findings.Source: Linters/SAST tools
50-57: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
clusterenum narrower thanstealth-pool.openapi.json's.Flagged from the
stealth-pool.openapi.jsonside — see that file's comment on lines 67-74. This endpoint is missingmainnet-private/devnet-privatein its enum.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@pages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.json` around lines 50 - 57, The `cluster` schema in `transaction-send.openapi.json` is narrower than the matching definition in `stealth-pool.openapi.json`, so update the enum in the `cluster` property to include the missing `mainnet-private` and `devnet-private` values while keeping the existing string fallback. Make sure the `cluster` definition stays aligned with the other OpenAPI spec by editing the shared enum in the `cluster` object, not the surrounding request shape.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs.json`:
- Around line 30-32: The redirect entry for prepareWithdrawal in the docs
mapping sends users to the generic introduction page instead of the
withdrawal-specific page. Update the destination for the
/api-reference/per-api/prepareWithdrawal source in docs.json to point to
/pages/ephemeral-spl-token/api-reference/withdraw, keeping the surrounding
redirect entries unchanged.
In `@pages/ephemeral-spl-token/api-reference/openapi/deposit.openapi.json`:
- Line 58: The OpenAPI schema for the `private` property documents a default of
true, but the schema itself does not declare that default. Update the `private`
field definition in the deposit.openapi.json schema to include an explicit
default value of true so generators and validators can read it directly from the
schema, not just from the description.
In `@pages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.json`:
- Around line 44-49: Update the handle schemas in the OpenAPI definition so they
actually enforce the documented 255-byte limit. In the POST body `handle`
property and the GET `handle` query parameter, add the missing `maxLength`
constraint alongside the existing `minLength`/string metadata, using the
`handle` field definitions in the stealth-pool OpenAPI spec. Ensure both
locations match the same validation rule so the documented limit is enforced
consistently.
- Around line 19-27: The auth setup in this OpenAPI spec is using a manual
authorization header parameter instead of a bearer security scheme, which causes
the missing global/operation security rules. Update the document to define a
bearer auth scheme in components.securitySchemes and apply it through security
on the relevant operations in stead of the parameters entry. Use the existing
OpenAPI structure in stealth-pool.openapi.json and keep the change consistent
across the other /v1/spl/* specs that define auth, so the interactive docs can
auto-handle the token.
In
`@pages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.json`:
- Around line 58-70: The schema for the send transaction request describes
`recentBlockhash` and `lastValidBlockHeight` as required when `confirm` is true,
but this is not enforced anywhere in the OpenAPI definition. Update the
transaction send request schema to use conditional validation (`if`/`then`) tied
to the `confirm` property so those fields become required only when `confirm` is
true, and keep the existing top-level required list for always-required fields
like `transactionBase64` and `sendTo`.
In `@pages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.json`:
- Around line 82-84: The request schema now includes exactOut, but the
accompanying example object is missing it, so update the example in the
transfer.openapi.json request definition to show exactOut alongside the other
request fields. Make the same example change in the additional referenced
section so the samples stay consistent with the schema and the Transfer request
model.
In
`@pages/ephemeral-spl-token/api-reference/openapi/undelegate-ephemeral-ata.openapi.json`:
- Around line 19-27: The undelegate endpoint is exposing login auth as a plain
header parameter instead of an OpenAPI security requirement. Update the OpenAPI
definition for undelegate-ephemeral-ata.openapi.json to add a shared bearer
security scheme under components/securitySchemes and reference it from the
operation that currently defines the authorization header. Keep the existing
authorization parameter only if it is meant to remain ordinary header data;
otherwise remove it and use the standard bearer auth mechanism so tooling
recognizes the /v1/spl/login token flow.
In `@pages/ephemeral-spl-token/private-payments.mdx`:
- Around line 97-99: Update the callout in the private-payments docs so the
`POST /v1/transaction/send` link points to the transaction-send page instead of
the generic introduction page. Adjust the existing markdown link in the
private-payments content to use the endpoint-specific target, keeping the
surrounding text and `sendTo` flow description unchanged.
In `@snippets/spl-tokens-code/program.mdx`:
- Line 19: The CPI setup in the snippet uses the token program’s public key
instead of its account info, which does not match Anchor’s expected API. Update
the CpiContext::new call in the token-program CPI example to pass
ctx.accounts.token_program.to_account_info() alongside cpi_accounts so the
context is built with an AccountInfo.
In `@snippets/spl-tokens-code/sc-non-custody.mdx`:
- Around line 3-8: The SPL token transfer snippet is passing the wrong type into
CpiContext::new by using ctx.accounts.token_program.key() instead of an
AccountInfo. Update the transfer call in sc-non-custody.mdx so the token program
argument uses ctx.accounts.token_program.to_account_info(), keeping the existing
SplTransfer account setup unchanged.
In `@snippets/spl-tokens-code/sc-post-commit.mdx`:
- Around line 4-8: The example is calling the signed builder path without
explaining the required public MagicIntentBundleBuilder reference. Update the
snippet around MagicIntentBundleBuilder::new and build_and_invoke_signed so it
either uses the existing build_and_invoke example path or, if the signed variant
is intended, add a clear SDK/doc reference showing that a public
MagicIntentBundleBuilder reference is required for build_and_invoke_signed.
In `@snippets/spl-tokens-code/sc-transfer.mdx`:
- Around line 8-14: The CPI setup in the token transfer example is passing the
program key instead of the program account info, so update the
`CpiContext::new_with_signer` call in `sc-transfer.mdx` to use
`token_program.to_account_info()`; make the same account-info fix in
`sc-non-custody.mdx` for the `CpiContext::new(...)` usage. Keep the surrounding
`SplTransfer` and signer seed wiring unchanged, only correct the program
argument type.
---
Duplicate comments:
In
`@pages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.json`:
- Around line 19-27: The transaction-send OpenAPI spec is modeling Bearer auth
as a plain header parameter, which should be converted to a proper security
scheme. Update the auth definition in transaction-send.openapi.json to use
components.securitySchemes with an HTTP Bearer scheme, then apply it via
security on the relevant operation(s) instead of the current authorization
parameter. Mirror the same pattern used in stealth-pool.openapi.json so the
OpenAPI auth setup matches Mintlify conventions and clears the CKV_OPENAPI_4/5
findings.
- Around line 50-57: The `cluster` schema in `transaction-send.openapi.json` is
narrower than the matching definition in `stealth-pool.openapi.json`, so update
the enum in the `cluster` property to include the missing `mainnet-private` and
`devnet-private` values while keeping the existing string fallback. Make sure
the `cluster` definition stays aligned with the other OpenAPI spec by editing
the shared enum in the `cluster` object, not the surrounding request shape.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 6dbd03b9-2fe1-4717-94cc-a952fd3d3f8d
📒 Files selected for processing (129)
api-reference/spl-api/checked-transfer.mdxapi-reference/spl-api/create-ephemeral-ata-permission.mdxapi-reference/spl-api/delegate-ephemeral-ata-permission.mdxapi-reference/spl-api/delegate-ephemeral-ata.mdxapi-reference/spl-api/deposit-spl-tokens.mdxapi-reference/spl-api/get-config.mdxapi-reference/spl-api/initialize-ata.mdxapi-reference/spl-api/initialize-ephemeral-ata.mdxapi-reference/spl-api/initialize-global-vault.mdxapi-reference/spl-api/introduction-per.mdxapi-reference/spl-api/reset-ephemeral-ata-permission.mdxapi-reference/spl-api/undelegate-ephemeral-ata-permission.mdxapi-reference/spl-api/undelegate-ephemeral-ata.mdxapi-reference/spl-api/withdraw-spl-tokens.mdxcn/api-reference/spl-api/checked-transfer.mdxcn/api-reference/spl-api/create-ephemeral-ata-permission.mdxcn/api-reference/spl-api/delegate-ephemeral-ata-permission.mdxcn/api-reference/spl-api/delegate-ephemeral-ata.mdxcn/api-reference/spl-api/deposit-spl-tokens.mdxcn/api-reference/spl-api/get-config.mdxcn/api-reference/spl-api/initialize-ata.mdxcn/api-reference/spl-api/initialize-ephemeral-ata.mdxcn/api-reference/spl-api/initialize-global-vault.mdxcn/api-reference/spl-api/introduction-per.mdxcn/api-reference/spl-api/reset-ephemeral-ata-permission.mdxcn/api-reference/spl-api/undelegate-ephemeral-ata-permission.mdxcn/api-reference/spl-api/undelegate-ephemeral-ata.mdxcn/api-reference/spl-api/withdraw-spl-tokens.mdxdocs.jsonjp/api-reference/spl-api/checked-transfer.mdxjp/api-reference/spl-api/create-ephemeral-ata-permission.mdxjp/api-reference/spl-api/delegate-ephemeral-ata-permission.mdxjp/api-reference/spl-api/delegate-ephemeral-ata.mdxjp/api-reference/spl-api/deposit-spl-tokens.mdxjp/api-reference/spl-api/get-config.mdxjp/api-reference/spl-api/initialize-ata.mdxjp/api-reference/spl-api/initialize-ephemeral-ata.mdxjp/api-reference/spl-api/initialize-global-vault.mdxjp/api-reference/spl-api/introduction-per.mdxjp/api-reference/spl-api/reset-ephemeral-ata-permission.mdxjp/api-reference/spl-api/undelegate-ephemeral-ata-permission.mdxjp/api-reference/spl-api/undelegate-ephemeral-ata.mdxjp/api-reference/spl-api/withdraw-spl-tokens.mdxko/api-reference/spl-api/checked-transfer.mdxko/api-reference/spl-api/create-ephemeral-ata-permission.mdxko/api-reference/spl-api/delegate-ephemeral-ata-permission.mdxko/api-reference/spl-api/delegate-ephemeral-ata.mdxko/api-reference/spl-api/deposit-spl-tokens.mdxko/api-reference/spl-api/get-config.mdxko/api-reference/spl-api/initialize-ata.mdxko/api-reference/spl-api/initialize-ephemeral-ata.mdxko/api-reference/spl-api/initialize-global-vault.mdxko/api-reference/spl-api/introduction-per.mdxko/api-reference/spl-api/reset-ephemeral-ata-permission.mdxko/api-reference/spl-api/undelegate-ephemeral-ata-permission.mdxko/api-reference/spl-api/undelegate-ephemeral-ata.mdxko/api-reference/spl-api/withdraw-spl-tokens.mdxpages/ephemeral-spl-token/api-reference/balance.mdxpages/ephemeral-spl-token/api-reference/challenge.mdxpages/ephemeral-spl-token/api-reference/deposit.mdxpages/ephemeral-spl-token/api-reference/health.mdxpages/ephemeral-spl-token/api-reference/initialize-mint.mdxpages/ephemeral-spl-token/api-reference/introduction.mdxpages/ephemeral-spl-token/api-reference/is-mint-initialized.mdxpages/ephemeral-spl-token/api-reference/login.mdxpages/ephemeral-spl-token/api-reference/mcp.mdxpages/ephemeral-spl-token/api-reference/openapi/balance.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/challenge.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/deposit.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/health.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/initialize-mint.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/is-mint-initialized.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/login.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/mcp.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/private-balance.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/quote.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/swap.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transfer-queue-ensure-crank.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/undelegate-ephemeral-ata.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/withdraw.openapi.jsonpages/ephemeral-spl-token/api-reference/private-balance.mdxpages/ephemeral-spl-token/api-reference/quote.mdxpages/ephemeral-spl-token/api-reference/stealth-pool-status.mdxpages/ephemeral-spl-token/api-reference/stealth-pool.mdxpages/ephemeral-spl-token/api-reference/swap.mdxpages/ephemeral-spl-token/api-reference/transaction-send.mdxpages/ephemeral-spl-token/api-reference/transfer-queue-ensure-crank.mdxpages/ephemeral-spl-token/api-reference/transfer.mdxpages/ephemeral-spl-token/api-reference/undelegate-ephemeral-ata.mdxpages/ephemeral-spl-token/api-reference/withdraw.mdxpages/ephemeral-spl-token/overview.mdxpages/ephemeral-spl-token/private-payments.mdxpages/ephemeral-spl-token/quickstart.mdxpages/ephemeral-spl-token/smart-contract-integration.mdxpages/overview/additional-information/pricing.mdxpages/private-ephemeral-rollups-pers/api-reference/per/balance.mdxpages/private-ephemeral-rollups-pers/api-reference/per/challenge.mdxpages/private-ephemeral-rollups-pers/api-reference/per/deposit.mdxpages/private-ephemeral-rollups-pers/api-reference/per/health.mdxpages/private-ephemeral-rollups-pers/api-reference/per/initialize-mint.mdxpages/private-ephemeral-rollups-pers/api-reference/per/introduction.mdxpages/private-ephemeral-rollups-pers/api-reference/per/is-mint-initialized.mdxpages/private-ephemeral-rollups-pers/api-reference/per/login.mdxpages/private-ephemeral-rollups-pers/api-reference/per/mcp.mdxpages/private-ephemeral-rollups-pers/api-reference/per/openapi/privacy-openapi.jsonpages/private-ephemeral-rollups-pers/api-reference/per/private-balance.mdxpages/private-ephemeral-rollups-pers/api-reference/per/quote.mdxpages/private-ephemeral-rollups-pers/api-reference/per/swap.mdxpages/private-ephemeral-rollups-pers/api-reference/per/transfer.mdxpages/private-ephemeral-rollups-pers/api-reference/per/withdraw.mdxpages/private-ephemeral-rollups-pers/how-to-guide/ephemeral-spl-private-payments.mdxpages/templates/private-payments.mdxsnippets/product-cards.mdxsnippets/quick-access-spl.mdxsnippets/spl-tokens-code/delegate.mdxsnippets/spl-tokens-code/program.mdxsnippets/spl-tokens-code/sc-commit.mdxsnippets/spl-tokens-code/sc-create-eata.mdxsnippets/spl-tokens-code/sc-delegate.mdxsnippets/spl-tokens-code/sc-ephemeral.mdxsnippets/spl-tokens-code/sc-non-custody.mdxsnippets/spl-tokens-code/sc-post-commit.mdxsnippets/spl-tokens-code/sc-transfer.mdxsnippets/spl-tokens-code/transfer.mdxsnippets/spl-tokens-code/undelegate.mdxsnippets/spl-tokens-code/withdraw.mdx
💤 Files with no reviewable changes (71)
- pages/private-ephemeral-rollups-pers/api-reference/per/health.mdx
- cn/api-reference/spl-api/introduction-per.mdx
- jp/api-reference/spl-api/reset-ephemeral-ata-permission.mdx
- ko/api-reference/spl-api/get-config.mdx
- api-reference/spl-api/initialize-ephemeral-ata.mdx
- cn/api-reference/spl-api/delegate-ephemeral-ata.mdx
- jp/api-reference/spl-api/delegate-ephemeral-ata-permission.mdx
- jp/api-reference/spl-api/delegate-ephemeral-ata.mdx
- ko/api-reference/spl-api/delegate-ephemeral-ata.mdx
- api-reference/spl-api/undelegate-ephemeral-ata.mdx
- jp/api-reference/spl-api/checked-transfer.mdx
- cn/api-reference/spl-api/initialize-ata.mdx
- cn/api-reference/spl-api/undelegate-ephemeral-ata-permission.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/swap.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/deposit.mdx
- api-reference/spl-api/initialize-ata.mdx
- ko/api-reference/spl-api/deposit-spl-tokens.mdx
- cn/api-reference/spl-api/reset-ephemeral-ata-permission.mdx
- cn/api-reference/spl-api/initialize-global-vault.mdx
- api-reference/spl-api/delegate-ephemeral-ata.mdx
- jp/api-reference/spl-api/initialize-ephemeral-ata.mdx
- cn/api-reference/spl-api/delegate-ephemeral-ata-permission.mdx
- api-reference/spl-api/delegate-ephemeral-ata-permission.mdx
- ko/api-reference/spl-api/undelegate-ephemeral-ata-permission.mdx
- cn/api-reference/spl-api/undelegate-ephemeral-ata.mdx
- jp/api-reference/spl-api/initialize-ata.mdx
- api-reference/spl-api/withdraw-spl-tokens.mdx
- api-reference/spl-api/deposit-spl-tokens.mdx
- cn/api-reference/spl-api/create-ephemeral-ata-permission.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/login.mdx
- ko/api-reference/spl-api/checked-transfer.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/balance.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/is-mint-initialized.mdx
- api-reference/spl-api/undelegate-ephemeral-ata-permission.mdx
- api-reference/spl-api/checked-transfer.mdx
- api-reference/spl-api/get-config.mdx
- jp/api-reference/spl-api/undelegate-ephemeral-ata.mdx
- jp/api-reference/spl-api/undelegate-ephemeral-ata-permission.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/mcp.mdx
- jp/api-reference/spl-api/create-ephemeral-ata-permission.mdx
- ko/api-reference/spl-api/reset-ephemeral-ata-permission.mdx
- jp/api-reference/spl-api/deposit-spl-tokens.mdx
- ko/api-reference/spl-api/create-ephemeral-ata-permission.mdx
- ko/api-reference/spl-api/initialize-ata.mdx
- jp/api-reference/spl-api/get-config.mdx
- cn/api-reference/spl-api/deposit-spl-tokens.mdx
- api-reference/spl-api/initialize-global-vault.mdx
- api-reference/spl-api/create-ephemeral-ata-permission.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/quote.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/private-balance.mdx
- ko/api-reference/spl-api/initialize-ephemeral-ata.mdx
- ko/api-reference/spl-api/withdraw-spl-tokens.mdx
- cn/api-reference/spl-api/checked-transfer.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/transfer.mdx
- jp/api-reference/spl-api/initialize-global-vault.mdx
- cn/api-reference/spl-api/withdraw-spl-tokens.mdx
- api-reference/spl-api/reset-ephemeral-ata-permission.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/challenge.mdx
- ko/api-reference/spl-api/undelegate-ephemeral-ata.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/openapi/privacy-openapi.json
- pages/private-ephemeral-rollups-pers/api-reference/per/withdraw.mdx
- cn/api-reference/spl-api/get-config.mdx
- ko/api-reference/spl-api/introduction-per.mdx
- api-reference/spl-api/introduction-per.mdx
- jp/api-reference/spl-api/introduction-per.mdx
- ko/api-reference/spl-api/initialize-global-vault.mdx
- ko/api-reference/spl-api/delegate-ephemeral-ata-permission.mdx
- jp/api-reference/spl-api/withdraw-spl-tokens.mdx
- pages/private-ephemeral-rollups-pers/api-reference/per/initialize-mint.mdx
- pages/private-ephemeral-rollups-pers/how-to-guide/ephemeral-spl-private-payments.mdx
- cn/api-reference/spl-api/initialize-ephemeral-ata.mdx
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
pages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.json (1)
45-45: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winAdd inner
requiredto thefeesresponse object.When
feesis present in the response,lamportsandtokensshould be required. Without an innerrequiredarray, a response like"fees": {}passes schema validation but conveys no fee information.🛡️ Proposed fix
"fees": { "type": "object", "description": "Fees applied to the transfer, in base units.", "properties": { "lamports": { "type": "string" }, "tokens": { "type": "string" } - } + }, + "required": ["lamports", "tokens"] }Also applies to: 70-84, 134-134, 143-143, 170-183
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@pages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.json` at line 45, The `fees` response object in the OpenAPI schema is missing an inner required list, so empty `fees` objects can still validate. Update the schema definitions for `fees` in the transfer OpenAPI document so that, whenever `fees` is present, the `lamports` and `tokens` properties are marked required within the `fees` object itself. Apply the same change consistently across the affected response schema blocks so the `fees` object always contains both values.docs.json (1)
444-444: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy liftLocalized navigation (cn/jp/ko) missing the new "Ephemeral SPL Token" tab.
The English navigation was restructured — the old "Private Payments API" group was replaced with a slim "Private Payments" group and a new "Ephemeral SPL Token" tab was added. However, the cn (line 444), jp (line 455), and ko (line 466) navigation tabs still reference the old "Private Payments API" group with 13 per-API pages and do not include the new "Ephemeral SPL Token" tab at all.
This means non-English users have no navigable path to the new
pages/ephemeral-spl-token/documentation section. Additionally, the old per-API pages referenced in localized nav may now be inconsistent with the simplified Englishper/introductionpage.Also applies to: 455-455, 466-466
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs.json` at line 444, The localized nav entries in docs.json still use the old “Private Payments API” grouping and omit the new “Ephemeral SPL Token” tab. Update the cn/jp/ko tab definitions to match the English navigation structure by replacing the old PER-heavy group in the relevant tab objects (e.g. the “Private Ephemeral Rollup” tabs) with the simplified “Private Payments” group and adding the new “Ephemeral SPL Token” page path. Keep the identifiers in the same tab objects so localized users can reach the new pages and the nav stays consistent across languages.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@docs.json`:
- Line 444: The localized nav entries in docs.json still use the old “Private
Payments API” grouping and omit the new “Ephemeral SPL Token” tab. Update the
cn/jp/ko tab definitions to match the English navigation structure by replacing
the old PER-heavy group in the relevant tab objects (e.g. the “Private Ephemeral
Rollup” tabs) with the simplified “Private Payments” group and adding the new
“Ephemeral SPL Token” page path. Keep the identifiers in the same tab objects so
localized users can reach the new pages and the nav stays consistent across
languages.
In `@pages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.json`:
- Line 45: The `fees` response object in the OpenAPI schema is missing an inner
required list, so empty `fees` objects can still validate. Update the schema
definitions for `fees` in the transfer OpenAPI document so that, whenever `fees`
is present, the `lamports` and `tokens` properties are marked required within
the `fees` object itself. Apply the same change consistently across the affected
response schema blocks so the `fees` object always contains both values.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: d8175bc0-8504-4433-a51e-6b9da7ea9db3
📒 Files selected for processing (7)
.gitignoredocs.jsonpages/ephemeral-spl-token/api-reference/openapi/deposit.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.jsonpages/ephemeral-spl-token/private-payments.mdx
…nd cover the eata lifecycle on the skill page
## Summary Fixes every broken link flagged by Mintlify's `link-rot` validation across all locales (en/cn/jp/ko): **64 → 0**. ## Changes - **Unity SDK guides:** repoint legacy `/Build/SolanaUnitySDK/guides/...` links to `/pages/tools/solana-unity-sdk/guides/...` (locale-prefixed for cn/jp/ko). - **Anchor guide:** migrated into the live nav at `pages/ephemeral-rollups-ers/how-to-guide/anchor` (×4 locales + `docs.json`) so the Counter template's "Anchor Integration" card resolves. - **get-started intro cards:** repoint `smart-router` / `magic-router` → `ephemeral-rollups-ers/introduction/magic-router`, and `overview` → `.../how-to-guide/quickstart`. - **Missing images:** restored 7 Unity-SDK screenshots dropped by an earlier "Delete mintlify-docs/images" commit (recovered from git history) + fixed a missing leading slash. - **spl-api:** repoint `transfer-ephemeral-ata` → `checked-transfer`; unlink the `root`/health endpoint (no page exists). ## Testing - `mint broken-links` → **success, no broken links found** (was 64). ## Notes - The `spl-api` links are fixed here; if PR #71 (Ephemeral SPL Token) replaces that tree, these edits are simply superseded — no conflict expected.
…spl-token # Conflicts: # api-reference/spl-api/introduction-per.mdx # cn/api-reference/spl-api/introduction-per.mdx # jp/api-reference/spl-api/introduction-per.mdx # ko/api-reference/spl-api/introduction-per.mdx
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
pages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.json (2)
141-147: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winGET
clusterschema is less constrained than POST.The POST
clusterparameter (lines 69-76) usesanyOfwithenum: ["mainnet", "devnet", "mainnet-private", "devnet-private"]plus a fallback string, but the GETclusterparameter is just{ "type": "string" }with no enum validation. Same conceptual parameter on the same endpoint path should have a consistent schema so clients get validation feedback on invalid cluster values.♻️ Proposed fix
{ "name": "cluster", "in": "query", "required": false, "description": "Optional. Cluster selector or custom http(s) RPC URL.", - "schema": { "type": "string", "example": "mainnet" } + "schema": { + "anyOf": [ + { "type": "string", "enum": ["mainnet", "devnet", "mainnet-private", "devnet-private"] }, + { "type": "string" } + ], + "example": "mainnet" + } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@pages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.json` around lines 141 - 147, Align the GET cluster query parameter schema with the POST cluster schema: update the parameter named "cluster" to use the same anyOf structure, including the four allowed enum values and the fallback string for custom HTTP(S) RPC URLs. Preserve its optional status and description while ensuring both methods provide consistent validation.
108-118: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
setupTransactionis missing arequiredarray andsendRpcEndpoint.The description says "The base-chain setup transaction (same field set as the top-level transaction)," but the nested object omits
sendRpcEndpoint(present at the top level on line 102) and has norequiredarray. Withoutrequired, none of the listed properties are enforced, and the missingsendRpcEndpointcontradicts the "same field set" claim. IfsendRpcEndpointis intentionally omitted for base-chain setup transactions, clarify the description; otherwise add it.♻️ Proposed fix (if sendRpcEndpoint belongs in setupTransaction)
"setupTransaction": { "type": "object", "description": "The base-chain setup transaction (same field set as the top-level transaction).", "properties": { "transactionBase64": { "type": "string" }, "sendTo": { "type": "string", "enum": ["base", "ephemeral"] }, + "sendRpcEndpoint": { "type": "string", "format": "uri" }, "recentBlockhash": { "type": "string" }, "lastValidBlockHeight": { "type": "integer" }, "instructionCount": { "type": "integer", "minimum": 0 }, "requiredSigners": { "type": "array", "items": { "type": "string" } } - } + }, + "required": ["transactionBase64", "sendTo", "recentBlockhash", "lastValidBlockHeight", "instructionCount", "requiredSigners"] }If
sendRpcEndpointis intentionally absent for setup transactions, update the description to say "same field set as the top-level transaction, exceptsendRpcEndpoint" and still add therequiredarray for the remaining fields.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@pages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.json` around lines 108 - 118, Update the setupTransaction schema to match its stated contract: add sendRpcEndpoint to its properties if setup transactions support it, and add a required array covering all mandatory fields consistent with the top-level transaction. If sendRpcEndpoint is intentionally excluded, revise the description to explicitly state the exception while still defining required for the remaining properties.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@pages/overview/additional-information/ai-dev-skill.mdx`:
- Line 38: Update the Ephemeral SPL Token lifecycle bullet to use the canonical
“Ephemeral SPL Token API” name and link it to the relevant reference under the
existing Ephemeral SPL Token API documentation, replacing the undefined
`ephemeral-spl-api` term while preserving the SDK/direct API distinction.
In `@pages/private-ephemeral-rollups-pers/api-reference/per/introduction.mdx`:
- Around line 36-42: Update the “API Reference” Card href in the API reference
introduction page from the challenge endpoint to the introduction page, matching
the destination used by the Note and exposing the full endpoint listing.
---
Outside diff comments:
In `@pages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.json`:
- Around line 141-147: Align the GET cluster query parameter schema with the
POST cluster schema: update the parameter named "cluster" to use the same anyOf
structure, including the four allowed enum values and the fallback string for
custom HTTP(S) RPC URLs. Preserve its optional status and description while
ensuring both methods provide consistent validation.
- Around line 108-118: Update the setupTransaction schema to match its stated
contract: add sendRpcEndpoint to its properties if setup transactions support
it, and add a required array covering all mandatory fields consistent with the
top-level transaction. If sendRpcEndpoint is intentionally excluded, revise the
description to explicitly state the exception while still defining required for
the remaining properties.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 8cb24cfd-1ce8-4d47-ac15-2fb682c338f3
📒 Files selected for processing (15)
.vale/styles/config/vocabularies/Mintlify/accept.txtdocs.jsonpages/ephemeral-spl-token/api-reference/openapi/private-balance.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/stealth-pool.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transaction-send.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/transfer.openapi.jsonpages/ephemeral-spl-token/api-reference/openapi/undelegate-ephemeral-ata.openapi.jsonpages/ephemeral-spl-token/private-payments.mdxpages/ephemeral-spl-token/quickstart.mdxpages/overview/additional-information/ai-dev-skill.mdxpages/private-ephemeral-rollups-pers/api-reference/per/introduction.mdxsnippets/spl-tokens-code/program.mdxsnippets/spl-tokens-code/sc-non-custody.mdxsnippets/spl-tokens-code/sc-post-commit.mdxsnippets/spl-tokens-code/sc-transfer.mdx
jonasXchen
left a comment
There was a problem hiding this comment.
Suggesting to put this under ER / PER. Alternatively if as part of products, it may be better to put it in the order after Solana VRF.
To reduce confusion of Ephemeral SPL Token as new standard, we may want to change the naming to SPL Token since it has and is the same standard but applied on rollups.
I agree with you. I have made the changes here: ad09003 |
Summary
Adds a dedicated Ephemeral SPL Token product section to the docs and removes the stale, orphaned
spl-apipages it replaces.What changed
pages/ephemeral-spl-token/tree), added to the products overview:/v1/spl/*+ swap + MCP surface, layered into Core Token API / Private Payments / Swapstealth-pool(POST + GET),transaction/send,undelegate-ephemeral-ata,transfer-queue/ensure-crank; plus drift fixes ondeposit(private) andtransfer(exactOut, optional visibility defaults, stealth-handleto,from/fees).spl-apidocs — 56 orphaned pages (en/cn/jp/ko) describing the superseded/tx/*API, plus the now-orphanedprivacy-openapi.json..../api-reference/per/introductionURL as a "Private Payments" funnel page in the PER tab that routes to the new section. Redirects added for the moved API pages./snippets/spl-tokens-code/, matching the house how-to pattern (QuickAccess → Steps → Software → Code Snippets Tabs → footer).Breaking changes
None — redirects cover the moved API pages.
Summary by CodeRabbit
New Features
depositwith an optionalprivateflag (defaulting to private) and refined transfer/auth details.Documentation
Chores
.gitignoreto ignore.env.