Skip to content

[IC-1056] update-api-docs-for-v120-chain-upgrade#186

Merged
dbrajovic merged 2 commits into
mainfrom
ic-1056/update-api-docs-for-v120-chain-upgrade
Jun 2, 2026
Merged

[IC-1056] update-api-docs-for-v120-chain-upgrade#186
dbrajovic merged 2 commits into
mainfrom
ic-1056/update-api-docs-for-v120-chain-upgrade

Conversation

@aarmoa

@aarmoa aarmoa commented May 21, 2026

Copy link
Copy Markdown
Contributor
  • Updated json tables based on injective core v1.20.0-beta and indexer v1.19.41.
  • Regenerated examples based on Python SDK v1.15.0-rc1 and Go SDK v1.62.0-rc1.
  • Added a section for the MsgBatchLiquidatePositions message.

Solves IC-1056

Summary by CodeRabbit

  • New Features

    • Added cross-margin trading pools with risk profile management for subaccounts
    • Introduced batch liquidation functionality for positions
    • Added support for PythPro and SedaFast oracle feeds
    • Enhanced RFQ system with new signing modes and authentication flows
    • New query endpoints for cross-margin pool snapshots and risk profiles
  • Documentation

    • Updated error codes and oracle type documentation
    • Added new API fields for position tracking, liquidation data, and account management
  • Chores

    • Updated upstream component versions (Injective Core v1.20.0, Indexer v1.20.2, SDKs)

…d indexer v1.19.41. Regenerated examples based on Python SDK v1.15.0-rc1 and Go SDK v1.62.0-rc1. Added a section for the MsgBatchLiquidatePositions message.
@linear

linear Bot commented May 21, 2026

Copy link
Copy Markdown

IC-1056

@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR comprehensively documents the Injective v1.20.0 chain upgrade. It bumps Makefile version pins, adds a new procedural guide for future chain upgrades in the README, and updates API documentation across 100+ files to reflect new features: oracle type additions (PythPro, SedaFast), error code changes, a new cross-margin trading system, RFQ gateway protocols, enhanced derivative trading APIs, and new indexer streaming capabilities.

Changes

v1.20.0 Chain Release Documentation

