Skip to content

Comments

feat(api): update API v2 field descriptions#1469

Draft
laviniat1996 wants to merge 22 commits intomainfrom
fields
Draft

feat(api): update API v2 field descriptions#1469
laviniat1996 wants to merge 22 commits intomainfrom
fields

Conversation

@laviniat1996
Copy link
Collaborator

closes #1049

@github-actions
Copy link

Skipping AI review because no docs changes in md, mdx, or docs.json

@laviniat1996 laviniat1996 self-assigned this Nov 28, 2025
@laviniat1996 laviniat1996 marked this pull request as draft November 28, 2025 03:30
@laviniat1996 laviniat1996 changed the title update field descriptions update API v2 field descriptions Nov 28, 2025
@laviniat1996 laviniat1996 added the 3p Reviewed by someone else (a third party). Used for filtering PRs. Don't mind this. label Dec 1, 2025
@reveloper reveloper self-requested a review December 4, 2025 06:09
],
"summary": "JSON-RPC endpoint",
"description": "All API methods are available through this single endpoint using JSON-RPC 2.0 protocol. Send the method name in the `method` field and parameters as a dictionary in `params`. Useful when you need to call multiple methods in sequence or prefer JSON-RPC over REST.",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Authorizations description shouldn't be empty:
Screenshot 0007-12-04 at 15 48 37

Example of a good definition:
Screenshot 0007-12-04 at 16 13 19

"summary": "JSON-RPC endpoint",
"description": "All API methods are available through this single endpoint using JSON-RPC 2.0 protocol. Send the method name in the `method` field and parameters as a dictionary in `params`. Useful when you need to call multiple methods in sequence or prefer JSON-RPC over REST.",
"operationId": "jsonRPC_post",
"requestBody": {
Copy link
Collaborator

Choose a reason for hiding this comment

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

https://companyname-a7d5b98e-fields.mintlify.app/ecosystem/api/toncenter/v2/rpc/json-rpc-endpoint

Result field seems strange and broken:

Screenshot 0007-12-04 at 16 43 07 Screenshot 0007-12-04 at 16 43 11

Does it really have two options?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This was all messed up. Basically any method can be sent as JSON RPC request. And the json file had all responses for all methods as a dropdown list in there, which is not ok

],
"summary": "Detect address",
Copy link
Collaborator

@reveloper reveloper Dec 4, 2025

Choose a reason for hiding this comment

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

The field definition is wrong, which works from ANY form of TON Address:

Screenshot 0007-12-04 at 16 59 47

example:

curl --request POST \
  --url https://toncenter.com/api/v2/detectAddress \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "address": "0:c78b3eb54a55243d4efe411f0bb0101a8da61904a89c48212f81ff32006b2dc1"
}

https://companyname-a7d5b98e-fields.mintlify.app/ecosystem/api/toncenter/v2/rpc/detect-address

"summary": "Detect address",
"description": "Validates an address and returns it in all standard formats. Use this to convert between address formats or to validate user input. Returns raw format (0:abc...), base64 bounceable (EQ...), base64 non-bounceable (UQ...), and URL-safe variants.",
"operationId": "detectAddress_post",
"requestBody": {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Let's find a more detailed explanation of this field for devs. Even if this is not for external use, it should be documented clearly:
Screenshot 0007-12-04 at 17 17 29

https://companyname-a7d5b98e-fields.mintlify.app/ecosystem/api/toncenter/v2/rpc/detect-address

"description": "Similar to previous one but tries to parse additional information for known contract types. This method is based on tonlib's function *getAccountState*. For detecting wallets we recommend to use *getWalletInformation*.",
"operationId": "get_extended_address_information_getExtendedAddressInformation_get",
"summary": "Detect address",
"description": "Validates an address and returns it in all standard formats. Use this to convert between address formats or to validate user input. Returns raw format (0:abc), base64 bounceable (EQ), base64 non-bounceable (UQ), and URL-safe variants.",
Copy link
Collaborator

Choose a reason for hiding this comment

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

All fields should be fully self-descriptive without dependency on other fields:
Screenshot 0007-12-04 at 17 29 14

Example:
description: User-friendly bounceable address in standard base64 encoding.
description: User-friendly bounceable address, base64-encoded and safe for use in URLs.

"operationId": "get_extended_address_information_getExtendedAddressInformation_get",
"summary": "Detect address",
"description": "Validates an address and returns it in all standard formats. Use this to convert between address formats or to validate user input. Returns raw format (0:abc), base64 bounceable (EQ), base64 non-bounceable (UQ), and URL-safe variants.",
"operationId": "detectAddress_get",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Since this is related to the user-friendly address flag, it should be accurately explained, that this is representation. This flag not 100% defined, whether the account of qiured address belongs only to the Testnet or Mainnet, because the address itself matches within both networks.
Screenshot 0007-12-04 at 17 51 53

],
"summary": "Detect address",
"description": "Validates an address and returns it in all standard formats. Use this to convert between address formats or to validate user input. Returns raw format (0:abc...), base64 bounceable (EQ...), base64 non-bounceable (UQ...), and URL-safe variants.",
"operationId": "detectAddress_post",
Copy link
Collaborator

