Current section
Files
Jump to
Current section
Files
priv/specs/json/output/_contract_test_report.json
{
"baseline": {
"error_code_fields_roots": [
"element",
"error",
"errorMessages",
"headers",
"order",
"parts",
"response"
]
},
"findings": [
{
"exchange": "binanceus",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.borrowIsolatedMargin has a resolvable literal entry but borrowIsolatedMargin is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.borrowIsolatedMargin"
},
{
"exchange": "binanceus",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchFundingHistory has a resolvable literal entry but fetchFundingHistory is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchFundingHistory"
},
{
"exchange": "binanceus",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.repayIsolatedMargin has a resolvable literal entry but repayIsolatedMargin is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.repayIsolatedMargin"
},
{
"exchange": "bitfinex",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares createOrders but runtime.describe.has.createOrders = \"__undefined\"",
"path": "structure.unified_endpoints.createOrders"
},
{
"exchange": "bybit",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchOptionMarkets has a resolvable literal entry but fetchOptionMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchOptionMarkets"
},
{
"exchange": "bybit",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchSpotMarkets has a resolvable literal entry but fetchSpotMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchSpotMarkets"
},
{
"exchange": "derive",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchOptionMarkets has a resolvable literal entry but fetchOptionMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchOptionMarkets"
},
{
"exchange": "derive",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchSpotMarkets has a resolvable literal entry but fetchSpotMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchSpotMarkets"
},
{
"exchange": "derive",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchSwapMarkets has a resolvable literal entry but fetchSwapMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchSwapMarkets"
},
{
"exchange": "gate",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares closePosition but runtime.describe.has.closePosition = \"__undefined\"",
"path": "structure.unified_endpoints.closePosition"
},
{
"exchange": "gate",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchOrderTrades but runtime.describe.has.fetchOrderTrades = \"__undefined\"",
"path": "structure.unified_endpoints.fetchOrderTrades"
},
{
"exchange": "gate",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchOrdersByStatus but runtime.describe.has.fetchOrdersByStatus = \"__undefined\"",
"path": "structure.unified_endpoints.fetchOrdersByStatus"
},
{
"exchange": "gateio",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares closePosition but runtime.describe.has.closePosition = \"__undefined\"",
"path": "structure.unified_endpoints.closePosition"
},
{
"exchange": "gateio",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchOrderTrades but runtime.describe.has.fetchOrderTrades = \"__undefined\"",
"path": "structure.unified_endpoints.fetchOrderTrades"
},
{
"exchange": "gateio",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchOrdersByStatus but runtime.describe.has.fetchOrdersByStatus = \"__undefined\"",
"path": "structure.unified_endpoints.fetchOrdersByStatus"
},
{
"exchange": "htx",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchContractOrders has a resolvable literal entry but fetchContractOrders is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchContractOrders"
},
{
"exchange": "huobi",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchContractOrders has a resolvable literal entry but fetchContractOrders is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchContractOrders"
},
{
"exchange": "hyperliquid",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.approveBuilderFee has a resolvable literal entry but approveBuilderFee is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.approveBuilderFee"
},
{
"exchange": "hyperliquid",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.enableUserDexAbstraction has a resolvable literal entry but enableUserDexAbstraction is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.enableUserDexAbstraction"
},
{
"exchange": "hyperliquid",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchSpotMarkets has a resolvable literal entry but fetchSpotMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchSpotMarkets"
},
{
"exchange": "hyperliquid",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchSwapMarkets has a resolvable literal entry but fetchSwapMarkets is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchSwapMarkets"
},
{
"exchange": "hyperliquid",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.setUserAbstraction has a resolvable literal entry but setUserAbstraction is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.setUserAbstraction"
},
{
"exchange": "kraken",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchOrdersByIds has a resolvable literal entry but fetchOrdersByIds is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchOrdersByIds"
},
{
"exchange": "kucoin",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.cancelAllUtaOrders has a resolvable literal entry but cancelAllUtaOrders is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.cancelAllUtaOrders"
},
{
"exchange": "kucoin",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchLeverageTiers has a resolvable literal entry but fetchLeverageTiers is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchLeverageTiers"
},
{
"exchange": "kucoinfutures",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.cancelAllUtaOrders has a resolvable literal entry but cancelAllUtaOrders is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.cancelAllUtaOrders"
},
{
"exchange": "kucoinfutures",
"invariant": "request_defaults_resolvable_reachable_from_unified",
"message": "request_defaults.fetchLeverageTiers has a resolvable literal entry but fetchLeverageTiers is not reachable from unified_endpoints (neither a key nor a value)",
"path": "structure.request_defaults.fetchLeverageTiers"
},
{
"exchange": "myokx",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares borrowCrossMargin but runtime.describe.has.borrowCrossMargin = \"__undefined\"",
"path": "structure.unified_endpoints.borrowCrossMargin"
},
{
"exchange": "myokx",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchPositionMode but runtime.describe.has.fetchPositionMode = \"__undefined\"",
"path": "structure.unified_endpoints.fetchPositionMode"
},
{
"exchange": "okx",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares borrowCrossMargin but runtime.describe.has.borrowCrossMargin = \"__undefined\"",
"path": "structure.unified_endpoints.borrowCrossMargin"
},
{
"exchange": "okx",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchPositionMode but runtime.describe.has.fetchPositionMode = \"__undefined\"",
"path": "structure.unified_endpoints.fetchPositionMode"
},
{
"exchange": "okxus",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares borrowCrossMargin but runtime.describe.has.borrowCrossMargin = \"__undefined\"",
"path": "structure.unified_endpoints.borrowCrossMargin"
},
{
"exchange": "okxus",
"invariant": "unified_endpoints_claimed_in_has",
"message": "unified_endpoints declares fetchPositionMode but runtime.describe.has.fetchPositionMode = \"__undefined\"",
"path": "structure.unified_endpoints.fetchPositionMode"
}
],
"summary": {
"exchanges_checked": 23,
"findings_by_invariant": {
"authenticated_sections_reachable_in_api": 0,
"error_code_fields_root_in_observed_set": 0,
"override_paths_present_in_output": 0,
"override_registry_valid": 0,
"provenance_covers_schema": 0,
"request_defaults_resolvable_reachable_from_unified": 20,
"sign_recipe_keys_match_auth_sections": 0,
"sign_recipe_shape_valid": 0,
"testnet_urls_shape_valid": 0,
"unified_endpoints_claimed_in_has": 13
},
"invariants_run": 11,
"total_findings": 33
},
"tier_scope": [
"tier1",
"tier2",
"dex"
]
}