Layer / File(s) Summary
Version pins and documentation process
Makefile, README.md, source/includes/_changelog.md
Makefile version variables updated for INJECTIVE_CORE_VERSION (v1.19.0→v1.20.0), INDEXER_VERSION (v1.19.0→v1.20.2), PYTHON_SDK_VERSION (v1.14.0→v1.15.0), and GO_SDK_VERSION (v1.61.0→v1.62.0). README adds a new "Updating the docs for a new Injective chain version" section with step-by-step procedures, conditional guidance for new pages/modules, and a PR checklist.
Oracle type enhancements (PythPro and SedaFast)
source/includes/_binaryoptions.md, source/includes/_derivatives.md, source/includes/_insurance.md, source/json_tables/injective/oracle/v1beta1/OracleType.json, source/json_tables/injective/oracle/PythProPriceState.json, source/json_tables/injective/oracle/QueryPythProPriceStatesResponse.json, source/json_tables/injective/oracle/QuerySedaFastPriceStatesResponse.json, source/json_tables/injective/oracle/SedaFastPriceState.json, source/json_tables/injective/oracle/GenesisState.json
PythPro (code 14) and SedaFast (code 15) oracle types added to OracleType enums across multiple documentation files. New PythPro and SedaFast price state schema definitions, Genesis entries for persisted price states, and corresponding query response types.
Error catalog updates (codes and module reorganization)
source/includes/_errors.md, source/json_tables/errors/exchange_errors.json, source/json_tables/errors/injective_errors.json, source/json_tables/errors/oracle_errors.json, source/json_tables/errors/hyperlane_errors.json, source/json_tables/errors/ism_errors.json, source/json_tables/errors/post_dispatch_errors.json, source/json_tables/errors/warp_errors.json
Exchange error code 65 description updated; new error codes 114–115 added. Injective module gains error code 4. Oracle module expanded with error codes 45–53. Deprecated modules (Hyperlane, Ism, Post_dispatch, Warp) removed; Wasm-hooks module added.
Cross-margin core data structures and types
source/json_tables/injective/exchange/v2/RiskMode.json, source/json_tables/injective/exchange/v2/ReservationPolicy.json, source/json_tables/injective/exchange/v2/CrossMarginEligibility.json, source/json_tables/injective/exchange/v2/SubaccountRiskProfile.json, source/json_tables/injective/exchange/v2/SubaccountRiskProfileRecord.json, source/json_tables/injective/exchange/v2/CrossMarginParams.json
New RiskMode enum (UNSPECIFIED, ISOLATED, CROSS, PORTFOLIO); ReservationPolicy enum (UNSPECIFIED, FULL_HOLD, NO_HOLD); CrossMarginEligibility enum (UNSPECIFIED, ELIGIBLE, INELIGIBLE); SubaccountRiskProfile structure (mode, reservation_policy, credit_line_id); SubaccountRiskProfileRecord for genesis; CrossMarginParams for pool configuration (haircut, fees, denoms, limits, emergency pause).
Cross-margin market integration
source/includes/_derivatives.md, source/json_tables/injective/exchange/v2/DerivativeMarket.json, source/json_tables/injective/exchange/v2/DerivativeMarketSettlementInfo.json, source/json_tables/injective/exchange/v2/DerivativeMarketParamUpdateProposal.json, source/json_tables/injective/exchange/v2/MsgInstantPerpetualMarketLaunch.json, source/json_tables/injective/exchange/v2/MsgInstantExpiryFuturesMarketLaunch.json, source/json_tables/injective/exchange/v2/PerpetualMarketLaunchProposal.json, source/json_tables/injective/exchange/v2/ExpiryFuturesMarketLaunchProposal.json, source/json_tables/injective/exchange/v2/MsgUpdateDerivativeMarket.json, source/json_tables/injective/exchange/v2/Params.json
DerivativeMarket.cross_margin_eligible boolean flag; new is_forced_settlement field in settlement info; MsgInstantPerpetualMarketLaunch and MsgInstantExpiryFuturesMarketLaunch with cross_margin_eligible parameter; MsgUpdateDerivativeMarket with cross_margin_eligibility tri-state toggle; market launch proposals updated; Params.cross_margin_params object added.
Cross-margin pool queries and position risk modes
source/json_tables/injective/exchange/v2/QueryCrossMarginPoolSnapshotRequest.json, source/json_tables/injective/exchange/v2/QueryCrossMarginPoolSnapshotResponse.json, source/includes/_derivatives.md, source/json_tables/injective/exchange/v2/QuerySubaccountPositionInMarketResponse.json, source/json_tables/injective/exchange/v2/QuerySubaccountEffectivePositionInMarketResponse.json, source/json_tables/injective/exchange/v2/MsgUpdateSubaccountRiskProfile.json, source/json_tables/injective/exchange/v2/GenesisState.json
QueryCrossMarginPoolSnapshotRequest/Response with margin/PnL/equity/health metrics; QuerySubaccountPositionInMarketResponse and QuerySubaccountEffectivePositionInMarketResponse updated with risk_mode field explaining ISOLATED vs CROSS semantics; MsgUpdateSubaccountRiskProfile for subaccount risk profile updates; GenesisState.subaccount_risk_profiles added.
Batch and pool liquidation
source/includes/_derivatives.md, source/json_tables/injective/exchange/v2/MsgBatchLiquidatePositions.json, source/json_tables/injective/exchange/v2/MsgBatchLiquidatePositionsResponse.json, source/json_tables/injective/exchange/v2/LiquidatePositionData.json, source/json_tables/injective/exchange/v2/LiquidatePositionResult.json, source/json_tables/injective/exchange/v2/MsgLiquidateCrossMarginPool.json, source/json_tables/injective/exchange/v2/MsgSetDelegationTransferReceivers.json
New MsgBatchLiquidatePositions message for batch position liquidation with array of LiquidatePositionData; MsgBatchLiquidatePositionsResponse returns array of LiquidatePositionResult; MsgLiquidateCrossMarginPool for pool-level liquidation; MsgSetDelegationTransferReceivers for delegation management; Python and Go example code provided.
RFQ request type definitions for prepare endpoints
source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareRequestType.json, source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareEip712RequestType.json, source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareEip712AutoSignRequestType.json, source/json_tables/indexer/injective_rfq_gw_rpc/PrepareRequest.json, source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712Request.json, source/json_tables/indexer/injective_rfq_gw_rpc/PrepareResponse.json, source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712Response.json
RFQ request/response type schemas for prepare operations: RFQGwPrepareRequestType (basic prepare), RFQGwPrepareEip712RequestType (EIP712-signed), RFQGwPrepareEip712AutoSignRequestType (autosign variant) covering client/market/direction, taker/fee-payer accounts, expiry, settlement control, EIP712 domain, and autosign metadata; corresponding request/response wrappers.
RFQ autosign and EIP712 response types
source/json_tables/indexer/injective_rfq_gw_rpc/PrepareAutoSignResponse.json, source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712AutoSignResponse.json
PrepareAutoSignResponse with expired_quotes_count; PrepareEip712AutoSignResponse and PrepareEip712Response with RFQ ID, EIP712 data, fee payer details, signing mode, selected quotes (RFQGwPrepareQuoteResult array), autosign account metadata, and quote timing/expiration statistics.
RFQ maker and taker streaming protocols
source/json_tables/indexer/injective_rfq_rpc/MakerChallenge.json, source/json_tables/indexer/injective_rfq_rpc/MakerAuth.json, source/json_tables/indexer/injective_rfq_rpc/MakerStreamResponse.json, source/json_tables/indexer/injective_rfq_rpc/MakerStreamStreamingRequest.json, source/json_tables/indexer/injective_rfq_rpc/TakerStreamStreamingRequest.json, source/json_tables/indexer/injective_rfq_rpc/StreamError.json
MakerChallenge (nonce, evm_chain_id, expires_at) and MakerAuth (evm_chain_id, signature) for authentication; MakerStreamResponse and MakerStreamStreamingRequest with support for quote, ping, challenge, auth message types; TakerStreamStreamingRequest with conditional_order_sign_mode and conditional_order_evm_chain_id; StreamError with request/quote id identification.
Conditional order execution and RFQ settlement
source/json_tables/indexer/injective_rfq_rpc/ConditionalOrderInput.json, source/json_tables/indexer/injective_rfq_rpc/ConditionalOrderResponseType.json, source/json_tables/indexer/injective_rfq_rpc/CreateConditionalOrderRequest.json, source/json_tables/indexer/injective_rfq_rpc/RFQQuoteType.json, source/json_tables/indexer/injective_rfq_rpc/RFQProcessedQuoteType.json, source/json_tables/indexer/injective_rfq_rpc/RFQSettlementType.json, source/json_tables/indexer/injective_rfq_rpc/RFQSettlementMakerUpdate.json
ConditionalOrderInput with taker_nonce_time_window_ms; ConditionalOrderResponseType extended with tx_hash, terminal_at, evm_chain_id, taker_nonce_time_window_ms, and deprecated error field replaced by errors array; CreateConditionalOrderRequest with sign_mode (v1/v2) and evm_chain_id parameters; RFQQuoteType and RFQProcessedQuoteType with maker_subaccount_nonce narrowed to uint32, plus sign_mode and evm_chain_id fields; settlement types with tx_hash.
Derivative trade and position field enhancements
source/includes/_chainstream.md, source/includes/_derivativesrpc.md, source/json_tables/injective/stream/v2/DerivativeTrade.json, source/json_tables/indexer/injective_accounts_rpc/DerivativeLimitOrder.json, source/json_tables/indexer/injective_derivative_exchange_rpc/DerivativeLimitOrder.json, source/json_tables/indexer/injective_tc_derivatives_rpc/DerivativeLimitOrder.json, source/json_tables/indexer/injective_derivative_exchange_rpc/StreamPositionsV2Response.json, source/json_tables/indexer/injective_tc_derivatives_rpc/StreamPositionsResponse.json, source/json_tables/indexer/injective_tc_derivatives_rpc/TCDerivativeOrderHistoryType.json, source/json_tables/indexer/injective_tc_derivatives_rpc/TCDerivativeTrade.json
DerivativeTrade.is_liquidation flag; DerivativeLimitOrder.account_address field added across multiple RPC endpoints (accounts, derivative_exchange, tc_derivatives); StreamPositionsV2Response and StreamPositionsResponse with operation_type field; TCDerivativeTrade extended with is_position_closed, rfq_maker, account_address, rfq_id, tx_hash; TCDerivativeOrderHistoryType.account_address.
Trading and Charts request parameter additions
source/json_tables/indexer/injective_chart_rpc/DerivativeMarketHistoryRequest.json, source/json_tables/indexer/injective_chart_rpc/SpotMarketHistoryRequest.json, source/json_tables/indexer/injective_tc_derivatives_rpc/StreamTradesRequest.json, source/json_tables/indexer/injective_tc_derivatives_rpc/TradesRequest.json
DerivativeMarketHistoryRequest and SpotMarketHistoryRequest with fill_gaps boolean parameter for gap-filling (snapping candle opens to previous closes or using oracle/mark prices); StreamTradesRequest and TradesRequest with rfq_maker filter for synthetic trades; TradesRequest with with_pnl boolean for non-zero PnL filtering.
Indexer event provider streaming
source/json_tables/indexer/event_provider_api/StreamABCIEventsRequest.json, source/json_tables/indexer/event_provider_api/StreamABCIEventsResponse.json, source/json_tables/indexer/event_provider_api/StreamedRawBlock.json
New event provider APIs: StreamABCIEventsRequest (height, event_types, batch_size, fetchers); StreamABCIEventsResponse with blocks parameter; StreamedRawBlock schema (in_sync, height, block_time, block_timestamp, txs_results, begin_block_events, end_block_events) for streamed ABCI event payload structure.
Oracle message relay types for new oracle feeds
source/json_tables/injective/oracle/MsgRelayPythProPrices.json, source/json_tables/injective/oracle/MsgRelaySedaFastPrices.json, source/json_tables/injective/oracle/MsgRelayBandRates.json, source/json_tables/injective/oracle/MsgRequestBandIBCRates.json, source/json_tables/injective/oracle/Params.json
New oracle relay message types: MsgRelayPythProPrices (sender, updates with Pyth Lazer blobs), MsgRelaySedaFastPrices (sender, updates with SEDA Fast result JSON), MsgRelayBandRates (relayer, symbols, rates, resolve_times, requestIDs), MsgRequestBandIBCRates (sender, request_id); oracle Params extended with pyth_pro_verifier_contract, pyth_pro_verification_gas_limit, pyth_pro_verification_fee, and seda_fast_params for oracle configuration.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 Whiskers twitching with delight,
New oracle types shining bright—
Cross-margin pools and RFQ streams,
Documentation of trading dreams!
v1.20.0 hops into sight! 🚀

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ic-1056/update-api-docs-for-v120-chain-upgrade