Choose a reason for hiding this comment

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

For the /api/v2/detectAddress method, address description:
Screenshot 0007-12-08 at 18 50 32

It's better to make a compact definition and add a link:
Account address in raw format (e.g., 0:ca6e321c...) or User-friendly format (e.g., EQDKbjIcfM6ezt8KjKJJLshZJJSqX7XOA4ff-W72r5gqPrHF)

"hash": {
"name": "hash",
"in": "query",
"description": "A 256-bit hash in hex (64 chars) or base64 (44 chars) format. Used to identify blocks, transactions, and messages uniquely.",
Copy link
Collaborator

Choose a reason for hiding this comment

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

This description duplicated with another one in render:
Screenshot 0007-12-08 at 18 50 32

"type": "array",
"items": {
"$ref": "#/components/schemas/ExtraCurrencyBalance"

Copy link
Collaborator

Choose a reason for hiding this comment

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

Screenshot 0007-12-08 at 20 06 37

Let's define response description with the "Returns" verb. In this way, we avoid overusing "Response," and the description sounds more direct.
Example: Returns the hash of the requested resource in all supported formats (hex, base64, base64 URL-safe).

Can we remove the word "OK" from this description? "OK" is an excess word here.

"type": "array",
"items": {
"$ref": "#/components/schemas/ExtraCurrencyBalance"

Copy link
Collaborator

Choose a reason for hiding this comment

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

A Boolean parameter is better suited to describe straightforward boolean values:

Example: Returns true if the request succeeded; otherwise false. See the error field for details.

}
}
],
"description": "The response data. Only present when `ok` is true. "
Copy link
Collaborator

Choose a reason for hiding this comment

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

true should be formatted as code.

Screenshot 0007-12-08 at 20 26 51

