# Existing direct encoding/json function calls.
#
# AGENTS.md requires business code to use common/json.go wrappers for JSON
# marshal/unmarshal operations. This baseline freezes existing call sites
# so new direct calls fail CI while old code is migrated incrementally.
#
# Format: <path>|<enclosing function>|<json selector>|<sha256(normalized call)>
controller/channel-billing.go|updateChannelCloseAIBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelOpenAISBBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelAIProxyBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelAPI2GPTBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelSiliconFlowBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelDeepSeekBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelAIGC2DBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelOpenRouterBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelMoonshotBalance|Unmarshal|d7a4bbf58b3151d53e68905b6060ad920944bbaa0d6c6c1c0fe88be32e034d49
controller/channel-billing.go|updateChannelBalance|Unmarshal|46a9579cb9c80e020d91043bd3cf0c05da89a6fdbd8b65466c3795a3e637e626
controller/channel-billing.go|updateChannelBalance|Unmarshal|3df63364d5fe5f35cc933cc2cdcf8b28c4aa5f2f0744c21f9364876785916be5
controller/console_migrate.go|MigrateConsoleSetting|Unmarshal|bcdd45a79ffdf482179db4212ca56bc912c76046885b91cc619342d16f70869c
controller/console_migrate.go|MigrateConsoleSetting|Marshal|af391e668907209f54f14f3f402a03be0b7caf7f206f11ef79164ff8d85db95f
controller/console_migrate.go|MigrateConsoleSetting|Unmarshal|bcdd45a79ffdf482179db4212ca56bc912c76046885b91cc619342d16f70869c
controller/console_migrate.go|MigrateConsoleSetting|Marshal|b676fe206eb44fe5bd335a61d0f385f7383b3d46cd554e6ead999e03c0732e57
controller/console_migrate.go|MigrateConsoleSetting|Marshal|65e72874ae8b2150c3785e8af143e1e3acaf66af7b5062825379211163c43fe7
controller/deployment.go|TestIoNetConnection|Unmarshal|0aff32e09a85a67d1ffb26f03744db2a6196b682563fb9bca36bc67e6bc15cb9
controller/discord.go|getDiscordUserInfoByCode|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
controller/discord.go|getDiscordUserInfoByCode|NewDecoder|4d0c26e8fa58bdb0c5f537b0ace454c979f3c8f0a35ea2e5e74fda46f9ddc9a9
controller/github.go|getGitHubUserInfoByCode|Marshal|143f0e7565c0ae9ec63514edc3df01ffd64656e84ebb437a776db18b41482840
controller/github.go|getGitHubUserInfoByCode|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
controller/github.go|getGitHubUserInfoByCode|NewDecoder|4d0c26e8fa58bdb0c5f537b0ace454c979f3c8f0a35ea2e5e74fda46f9ddc9a9
controller/linuxdo.go|getLinuxdoUserInfoByCode|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
controller/linuxdo.go|getLinuxdoUserInfoByCode|NewDecoder|4d0c26e8fa58bdb0c5f537b0ace454c979f3c8f0a35ea2e5e74fda46f9ddc9a9
controller/model_meta.go|enrichModels|Marshal|a2da6b346ff93776c463c1afd5a6ad7a4e117499a61427d2b1bc5a014827e24a
controller/model_meta.go|enrichModels|Marshal|a2da6b346ff93776c463c1afd5a6ad7a4e117499a61427d2b1bc5a014827e24a
controller/model_sync.go|fetchJSON|Unmarshal|f56c52bcda72d3e86474db3392395083226b9fec13223b5f4489771613b9902b
controller/model_sync.go|fetchJSON|Unmarshal|70c70a25f0283e8065bcf5d5bf6f50a1e9ee37a31fc81cd6f300d16f2abc11a5
controller/model_sync.go|fetchJSON|Unmarshal|f56c52bcda72d3e86474db3392395083226b9fec13223b5f4489771613b9902b
controller/model_sync.go|fetchJSON|Unmarshal|70c70a25f0283e8065bcf5d5bf6f50a1e9ee37a31fc81cd6f300d16f2abc11a5
controller/oidc.go|getOidcUserInfoByCode|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
controller/oidc.go|getOidcUserInfoByCode|NewDecoder|4d0c26e8fa58bdb0c5f537b0ace454c979f3c8f0a35ea2e5e74fda46f9ddc9a9
controller/tiered_billing_test.go|performTieredBillingUpdate|Marshal|2af017bb4f8b2b336f7069e3a6f219c0fb04cddbcb36aea984cee19b0af05e40
controller/tiered_billing_test.go|TestUpdateTieredBillingConfigAtomicallyUpdatesModeAndExpr|Unmarshal|80c32abf8b55ed520ba61e08871b1a3bcf25aa90146d3aacb07ff427b8fcb308
controller/tiered_billing_test.go|TestUpdateTieredBillingConfigRejectsInvalidExpression|Unmarshal|80c32abf8b55ed520ba61e08871b1a3bcf25aa90146d3aacb07ff427b8fcb308
controller/uptime_kuma.go|getAndDecode|NewDecoder|4e62c918bd14f5107549183c31d628b8b7c5c0f6d37c3b60ee14c04233f62047
controller/wechat.go|getWeChatIdByCode|NewDecoder|032c2fadb2b3bd14e88241bb5e9c7e1103ba0b6141f0525f0a9674892e6c8d59
dto/claude.go|*ClaudeRequest.GetEfforts|Unmarshal|3525f5b3c4bd5cbad903f267e36a9250edb08eb82f5ea217b5c72de9f368a9a3
middleware/jimeng_adapter.go|JimengRequestConvert|Marshal|418a4a72b6b9c61eb7c62b58bb0f4bb1e23e251bda4f5a8f3514d66ebfd8d962
model/passkey.go|*PasskeyCredential.TransportList|Unmarshal|8174884feacc1fdfef084adb2900b1a97565b6c6c5f072b2d390e1c1dbadaa7f
model/passkey.go|*PasskeyCredential.SetTransports|Marshal|891aca816b90a7b0706fdd24581e477bee4335c8f916733130b54141eb6448c7
model/prefill_group.go|*JSONValue.Scan|Marshal|be383ea6cfaaf292483613ff481847bcf18cbddf173a0870a25e345b29d9f5eb
oauth/discord.go|*DiscordProvider.ExchangeToken|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
oauth/discord.go|*DiscordProvider.GetUserInfo|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
oauth/github.go|*GitHubProvider.ExchangeToken|Marshal|143f0e7565c0ae9ec63514edc3df01ffd64656e84ebb437a776db18b41482840
oauth/github.go|*GitHubProvider.ExchangeToken|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
oauth/github.go|*GitHubProvider.GetUserInfo|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
oauth/linuxdo.go|*LinuxDOProvider.ExchangeToken|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
oauth/linuxdo.go|*LinuxDOProvider.GetUserInfo|NewDecoder|64ee82d1a886a8c84d5771d6a7733571f892d8b735ff5b5ffa0167dc5f1ecb39
relay/channel/aws/dto.go|formatRequest|Marshal|0811da817c96b432dc92949bfc702d029e13adb47ab075abd27b6b82eae30478
relay/channel/claude/relay-claude.go|ResponseClaude2OpenAI|Marshal|9f23cc0eecff96adc0410bf3360508a44815f9bc18567a76278a14aaa6e46e0a
relay/channel/claude/relay-claude.go|HandleClaudeResponseData|Marshal|0e01a2a781af1a773195f919e8bc2c53345aed7dd99776d98cfe550576ea831a
relay/channel/cloudflare/relay_cloudflare.go|cfStreamHandler|Unmarshal|5a9c4fba44410fd4d5ee918ce49cdd49a713d756c491be89ccc2d9f3de44cdc5
relay/channel/cloudflare/relay_cloudflare.go|cfHandler|Unmarshal|6cdcb804136134bca298d812448f98d0bd614a3f817abe33a9bd3a1f5d30e07f
relay/channel/cloudflare/relay_cloudflare.go|cfHandler|Marshal|168eb97ce25654c31be502868a95131c40bf62f506fa17dca8eec1cd5263b090
relay/channel/cloudflare/relay_cloudflare.go|cfSTTHandler|Unmarshal|113b887f4b535a35fabbb09c58da6e91e72216445b257aaa5a60ea85f9a78b92
relay/channel/cloudflare/relay_cloudflare.go|cfSTTHandler|Marshal|49e41038fab83f81a36dc42be0e11844258b971509e090697a039d969b4c7e83
relay/channel/cohere/relay-cohere.go|cohereStreamHandler|Unmarshal|540c656aaf93bfaec57b6796515084756197ba3ed24d226058623269579f2874
relay/channel/cohere/relay-cohere.go|cohereStreamHandler|Marshal|e835663a563231e050ffc86f98edc0d4ea411076890252d835d77715185f6317
relay/channel/cohere/relay-cohere.go|cohereHandler|Unmarshal|60f8972547f5094bf2b8ef4f8aee5478f66cbaec849d110427da197c8f20a177
relay/channel/cohere/relay-cohere.go|cohereHandler|Marshal|e835663a563231e050ffc86f98edc0d4ea411076890252d835d77715185f6317
relay/channel/cohere/relay-cohere.go|cohereRerankHandler|Unmarshal|60f8972547f5094bf2b8ef4f8aee5478f66cbaec849d110427da197c8f20a177
relay/channel/cohere/relay-cohere.go|cohereRerankHandler|Marshal|7175c817a0dede230ae6b179388d06512cf9cc2c1d598aafa1b52cf3a52c7ad7
relay/channel/dify/relay-dify.go|uploadDifyFile|NewDecoder|4e62c918bd14f5107549183c31d628b8b7c5c0f6d37c3b60ee14c04233f62047
relay/channel/dify/relay-dify.go|requestOpenAI2Dify|Unmarshal|301e4e0d469fcbcb1f5fcfaf6db9a98aac7c3efbc95148406f22c7e1bb7f79eb
relay/channel/dify/relay-dify.go|difyStreamHandler|Unmarshal|c7b78d67e7541bc2dcbaca687f311c4a80640b86227ff7660fa1593679d9ccda
relay/channel/dify/relay-dify.go|difyHandler|Unmarshal|74eabd2b0f9c71436c65b6370852f7a52cd3de4d3daaf34cbd96788143caf3f2
relay/channel/dify/relay-dify.go|difyHandler|Marshal|92981973316a59184c1f9d4fdca6fe3a1045b5da6a30f89abb52b516f1849571
relay/channel/gemini/relay-gemini.go|CovertOpenAI2Gemini|Unmarshal|888638b8edf838d7d54d4204b0762fab73de4b5893d62e9c4bba1be834ab4f14
relay/channel/gemini/relay-gemini.go|CovertOpenAI2Gemini|Unmarshal|d36999d70bcadc81cf18f4c24926ab976474c0407d9c38b7568b8cd9d63dc27b
relay/channel/gemini/relay-gemini.go|CovertOpenAI2Gemini|Unmarshal|6f5d5649013dbe4f30184bde998de425878f2d44d5d11a01ab149c2811489941
relay/channel/gemini/relay-gemini.go|getResponseToolCall|Marshal|57fb75a5fe56afe87c997a44c00fa501361cb8e0561a701729fc508f2dfb1e9d
relay/channel/gemini/relay-gemini.go|GeminiImageHandler|Marshal|8cfeefa9b56a54756bb4a42b2cafed0f6ec4bfc6ec197b12aa89ab48a8aec4fd
relay/channel/jimeng/adaptor.go|*Adaptor.ConvertImageRequest|Unmarshal|c19a3d1079980c3459dd9bd7790a661904a648316f23713afd386391a4a1f930
relay/channel/jimeng/image.go|jimengImageHandler|Unmarshal|5e1d9c06ea5431ed897952c736c326d7c43f7eaa48e928805576f0ad5069bc21
relay/channel/jimeng/image.go|jimengImageHandler|Marshal|92981973316a59184c1f9d4fdca6fe3a1045b5da6a30f89abb52b516f1849571
relay/channel/jimeng/sign.go|SetPayloadHash|Marshal|556c76f2141b112391c2965ec7de57f4ac5225bcabc9df6af104fb7f1bac4a05
relay/channel/minimax/adaptor.go|*Adaptor.ConvertAudioRequest|Unmarshal|8b12a952a30d62112e9f333ce71e5113d130edeb7a32cd6295f9da04eadddab9
relay/channel/minimax/adaptor.go|*Adaptor.ConvertAudioRequest|Marshal|72d25474abe9f1d6088ac2f4b0c0d941244b899f1e21acdbe100a5287861e319
relay/channel/minimax/adaptor_test.go|TestConvertImageRequest|Marshal|f9f22be55e3cc256321948a6831e6d8f59f28dca147ab5d96d122bb05bb77b67
relay/channel/minimax/adaptor_test.go|TestConvertImageRequest|Unmarshal|fbd89e33afec938e40c3b365fc286bb279c1440145c68098c54ab715bd85b119
relay/channel/mokaai/relay-mokaai.go|mokaEmbeddingHandler|Unmarshal|6c88b37cda6b69cb880852f57074d792626b82bd771acbab3a46754f80631684
relay/channel/openai/adaptor.go|*Adaptor.ConvertOpenAIRequest|Unmarshal|44a1603ee0e1a8e1df85d054b5b756d4357abc38dbe367a0fb9192cab91c1e25
relay/channel/palm/relay-palm.go|palmStreamHandler|Unmarshal|9e6a91a6205bc2652fded36139425ad52ae7c49ef94ccd023817fca36089ced0
relay/channel/palm/relay-palm.go|palmStreamHandler|Marshal|92981973316a59184c1f9d4fdca6fe3a1045b5da6a30f89abb52b516f1849571
relay/channel/palm/relay-palm.go|palmHandler|Unmarshal|9e6a91a6205bc2652fded36139425ad52ae7c49ef94ccd023817fca36089ced0
relay/channel/replicate/adaptor.go|*Adaptor.ConvertImageRequest|Unmarshal|8657e632acc4f987e7c3c0aed04a081ab0b5762843f4e8a91305c1640357a714
relay/channel/tencent/relay-tencent.go|tencentHandler|Unmarshal|c5c85399232311a43e2b04dcf6ab971f636d174fd3fd7a9c10168b9f3f4a9259
relay/channel/tencent/relay-tencent.go|getTencentSign|Marshal|556c76f2141b112391c2965ec7de57f4ac5225bcabc9df6af104fb7f1bac4a05
relay/channel/volcengine/adaptor.go|*Adaptor.ConvertAudioRequest|Unmarshal|21d62956ab82cf6356638ba2e98ab21e8970ef3fec36d51a2362ea78b972e685
relay/channel/volcengine/adaptor.go|*Adaptor.ConvertAudioRequest|Marshal|6df4bc98beb165214f3179900a7dc69f4c1aaa89816f2699cf59ee2bd83ef3d2
relay/channel/volcengine/tts.go|handleTTSResponse|Unmarshal|1c19ee75effdb9440195e572a78088232532eacc7938c6bf68a28030b8265b5f
relay/channel/volcengine/tts.go|handleTTSWebSocketResponse|Marshal|6df4bc98beb165214f3179900a7dc69f4c1aaa89816f2699cf59ee2bd83ef3d2
relay/common/override_test.go|TestApplyParamOverrideDelete|Unmarshal|692246112d039d019f6ed42cbf2362d484af719d1b9abec92686330698a56345
relay/common/override_test.go|TestApplyParamOverrideSetWildcardPath|Unmarshal|692246112d039d019f6ed42cbf2362d484af719d1b9abec92686330698a56345
relay/common/override_test.go|TestApplyParamOverrideTrimSpaceWildcardPath|Unmarshal|692246112d039d019f6ed42cbf2362d484af719d1b9abec92686330698a56345
relay/common/override_test.go|TestApplyParamOverrideSetWildcardKeepOrigin|Unmarshal|692246112d039d019f6ed42cbf2362d484af719d1b9abec92686330698a56345
relay/common/override_test.go|TestApplyParamOverrideTrimSpaceMultiWildcardPath|Unmarshal|692246112d039d019f6ed42cbf2362d484af719d1b9abec92686330698a56345
relay/common/override_test.go|assertJSONEqual|Unmarshal|1b6e8a2882cd33079a79d74aeb366ef371ac02cbffa6d90f82ab6027c4e989bd
relay/common/override_test.go|assertJSONEqual|Unmarshal|444da0b2c667f90adf285fc754ed502890312ce4837a5ec13c0ffbfb5aaa77bb
relay/helper/model_mapped.go|ModelMappedHelper|Unmarshal|397c955a41ac41e35fdf6469fe18566e192cf9a0762e2594fba342148e25e7b7
service/codex_oauth.go|decodeJWTClaims|Unmarshal|7ca24118dbcd41c0feb7b0767369b64fadf9b9a4b1bcb1e62d1ec99b54f487d0
service/passkey/session.go|SaveSessionData|Marshal|5b9b772fb88d846779cb56c7c4ca8852b09c2b90d1e5ae47e5e29386bd45a06e
service/passkey/session.go|PopSessionData|Unmarshal|337d2d0489c6f4c2daf3edbb46ea8101d8b9b64a46fce59768dbc2aaacf048f6
service/passkey/session.go|PopSessionData|Unmarshal|f2cd8d698a8b3baee9426fd333d1a8ef6eae1c2f3c53939906d9181818b00c76
service/user_notify.go|sendGotifyNotify|Marshal|2af017bb4f8b2b336f7069e3a6f219c0fb04cddbcb36aea984cee19b0af05e40
setting/chat.go|UpdateChatsByJsonString|Unmarshal|9b652f37646cc5b0c6883ad42cfa81aa57bf3ae9ed3f64bf59c0ca4e9024983e
setting/chat.go|Chats2JsonString|Marshal|6d15cc12f47b577c984fd31bbc9ca3e9bbb3702d28b79ac76d58e9aa32e79fdc
setting/rate_limit.go|ModelRequestRateLimitGroup2JSONString|Marshal|c72783cb7874ede43c0e880006216b4e7a02605d568d41c3360f5da2674d41dc
setting/rate_limit.go|UpdateModelRequestRateLimitGroupByJSONString|Unmarshal|7407dc7c4c3c97a8dba391911f2c435cfc531476870e4deef40b633f4cf49463
setting/rate_limit.go|CheckModelRequestRateLimitGroup|Unmarshal|e3bd25b5c46d357559a707ed7efbf4d2659495da494208dce96b6de39f6295d1
setting/user_usable_group.go|UserUsableGroups2JSONString|Marshal|5ab02528b3071cc8ce22854630a142a6ee42cc88ddd9be6965e56fcf6712f0c8
setting/user_usable_group.go|UpdateUserUsableGroupsByJSONString|Unmarshal|f8175ca3d196420af48d2ed1a311b8ee0f25c4d3686b0a83ed673693e4a4580b