….2. Regenerated examples based on Python SDK v1.15.0 and Go SDK v1.62.0. Added a section for the MsgBatchLiquidatePositions message.
@dbrajovic dbrajovic marked this pull request as ready for review June 2, 2026 17:47

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 10

🧹 Nitpick comments (6)
source/json_tables/injective/oracle/MsgRelayBandRates.json (1)

1-32: ⚡ Quick win

Add descriptions for all parameters.

All five parameters (relayer, symbols, rates, resolve_times, requestIDs) have empty descriptions. Adding descriptive text would improve documentation quality and help users understand the purpose of each parameter.

🤖 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 `@source/json_tables/injective/oracle/MsgRelayBandRates.json` around lines 1 -
32, The JSON schema for MsgRelayBandRates is missing descriptions for all
parameters; update the entries for "relayer", "symbols", "rates",
"resolve_times", and "requestIDs" to include concise descriptions explaining
their purpose (e.g., relayer: address submitting rates; symbols: list of asset
symbols being reported; rates: reported price values corresponding to symbols;
resolve_times: UNIX timestamps when each rate was resolved; requestIDs:
band/oracle request identifiers matching each symbol/rate), so each parameter
clearly documents expected value, format, and relation to the others.
source/json_tables/injective/oracle/MsgRequestBandIBCRates.json (1)

1-14: ⚡ Quick win

Add descriptions for all parameters.

Both parameters (sender, request_id) have empty descriptions. Adding descriptive text would improve documentation quality and help users understand the purpose of each parameter.

🤖 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 `@source/json_tables/injective/oracle/MsgRequestBandIBCRates.json` around lines
1 - 14, Update the JSON parameter entries in MsgRequestBandIBCRates.json by
adding clear, concise descriptions for the "sender" and "request_id" fields: for
"sender" describe it as the bech32 address (or account) initiating the IBC Band
rate request, and for "request_id" describe it as the unique unsigned 64-bit
identifier used to correlate this request with its response and retries; ensure
the "Description" values for the objects referencing "sender" and "request_id"
are non-empty, accurate, and written consistently with the rest of the JSON
docs.
source/json_tables/injective/exchange/v2/DerivativeMarketParamUpdateProposal.json (1)

102-106: ⚡ Quick win

Document intended mapping between cross_margin_eligible (bool) and cross_margin_eligibility (CrossMarginEligibility)
DerivativeMarketParamUpdateProposal.json’s cross_margin_eligibility (CrossMarginEligibility) matches MsgUpdateDerivativeMarket.json, and CrossMarginEligibility is a tri-state enum (CM_ELIGIBILITY_UNSPECIFIED / CM_ELIGIBILITY_ELIGIBLE / CM_ELIGIBILITY_INELIGIBLE). Add/confirm documentation for how clients should translate the market’s cross_margin_eligible boolean into the proposal’s enum semantics to avoid integration mistakes.

🤖 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
`@source/json_tables/injective/exchange/v2/DerivativeMarketParamUpdateProposal.json`
around lines 102 - 106, Update DerivativeMarketParamUpdateProposal.json to
document the intended mapping between the market boolean cross_margin_eligible
and the tri-state enum CrossMarginEligibility used by cross_margin_eligibility
(refer to MsgUpdateDerivativeMarket for context); specify that
cross_margin_eligible == true maps to CM_ELIGIBILITY_ELIGIBLE,
cross_margin_eligible == false maps to CM_ELIGIBILITY_INELIGIBLE, and
absent/null should map to CM_ELIGIBILITY_UNSPECIFIED, and also note the reverse
mapping rule when reading proposals back into market bools
(CM_ELIGIBILITY_ELIGIBLE -> true, CM_ELIGIBILITY_INELIGIBLE -> false,
CM_ELIGIBILITY_UNSPECIFIED -> treat as unset/null).
source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareRequestType.json (1)

3-36: ⚡ Quick win

Core trading parameters are undocumented.

client_id, market_id, direction, margin, quantity, worst_price, and taker_address all carry empty Description values, while the surrounding metadata fields (expiry, quotes_wait_time_ms, etc.) are documented. These are the primary inputs an integrator must populate, so a short description (expected format, units, accepted values for direction) would meaningfully reduce integration errors. The same gap repeats in RFQGwPrepareEip712RequestType.json and RFQGwPrepareEip712AutoSignRequestType.json.

🤖 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 `@source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareRequestType.json`
around lines 3 - 36, Add concise Description entries for the undocumented
parameters client_id, market_id, direction, margin, quantity, worst_price, and
taker_address: specify expected format (e.g., UUID or string pattern) for
client_id and market_id, allowed values for direction (e.g., "buy"|"sell"),
numeric type and units/precision for margin, quantity and worst_price (e.g.,
decimal string, asset units or base/quote, and precision/scale), and the
expected address format for taker_address (e.g., hex EOA). Apply the same
descriptive updates to the corresponding parameter entries in
RFQGwPrepareEip712RequestType.json and
RFQGwPrepareEip712AutoSignRequestType.json so integrators know required formats,
units and valid values.
source/json_tables/indexer/injective_derivative_exchange_rpc/StreamPositionsV2Response.json (1)