"b64": {
"type": "string",
"title": "base64 form",
"description": "Standard base64 encoding."
Copy link
Collaborator

Choose a reason for hiding this comment

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

Add a full self-defined description for each child field.

Screenshot 0007-12-08 at 20 29 28

"summary": "Pack address",
"description": "Converts a raw address to user-friendly base64 format. Raw addresses use the format `workchain:hex` (e.g., `0:abc...`). The packed format is shorter and includes a checksum for error detection.",
"operationId": "packAddress_post",
"requestBody": {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Duplicated address field description
Screenshot 0007-12-08 at 20 32 05

"properties": {
"hash": {
"$ref": "#/components/schemas/TonHash",
"description": "Unique identifier hash for this object."
Copy link
Collaborator

Choose a reason for hiding this comment

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

This object - unclear. Let's specify a list of potential entities here: message, transaction, account?

"type": "array",
"items": {
"$ref": "#/components/schemas/ExtraCurrencyBalance"

Copy link
Collaborator

Choose a reason for hiding this comment

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

If we have no child object specified, let's describe this in the overall description. Add self-completed description here, what will be in this data by type, encoding e.t.c.

Screenshot 0007-12-09 at 17 11 57

@laviniat1996 laviniat1996 changed the title update API v2 field descriptions docs (feat): update API v2 field descriptions Feb 17, 2026
@laviniat1996 laviniat1996 changed the title docs (feat): update API v2 field descriptions feat (docs): update API v2 field descriptions Feb 17, 2026
@laviniat1996 laviniat1996 changed the title feat (docs): update API v2 field descriptions feat(docs): update API v2 field descriptions Feb 17, 2026
@github-actions

This comment has been minimized.

@laviniat1996
Copy link
Collaborator Author

@novusnota There is an issue with the wallet info page. It doesn't render unless I remove ecosystem/api/toncenter/v2/accounts/get-wallet-information.mdx
image

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Thanks for the updates to ecosystem/api/toncenter/v2-tonlib-types.mdx and ecosystem/api/toncenter/v2.json; I have several consistency and style improvements to suggest. Please apply the inline suggestions to align the references and endpoint descriptions with the documentation guidelines.


Every object returned by API v2 includes an `@type` field that identifies the object's structure. These values originate from two sources:

- **TonLib types** (e.g. `raw.fullAccountState`, `tvm.cell`) come from the [TonLib TL schema](https://github.com/ton-blockchain/ton/blob/master/tl/generate/scheme/tonlib_api.tl), the type definition language used by the C++ library powering this API.

Choose a reason for hiding this comment

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

[HIGH] Non-permalink GitHub reference to TonLib schema

The TonLib TL schema link uses the moving master branch URL on GitHub instead of a commit- or tag-based permalink. For normative, precision‑critical references, this makes the documentation non-reproducible over time because the linked content can change independently of the docs. The extended style guide requires using stable permalinks (e.g., a specific commit hash) for external specs.

Suggested change
- **TonLib types** (e.g. `raw.fullAccountState`, `tvm.cell`) come from the [TonLib TL schema](https://github.com/ton-blockchain/ton/blob/master/tl/generate/scheme/tonlib_api.tl), the type definition language used by the C++ library powering this API.

Please leave a reaction 👍/👎 to this suggestion to improve future reviews for everyone!

Comment on lines +17 to +24
"@type": "raw.fullAccountState",
"balance": "1000000000",
"code": "te6cc...",
"data": "te6cc...",
"last_transaction_id": {
"@type": "internal.transactionId",
"lt": "12345678",
"hash": "abc..."

Choose a reason for hiding this comment

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

[HIGH] Silently truncated address/hash values in JSON example

The JSON example on lines 17–24 uses visibly truncated values such as "code": "te6cc...", "data": "te6cc...", and "hash": "abc..." without any explanation that they are shortened for illustration. The extended style guide states that address and hash values must not be silently truncated; when truncation improves readability, the text must explicitly call it out and indicate that the values are not meant to be copied. As written, a reader might treat these as real, copyable values, which conflicts with this HIGH-severity rule. Adding a short note before the code block keeps the example readable while making the truncation explicit.

Please leave a reaction 👍/👎 to this suggestion to improve future reviews for everyone!

@reveloper reveloper marked this pull request as draft February 18, 2026 09:37
laviniat1996 and others added 2 commits February 19, 2026 06:17
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
laviniat1996 and others added 5 commits February 19, 2026 06:18
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@reveloper
Copy link
Collaborator

https://companyname-a7d5b98e-fields.mintlify.app/ecosystem/api/toncenter/v2/accounts/get-address-information#response-result-balance This description seems very clear to me, but I'm afraid any potential reader who opens this method from the beginning will not be able to get how to interact with this data and where to get a complete explanation on decimals (for jettons) and TONs, nanotons terms. It will be much more helpful if we find related links on these terms and point to them on such a balanced field, or add a bit more information in plain text itself. I didn't find separate section in Jetton docs, but I had same task in my page. Maybe we can ask docs team add this as separate page or chapter in jetton documentation and then refer to this.

https://companyname-a7d5b98e-fields.mintlify.app/standard/tokens/jettons/overview
https://companyname-a7d5b98e-fields.mintlify.app/ecosystem/wallet-apps/deep-links#read-more:~:text=One%20whole%20Jetton%20for%20%3CAMOUNT%3E%20is%20defined%20by

Screenshot 0008-02-19 at 13 52 03

@reveloper
Copy link
Collaborator

@reveloper
Copy link
Collaborator

Is it possible to share here an arbitrary example that appears to be real data? If so, is it worth separate task to make this for all methods? Does the OpenAPI v3 JSON content affect this somehow?

Screenshot 0008-02-19 at 14 16 54

@reveloper
Copy link
Collaborator

https://companyname-a7d5b98e-fields.mintlify.app/ecosystem/api/toncenter/v2/accounts/get-extended-address-information#option-5

Can we enter self-described names here instead of "Option 1", "Option 2", etc.? text?
Screenshot 0008-02-19 at 14 24 55

@reveloper
Copy link
Collaborator

Seems that we shouldn't provide this until we didn't prepare workable examples like
JavaScript - via @ton/ton
Java - via ton4j
Could you hide all languages and keep the visible curl only for now?
And create a separate task: make a workable example request field with fully supported libraries (@ton/ton, ton4j, ton-utils (Go), ton-utils(Python)).

Screenshot 0008-02-19 at 14 25 50

@laviniat1996
Copy link
Collaborator Author

Is it possible to share here an arbitrary example that appears to be real data? If so, is it worth separate task to make this for all methods? Does the OpenAPI v3 JSON content affect this somehow?

Screenshot 0008-02-19 at 14 16 54

I think it's better to create a new task, as it would be a lot of examples which would make this PR even harder to review.

@laviniat1996
Copy link
Collaborator Author

Seems that we shouldn't provide this until we didn't prepare workable examples like JavaScript - via @ton/ton Java - via ton4j Could you hide all languages and keep the visible curl only for now? And create a separate task: make a workable example request field with fully supported libraries (@ton/ton, ton4j, ton-utils (Go), ton-utils(Python)).

Screenshot 0008-02-19 at 14 25 50

These code snippets are fully autogenerated by mintlify, I don't have control over them tbh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3p Reviewed by someone else (a third party). Used for filtering PRs. Don't mind this.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[TON Center > API/v2 > OpenAPI 3 full field description]

2 participants