12-15: 💤 Low value

Consider expanding the description with valid values.

The description "Position update type" is generic. Consider documenting the valid values or providing examples (e.g., "insert", "update", "delete" or similar enum values) to help API consumers understand what to expect.

🤖 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
`@source/json_tables/indexer/injective_derivative_exchange_rpc/StreamPositionsV2Response.json`
around lines 12 - 15, Update the "Description" for the parameter
"operation_type" in StreamPositionsV2Response.json to list the allowed/expected
values and examples; e.g., replace "Position update type" with a short enum-like
description such as "Position update type — allowed values: 'insert', 'update',
'delete' (or other domain-specific values); describes the kind of operation
applied to the position" so API consumers know the exact semantics and examples
of operation_type.
source/json_tables/indexer/injective_tc_derivatives_rpc/StreamPositionsResponse.json (1)

12-15: 💤 Low value

Consider expanding the description with valid values.

The description "Position update type" is generic. Consider documenting the valid values or providing examples to help API consumers understand what to expect.

🤖 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
`@source/json_tables/indexer/injective_tc_derivatives_rpc/StreamPositionsResponse.json`
around lines 12 - 15, Update the "Description" for the Parameter
"operation_type" in StreamPositionsResponse.json to enumerate valid values and
give examples so consumers know expected strings; reference the operation_type
field and either list the allowed tokens (e.g., "insert", "update", "delete",
"snapshot") or indicate that the schema uses an enum and show the possible
values, and if applicable mention whether values are case-sensitive or have
synonyms.
🤖 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 `@README.md`:
- Around line 73-75: The README contains unlabeled fenced code blocks for
commands (make update-all-proto-related-files, make refresh-examples, ./slate.sh
serve) which triggers markdownlint MD040; update each triple-backtick fence
around those command examples to include a language identifier (e.g., change ```
to ```bash) for the blocks that contain those commands (the instances around the
lines referencing make update-all-proto-related-files, make refresh-examples,
and ./slate.sh serve) so the code blocks are labeled and MD040 is resolved.

In `@source/includes/_derivatives.md`:
- Line 5845: The intra-page link fragment for MsgLiquidatePosition is invalid;
locate the heading "## MsgLiquidatePosition" and update the link target from
"`#chain-exchange-for-derivatives-msgliquidateposition`" to the actual generated
anchor for that heading (e.g., the anchor generated from
"MsgLiquidatePosition"); in other words, find the current link referencing
MsgLiquidatePosition and replace its fragment with the exact anchor string
produced for the "## MsgLiquidatePosition" section so the link correctly
navigates to that heading.

In `@source/json_tables/indexer/event_provider_api/StreamABCIEventsRequest.json`:
- Around line 14-19: The "Description" for the parameter "batch_size" in
StreamABCIEventsRequest.json is truncated; confirm the exact in-sync behavior
with the author or spec, then update the Description to a complete sentence that
clearly states what happens once the stream is in sync (for example: "Once the
stream is in sync, the batch_size controls how many blocks are returned per
response, subject to the service cap"), keeping the "Parameter", "Type", and
"Required" fields unchanged; ensure the new text reads as a complete sentence
and matches the confirmed behavior.

In
`@source/json_tables/indexer/injective_rfq_rpc/CreateConditionalOrderRequest.json`:
- Around line 14-25: Update the "Required" flags in
CreateConditionalOrderRequest.json to match the descriptions: set "sign_mode"
Required to "No" (since it defaults to "v1" when omitted) and set "evm_chain_id"
Required to "No (required when sign_mode is \"v2\")" to indicate conditional
requirement; ensure the entries for the parameters "sign_mode" and
"evm_chain_id" reflect these exact text changes so consumers see optional vs
conditional requirement correctly.

In
`@source/json_tables/indexer/injective_rfq_rpc/TakerStreamStreamingRequest.json`:
- Around line 26-37: The "Required" flags are incorrect: set
"conditional_order_sign_mode" to optional ("Required": "No") because its
description states it defaults to "v1" when omitted, and change
"conditional_order_evm_chain_id" to be conditionally required (e.g., "Required":
"Yes when conditional_order_sign_mode == \"v2\", otherwise No" or simply
"Required": "Conditional") to reflect that it's only required for sign_mode
"v2"; update the descriptions for both fields (conditional_order_sign_mode and
conditional_order_evm_chain_id) to remain consistent with the new Required
values so integrators are not misled.

In
`@source/json_tables/injective/exchange/v2/MsgBatchLiquidatePositionsResponse.json`:
- Around line 3-6: Add a concise description for the "results" field in the
MsgBatchLiquidatePositionsResponse JSON schema: update the Description for the
Parameter "results" (Type "LiquidatePositionResult array") to something like
"Per-position liquidation outcomes for the batch request" so readers understand
this array contains the liquidation outcome for each position processed in the
batch.

In
`@source/json_tables/injective/exchange/v2/QuerySubaccountRiskProfileResponse.json`:
- Line 5: Add a clear description for the "profile" field in
QuerySubaccountRiskProfileResponse.json: explain that "profile" holds the
SubaccountRiskProfile object and summarize its contents/purpose (e.g., current
risk parameters, limits, margin requirements, and risk-adjustment settings for
the subaccount) so consumers know what data to expect and how to use it when
evaluating a subaccount's trading risk posture.

In `@source/json_tables/injective/oracle/MsgRelaySedaFastPrices.json`:
- Line 5: Add a descriptive text for the sender parameter in
MsgRelaySedaFastPrices.json: update the "Description" field for the "sender"
entry (the same parameter name used in MsgRelayPythProPrices.json) to something
like "sender is the relayer address broadcasting the update" or an equivalent
explanatory phrase so the parameter is no longer empty and matches the style of
the other message specs.

In `@source/json_tables/injective/oracle/QueryPythProPriceStatesResponse.json`:
- Around line 3-5: Update the empty Description for the "price_states" field in
QueryPythProPriceStatesResponse.json: set a concise explanation that
"price_states" is an array of PythProPriceState objects representing the
current/latest price state for each requested asset (including fields like
price, confidence, and timestamp), and note ordering semantics if applicable
(e.g., aligned with request order or sorted by asset id/timestamp). Ensure the
Description string clearly states the element type and the meaning of the array
for generated docs.

In `@source/json_tables/injective/oracle/QuerySedaFastPriceStatesResponse.json`:
- Around line 3-5: Add a clear description for the "price_states" response
field: explain that "price_states" is an array of SedaFastPriceState objects
where each element represents a snapshot of the fast price oracle for a token
(include what key fields in SedaFastPriceState represent, e.g., price value,
timestamp, source/oracle id, and status), note units (e.g., price precision or
quote currency) and any ordering or length guarantees (e.g., sorted descending
by timestamp, contains latest N states). Update the Description for
"price_states" to contain this concise summary so callers understand the array
contents and semantics.

---

Nitpick comments:
In
`@source/json_tables/indexer/injective_derivative_exchange_rpc/StreamPositionsV2Response.json`:
- Around line 12-15: Update the "Description" for the parameter "operation_type"
in StreamPositionsV2Response.json to list the allowed/expected values and
examples; e.g., replace "Position update type" with a short enum-like
description such as "Position update type — allowed values: 'insert', 'update',
'delete' (or other domain-specific values); describes the kind of operation
applied to the position" so API consumers know the exact semantics and examples
of operation_type.

In
`@source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareRequestType.json`:
- Around line 3-36: Add concise Description entries for the undocumented
parameters client_id, market_id, direction, margin, quantity, worst_price, and
taker_address: specify expected format (e.g., UUID or string pattern) for
client_id and market_id, allowed values for direction (e.g., "buy"|"sell"),
numeric type and units/precision for margin, quantity and worst_price (e.g.,
decimal string, asset units or base/quote, and precision/scale), and the
expected address format for taker_address (e.g., hex EOA). Apply the same
descriptive updates to the corresponding parameter entries in
RFQGwPrepareEip712RequestType.json and
RFQGwPrepareEip712AutoSignRequestType.json so integrators know required formats,
units and valid values.

In
`@source/json_tables/indexer/injective_tc_derivatives_rpc/StreamPositionsResponse.json`:
- Around line 12-15: Update the "Description" for the Parameter "operation_type"
in StreamPositionsResponse.json to enumerate valid values and give examples so
consumers know expected strings; reference the operation_type field and either
list the allowed tokens (e.g., "insert", "update", "delete", "snapshot") or
indicate that the schema uses an enum and show the possible values, and if
applicable mention whether values are case-sensitive or have synonyms.

In
`@source/json_tables/injective/exchange/v2/DerivativeMarketParamUpdateProposal.json`:
- Around line 102-106: Update DerivativeMarketParamUpdateProposal.json to
document the intended mapping between the market boolean cross_margin_eligible
and the tri-state enum CrossMarginEligibility used by cross_margin_eligibility
(refer to MsgUpdateDerivativeMarket for context); specify that
cross_margin_eligible == true maps to CM_ELIGIBILITY_ELIGIBLE,
cross_margin_eligible == false maps to CM_ELIGIBILITY_INELIGIBLE, and
absent/null should map to CM_ELIGIBILITY_UNSPECIFIED, and also note the reverse
mapping rule when reading proposals back into market bools
(CM_ELIGIBILITY_ELIGIBLE -> true, CM_ELIGIBILITY_INELIGIBLE -> false,
CM_ELIGIBILITY_UNSPECIFIED -> treat as unset/null).

In `@source/json_tables/injective/oracle/MsgRelayBandRates.json`:
- Around line 1-32: The JSON schema for MsgRelayBandRates is missing
descriptions for all parameters; update the entries for "relayer", "symbols",
"rates", "resolve_times", and "requestIDs" to include concise descriptions
explaining their purpose (e.g., relayer: address submitting rates; symbols: list
of asset symbols being reported; rates: reported price values corresponding to
symbols; resolve_times: UNIX timestamps when each rate was resolved; requestIDs:
band/oracle request identifiers matching each symbol/rate), so each parameter
clearly documents expected value, format, and relation to the others.

In `@source/json_tables/injective/oracle/MsgRequestBandIBCRates.json`:
- Around line 1-14: Update the JSON parameter entries in
MsgRequestBandIBCRates.json by adding clear, concise descriptions for the
"sender" and "request_id" fields: for "sender" describe it as the bech32 address
(or account) initiating the IBC Band rate request, and for "request_id" describe
it as the unique unsigned 64-bit identifier used to correlate this request with
its response and retries; ensure the "Description" values for the objects
referencing "sender" and "request_id" are non-empty, accurate, and written
consistently with the rest of the JSON docs.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: eece3f3e-56fb-4f41-92cd-82bf204bf319

📥 Commits

Reviewing files that changed from the base of the PR and between b98927d and fbf8b91.

📒 Files selected for processing (95)
  • Makefile
  • README.md
  • source/includes/_binaryoptions.md
  • source/includes/_chainstream.md
  • source/includes/_changelog.md
  • source/includes/_derivatives.md
  • source/includes/_derivativesrpc.md
  • source/includes/_errors.md
  • source/includes/_insurance.md
  • source/json_tables/errors/exchange_errors.json
  • source/json_tables/errors/hyperlane_errors.json
  • source/json_tables/errors/injective_errors.json
  • source/json_tables/errors/ism_errors.json
  • source/json_tables/errors/oracle_errors.json
  • source/json_tables/errors/post_dispatch_errors.json
  • source/json_tables/errors/warp_errors.json
  • source/json_tables/indexer/event_provider_api/StreamABCIEventsRequest.json
  • source/json_tables/indexer/event_provider_api/StreamABCIEventsResponse.json
  • source/json_tables/indexer/event_provider_api/StreamedRawBlock.json
  • source/json_tables/indexer/injective_accounts_rpc/DerivativeLimitOrder.json
  • source/json_tables/indexer/injective_chart_rpc/DerivativeMarketHistoryRequest.json
  • source/json_tables/indexer/injective_chart_rpc/SpotMarketHistoryRequest.json
  • source/json_tables/indexer/injective_derivative_exchange_rpc/DerivativeLimitOrder.json
  • source/json_tables/indexer/injective_derivative_exchange_rpc/StreamPositionsV2Response.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareAutoSignResponse.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712AutoSignRequest.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712AutoSignResponse.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712Request.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareEip712Response.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareRequest.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/PrepareResponse.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareEip712AutoSignRequestType.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareEip712RequestType.json
  • source/json_tables/indexer/injective_rfq_gw_rpc/RFQGwPrepareRequestType.json
  • source/json_tables/indexer/injective_rfq_rpc/ConditionalOrderInput.json
  • source/json_tables/indexer/injective_rfq_rpc/ConditionalOrderResponseType.json
  • source/json_tables/indexer/injective_rfq_rpc/CreateConditionalOrderRequest.json
  • source/json_tables/indexer/injective_rfq_rpc/MakerAuth.json
  • source/json_tables/indexer/injective_rfq_rpc/MakerChallenge.json
  • source/json_tables/indexer/injective_rfq_rpc/MakerStreamResponse.json
  • source/json_tables/indexer/injective_rfq_rpc/MakerStreamStreamingRequest.json
  • source/json_tables/indexer/injective_rfq_rpc/RFQProcessedQuoteType.json
  • source/json_tables/indexer/injective_rfq_rpc/RFQQuoteType.json
  • source/json_tables/indexer/injective_rfq_rpc/RFQSettlementMakerUpdate.json
  • source/json_tables/indexer/injective_rfq_rpc/RFQSettlementType.json
  • source/json_tables/indexer/injective_rfq_rpc/StreamError.json
  • source/json_tables/indexer/injective_rfq_rpc/TakerStreamStreamingRequest.json
  • source/json_tables/indexer/injective_tc_derivatives_rpc/DerivativeLimitOrder.json
  • source/json_tables/indexer/injective_tc_derivatives_rpc/StreamPositionsResponse.json
  • source/json_tables/indexer/injective_tc_derivatives_rpc/StreamTradesRequest.json
  • source/json_tables/indexer/injective_tc_derivatives_rpc/TCDerivativeOrderHistoryType.json
  • source/json_tables/indexer/injective_tc_derivatives_rpc/TCDerivativeTrade.json
  • source/json_tables/indexer/injective_tc_derivatives_rpc/TradesRequest.json
  • source/json_tables/injective/exchange/v2/CrossMarginEligibility.json
  • source/json_tables/injective/exchange/v2/CrossMarginParams.json
  • source/json_tables/injective/exchange/v2/DerivativeMarket.json
  • source/json_tables/injective/exchange/v2/DerivativeMarketParamUpdateProposal.json
  • source/json_tables/injective/exchange/v2/DerivativeMarketSettlementInfo.json
  • source/json_tables/injective/exchange/v2/ExpiryFuturesMarketLaunchProposal.json
  • source/json_tables/injective/exchange/v2/GenesisState.json
  • source/json_tables/injective/exchange/v2/LiquidatePositionData.json
  • source/json_tables/injective/exchange/v2/LiquidatePositionResult.json
  • source/json_tables/injective/exchange/v2/MsgBatchLiquidatePositions.json
  • source/json_tables/injective/exchange/v2/MsgBatchLiquidatePositionsResponse.json
  • source/json_tables/injective/exchange/v2/MsgInstantExpiryFuturesMarketLaunch.json
  • source/json_tables/injective/exchange/v2/MsgInstantPerpetualMarketLaunch.json
  • source/json_tables/injective/exchange/v2/MsgLiquidateCrossMarginPool.json
  • source/json_tables/injective/exchange/v2/MsgSetDelegationTransferReceivers.json
  • source/json_tables/injective/exchange/v2/MsgUpdateDerivativeMarket.json
  • source/json_tables/injective/exchange/v2/MsgUpdateSubaccountRiskProfile.json
  • source/json_tables/injective/exchange/v2/Params.json
  • source/json_tables/injective/exchange/v2/PerpetualMarketLaunchProposal.json
  • source/json_tables/injective/exchange/v2/QueryCrossMarginPoolSnapshotRequest.json
  • source/json_tables/injective/exchange/v2/QueryCrossMarginPoolSnapshotResponse.json
  • source/json_tables/injective/exchange/v2/QuerySubaccountEffectivePositionInMarketResponse.json
  • source/json_tables/injective/exchange/v2/QuerySubaccountPositionInMarketResponse.json
  • source/json_tables/injective/exchange/v2/QuerySubaccountRiskProfileRequest.json
  • source/json_tables/injective/exchange/v2/QuerySubaccountRiskProfileResponse.json
  • source/json_tables/injective/exchange/v2/ReservationPolicy.json
  • source/json_tables/injective/exchange/v2/RiskMode.json
  • source/json_tables/injective/exchange/v2/SubaccountRiskProfile.json
  • source/json_tables/injective/exchange/v2/SubaccountRiskProfileRecord.json
  • source/json_tables/injective/oracle/GenesisState.json
  • source/json_tables/injective/oracle/MsgRelayBandRates.json
  • source/json_tables/injective/oracle/MsgRelayPythProPrices.json
  • source/json_tables/injective/oracle/MsgRelaySedaFastPrices.json
  • source/json_tables/injective/oracle/MsgRequestBandIBCRates.json
  • source/json_tables/injective/oracle/Params.json
  • source/json_tables/injective/oracle/PythProPriceState.json
  • source/json_tables/injective/oracle/QueryPythProPriceStatesResponse.json
  • source/json_tables/injective/oracle/QuerySedaFastPriceStatesResponse.json
  • source/json_tables/injective/oracle/SedaFastParams.json
  • source/json_tables/injective/oracle/SedaFastPriceState.json
  • source/json_tables/injective/oracle/v1beta1/OracleType.json
  • source/json_tables/injective/stream/v2/DerivativeTrade.json
💤 Files with no reviewable changes (4)
  • source/json_tables/errors/ism_errors.json
  • source/json_tables/errors/hyperlane_errors.json
  • source/json_tables/errors/warp_errors.json
  • source/json_tables/errors/post_dispatch_errors.json

Comment thread README.md
Comment on lines +73 to +75
```
make update-all-proto-related-files
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add language identifiers to fenced code blocks.

Line 73, Line 87, and Line 112 use unlabeled fenced blocks, which triggers markdownlint MD040.

Suggested fix
-```
+```bash
 make update-all-proto-related-files

- +bash
make refresh-examples


-```
+```bash
./slate.sh serve
</details>


Also applies to: 87-89, 112-114

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 73-73: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @README.md around lines 73 - 75, The README contains unlabeled fenced code
blocks for commands (make update-all-proto-related-files, make refresh-examples,
./slate.sh serve) which triggers markdownlint MD040; update each triple-backtick
fence around those command examples to include a language identifier (e.g.,
change tobash) for the blocks that contain those commands (the instances
around the lines referencing make update-all-proto-related-files, make
refresh-examples, and ./slate.sh serve) so the code blocks are labeled and MD040
is resolved.


</details>

<!-- fingerprinting:phantom:triton:hawk -->

<!-- This is an auto-generated comment by CodeRabbit -->


## MsgBatchLiquidatePositions

This message is sent to the chain to liquidate more than one position with a single message. For more details about liquidation check [MsgLiquidatePosition](#chain-exchange-for-derivatives-msgliquidateposition).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix broken intra-page anchor for MsgLiquidatePosition.

The fragment #chain-exchange-for-derivatives-msgliquidateposition does not match this page’s heading anchor pattern and is flagged as invalid, so this link can break in rendered docs. Point it to the actual generated anchor for the ## MsgLiquidatePosition section.

Suggested fix
-This message is sent to the chain to liquidate more than one position with a single message. For more details about liquidation check [MsgLiquidatePosition](`#chain-exchange-for-derivatives-msgliquidateposition`).
+This message is sent to the chain to liquidate more than one position with a single message. For more details about liquidation check [MsgLiquidatePosition](`#derivatives-msgliquidateposition`).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This message is sent to the chain to liquidate more than one position with a single message. For more details about liquidation check [MsgLiquidatePosition](#chain-exchange-for-derivatives-msgliquidateposition).
This message is sent to the chain to liquidate more than one position with a single message. For more details about liquidation check [MsgLiquidatePosition](`#derivatives-msgliquidateposition`).
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 5845-5845: Link fragments should be valid

(MD051, link-fragments)

🤖 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 `@source/includes/_derivatives.md` at line 5845, The intra-page link fragment
for MsgLiquidatePosition is invalid; locate the heading "##
MsgLiquidatePosition" and update the link target from
"`#chain-exchange-for-derivatives-msgliquidateposition`" to the actual generated
anchor for that heading (e.g., the anchor generated from
"MsgLiquidatePosition"); in other words, find the current link referencing
MsgLiquidatePosition and replace its fragment with the exact anchor string
produced for the "## MsgLiquidatePosition" section so the link correctly
navigates to that heading.

Comment on lines +14 to +19
{
"Parameter": "batch_size",
"Type": "uint32",
"Description": "Number of blocks to include in each stream response. The service will have a cap on the batch size, and default to it if it's greater. Once the stream is in sync, the batch size",
"Required": "Yes"
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Incomplete batch_size description.

The description is truncated mid-sentence ("...Once the stream is in sync, the batch size"), so it will render as a dangling fragment in the generated table. Please complete the sentence describing the in-sync behavior.

📝 Suggested fix (complete the sentence)
-    "Description": "Number of blocks to include in each stream response. The service will have a cap on the batch size, and default to it if it's greater. Once the stream is in sync, the batch size",
+    "Description": "Number of blocks to include in each stream response. The service will have a cap on the batch size, and default to it if it's greater. Once the stream is in sync, the batch size will be reduced to 1 so each new block is delivered as it is produced.",
Please confirm the exact in-sync behavior before applying, as the trailing text was cut off in the source.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"Parameter": "batch_size",
"Type": "uint32",
"Description": "Number of blocks to include in each stream response. The service will have a cap on the batch size, and default to it if it's greater. Once the stream is in sync, the batch size",
"Required": "Yes"
},
{
"Parameter": "batch_size",
"Type": "uint32",
"Description": "Number of blocks to include in each stream response. The service will have a cap on the batch size, and default to it if it's greater. Once the stream is in sync, the batch size will be reduced to 1 so each new block is delivered as it is produced.",
"Required": "Yes"
},
🤖 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 `@source/json_tables/indexer/event_provider_api/StreamABCIEventsRequest.json`
around lines 14 - 19, The "Description" for the parameter "batch_size" in
StreamABCIEventsRequest.json is truncated; confirm the exact in-sync behavior
with the author or spec, then update the Description to a complete sentence that
clearly states what happens once the stream is in sync (for example: "Once the
stream is in sync, the batch_size controls how many blocks are returned per
response, subject to the service cap"), keeping the "Parameter", "Type", and
"Required" fields unchanged; ensure the new text reads as a complete sentence
and matches the confirmed behavior.

Comment on lines +14 to 25
{
"Parameter": "sign_mode",
"Type": "string",
"Description": "Signature scheme used for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
"Required": "Yes"
},
{
"Parameter": "evm_chain_id",
"Type": "uint64",
"Description": "EVM chain ID embedded in the EIP-712 domain. Required when sign_mode is \"v2\"; ignored otherwise. Must match one of the indexer's configured chain IDs.",
"Required": "Yes"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Required flags contradict the field descriptions.

Both new fields are marked "Required": "Yes", but their descriptions state otherwise:

  • sign_mode "Defaults to "v1" when omitted" — i.e. optional, not required.
  • evm_chain_id is "Required when sign_mode is "v2"; ignored otherwise" — conditionally required, not always required.

As written, the table tells consumers they must always send both, which is inaccurate and conflicts with the backward-compatibility behavior described.

📝 Proposed doc fix
   {
     "Parameter": "sign_mode",
     "Type": "string",
     "Description": "Signature scheme used for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
-    "Required": "Yes"
+    "Required": "No"
   },
   {
     "Parameter": "evm_chain_id",
     "Type": "uint64",
     "Description": "EVM chain ID embedded in the EIP-712 domain. Required when sign_mode is \"v2\"; ignored otherwise. Must match one of the indexer's configured chain IDs.",
-    "Required": "Yes"
+    "Required": "Conditional (required when sign_mode is \"v2\")"
   }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"Parameter": "sign_mode",
"Type": "string",
"Description": "Signature scheme used for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
"Required": "Yes"
},
{
"Parameter": "evm_chain_id",
"Type": "uint64",
"Description": "EVM chain ID embedded in the EIP-712 domain. Required when sign_mode is \"v2\"; ignored otherwise. Must match one of the indexer's configured chain IDs.",
"Required": "Yes"
}
{
"Parameter": "sign_mode",
"Type": "string",
"Description": "Signature scheme used for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
"Required": "No"
},
{
"Parameter": "evm_chain_id",
"Type": "uint64",
"Description": "EVM chain ID embedded in the EIP-712 domain. Required when sign_mode is \"v2\"; ignored otherwise. Must match one of the indexer's configured chain IDs.",
"Required": "Conditional (required when sign_mode is \"v2\")"
}
🤖 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
`@source/json_tables/indexer/injective_rfq_rpc/CreateConditionalOrderRequest.json`
around lines 14 - 25, Update the "Required" flags in
CreateConditionalOrderRequest.json to match the descriptions: set "sign_mode"
Required to "No" (since it defaults to "v1" when omitted) and set "evm_chain_id"
Required to "No (required when sign_mode is \"v2\")" to indicate conditional
requirement; ensure the entries for the parameters "sign_mode" and
"evm_chain_id" reflect these exact text changes so consumers see optional vs
conditional requirement correctly.

Comment on lines +26 to 37
{
"Parameter": "conditional_order_sign_mode",
"Type": "string",
"Description": "Signature scheme for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
"Required": "Yes"
},
{
"Parameter": "conditional_order_evm_chain_id",
"Type": "uint64",
"Description": "EVM chain ID embedded in the EIP-712 domain for the conditional order. Required when conditional_order_sign_mode is \"v2\".",
"Required": "Yes"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Required flags contradict the field descriptions.

conditional_order_sign_mode is documented as defaulting to "v1" when omitted, which means it is optional — but it is marked "Required": "Yes". Likewise conditional_order_evm_chain_id is only required when conditional_order_sign_mode is "v2" (per its own description), so an unconditional "Yes" is misleading. Readers integrating against this RPC will assume both must always be sent.

📝 Proposed fix
   {
     "Parameter": "conditional_order_sign_mode",
     "Type": "string",
     "Description": "Signature scheme for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
-    "Required": "Yes"
+    "Required": "No"
   },
   {
     "Parameter": "conditional_order_evm_chain_id",
     "Type": "uint64",
     "Description": "EVM chain ID embedded in the EIP-712 domain for the conditional order. Required when conditional_order_sign_mode is \"v2\".",
-    "Required": "Yes"
+    "Required": "Conditional (required when conditional_order_sign_mode is \"v2\")"
   }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"Parameter": "conditional_order_sign_mode",
"Type": "string",
"Description": "Signature scheme for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
"Required": "Yes"
},
{
"Parameter": "conditional_order_evm_chain_id",
"Type": "uint64",
"Description": "EVM chain ID embedded in the EIP-712 domain for the conditional order. Required when conditional_order_sign_mode is \"v2\".",
"Required": "Yes"
}
{
"Parameter": "conditional_order_sign_mode",
"Type": "string",
"Description": "Signature scheme for the conditional order: \"v1\" (raw JSON keccak256) or \"v2\" (EIP-712). Defaults to \"v1\" when omitted, for backward compatibility with pre-EIP-712 clients.",
"Required": "No"
},
{
"Parameter": "conditional_order_evm_chain_id",
"Type": "uint64",
"Description": "EVM chain ID embedded in the EIP-712 domain for the conditional order. Required when conditional_order_sign_mode is \"v2\".",
"Required": "Conditional (required when conditional_order_sign_mode is \"v2\")"
}
🤖 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
`@source/json_tables/indexer/injective_rfq_rpc/TakerStreamStreamingRequest.json`
around lines 26 - 37, The "Required" flags are incorrect: set
"conditional_order_sign_mode" to optional ("Required": "No") because its
description states it defaults to "v1" when omitted, and change
"conditional_order_evm_chain_id" to be conditionally required (e.g., "Required":
"Yes when conditional_order_sign_mode == \"v2\", otherwise No" or simply
"Required": "Conditional") to reflect that it's only required for sign_mode
"v2"; update the descriptions for both fields (conditional_order_sign_mode and
conditional_order_evm_chain_id) to remain consistent with the new Required
values so integrators are not misled.

Comment on lines +3 to +6
"Parameter": "results",
"Type": "LiquidatePositionResult array",
"Description": ""
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the empty response field description.

Line 5 leaves Description blank for results, which makes the schema ambiguous for readers. Add a short description (e.g., “per-position liquidation outcomes for the batch request”).

🤖 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
`@source/json_tables/injective/exchange/v2/MsgBatchLiquidatePositionsResponse.json`
around lines 3 - 6, Add a concise description for the "results" field in the
MsgBatchLiquidatePositionsResponse JSON schema: update the Description for the
Parameter "results" (Type "LiquidatePositionResult array") to something like
"Per-position liquidation outcomes for the batch request" so readers understand
this array contains the liquidation outcome for each position processed in the
batch.

{
"Parameter": "profile",
"Type": "SubaccountRiskProfile",
"Description": ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add description for the profile parameter.

The description field is empty. Documentation should explain what the SubaccountRiskProfile contains or its purpose.

🤖 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
`@source/json_tables/injective/exchange/v2/QuerySubaccountRiskProfileResponse.json`
at line 5, Add a clear description for the "profile" field in
QuerySubaccountRiskProfileResponse.json: explain that "profile" holds the
SubaccountRiskProfile object and summarize its contents/purpose (e.g., current
risk parameters, limits, margin requirements, and risk-adjustment settings for
the subaccount) so consumers know what data to expect and how to use it when
evaluating a subaccount's trading risk posture.

{
"Parameter": "sender",
"Type": "string",
"Description": "",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a description for the sender parameter.

The sender parameter has an empty description. For consistency with MsgRelayPythProPrices.json, consider adding a description such as "sender is the relayer address broadcasting the update" or similar explanatory text.

🤖 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 `@source/json_tables/injective/oracle/MsgRelaySedaFastPrices.json` at line 5,
Add a descriptive text for the sender parameter in MsgRelaySedaFastPrices.json:
update the "Description" field for the "sender" entry (the same parameter name
used in MsgRelayPythProPrices.json) to something like "sender is the relayer
address broadcasting the update" or an equivalent explanatory phrase so the
parameter is no longer empty and matches the style of the other message specs.

Comment on lines +3 to +5
"Parameter": "price_states",
"Type": "PythProPriceState array",
"Description": ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the empty response field description.

Line 5 leaves price_states undocumented, which degrades the generated docs for this new endpoint. Add a short description for the array semantics.

✍️ Proposed doc fix
   {
     "Parameter": "price_states",
     "Type": "PythProPriceState array",
-    "Description": ""
+    "Description": "List of persisted PythPro price states."
   }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Parameter": "price_states",
"Type": "PythProPriceState array",
"Description": ""
"Parameter": "price_states",
"Type": "PythProPriceState array",
"Description": "List of persisted PythPro price states."
🤖 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 `@source/json_tables/injective/oracle/QueryPythProPriceStatesResponse.json`
around lines 3 - 5, Update the empty Description for the "price_states" field in
QueryPythProPriceStatesResponse.json: set a concise explanation that
"price_states" is an array of PythProPriceState objects representing the
current/latest price state for each requested asset (including fields like
price, confidence, and timestamp), and note ordering semantics if applicable
(e.g., aligned with request order or sorted by asset id/timestamp). Ensure the
Description string clearly states the element type and the meaning of the array
for generated docs.

Comment on lines +3 to +5
"Parameter": "price_states",
"Type": "SedaFastPriceState array",
"Description": ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fill the empty response field description.

Line 5 leaves price_states undocumented, so readers won’t know what this array contains without opening another table.

✍️ Proposed doc fix
   {
     "Parameter": "price_states",
     "Type": "SedaFastPriceState array",
-    "Description": ""
+    "Description": "List of persisted SEDA Fast price states."
   }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Parameter": "price_states",
"Type": "SedaFastPriceState array",
"Description": ""
"Parameter": "price_states",
"Type": "SedaFastPriceState array",
"Description": "List of persisted SEDA Fast price states."
🤖 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 `@source/json_tables/injective/oracle/QuerySedaFastPriceStatesResponse.json`
around lines 3 - 5, Add a clear description for the "price_states" response
field: explain that "price_states" is an array of SedaFastPriceState objects
where each element represents a snapshot of the fast price oracle for a token
(include what key fields in SedaFastPriceState represent, e.g., price value,
timestamp, source/oracle id, and status), note units (e.g., price precision or
quote currency) and any ordering or length guarantees (e.g., sorted descending
by timestamp, contains latest N states). Update the Description for
"price_states" to contain this concise summary so callers understand the array
contents and semantics.

@dbrajovic dbrajovic merged commit ed34ddb into main Jun 2, 2026
9 checks passed
@dbrajovic dbrajovic deleted the ic-1056/update-api-docs-for-v120-chain-upgrade branch June 2, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants