3314 lines
141 KiB
JSON
3314 lines
141 KiB
JSON
{
|
|
"upstreamCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"evidenceLevel": "independent whole-file snapshot; exact handler + extractor + response construction; static implementation evidence, not runtime fixtures",
|
|
"operations": [
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/device",
|
|
"handler": "get_device_info",
|
|
"routeEvidence": "backend/src/main.rs:506-506",
|
|
"handlerEvidence": "backend/src/handlers.rs:1076-1090",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1076-1090",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<DeviceInfoResponse>; exact handler backend/src/handlers.rs:1076-1090",
|
|
"sha256": "7b4d3ba9a85015e504518640ae05ad6014a98aff50166308b4cd348290cca639",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1076,
|
|
"endLine": 1090
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<DeviceInfoResponse>; exact handler backend/src/handlers.rs:1076-1090",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_device_info.bru",
|
|
"method": "GET",
|
|
"path": "/api/device",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/sim",
|
|
"handler": "get_sim_info",
|
|
"routeEvidence": "backend/src/main.rs:508-508",
|
|
"handlerEvidence": "backend/src/handlers.rs:1126-1145",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1126-1145",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<SimInfoResponse>; exact handler backend/src/handlers.rs:1126-1145",
|
|
"sha256": "db5280e4e6d37c435a5a0b727087e2ed0d2e09a14901566ff62c7a78fe5685c8",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1126,
|
|
"endLine": 1145
|
|
},
|
|
"extractorTokens": [
|
|
"State<(Arc<Connection>, Arc<Database>)>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<SimInfoResponse>; exact handler backend/src/handlers.rs:1126-1145",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_sim_info.bru",
|
|
"method": "GET",
|
|
"path": "/api/sim",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/sim/details/refresh",
|
|
"handler": "refresh_sim_details_handler",
|
|
"routeEvidence": "backend/src/main.rs:510-511",
|
|
"handlerEvidence": "backend/src/handlers.rs:1148-1164",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1148-1164",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1148-1164; field shape is implementation evidence only",
|
|
"sha256": "ab04a42ae36c34953d81c4ae7418ee489cf8b1b1604961dac9015b80e24677a2",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1148,
|
|
"endLine": 1164
|
|
},
|
|
"extractorTokens": [
|
|
"State<(Arc<Connection>, Arc<Database>)>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1148-1164; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/sim/cache",
|
|
"handler": "update_sim_cache_handler",
|
|
"routeEvidence": "backend/src/main.rs:514-515",
|
|
"handlerEvidence": "backend/src/handlers.rs:1167-1213",
|
|
"requestSummary": "body extractor UpdateSimCacheRequest fields [phone_number:Option<String>, sms_center:Option<String>] (models.rs:1036); exact handler backend/src/handlers.rs:1167-1213",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1167-1213",
|
|
"sha256": "b2b5f366ff8b133d4a8cbc7965a5ab50f1ee5a41b23a6c81019824d801a5798f",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1167,
|
|
"endLine": 1213
|
|
},
|
|
"extractorTokens": [
|
|
"Json<UpdateSimCacheRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1167-1213",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/network",
|
|
"handler": "get_network_info",
|
|
"routeEvidence": "backend/src/main.rs:519-520",
|
|
"handlerEvidence": "backend/src/handlers.rs:1218-1232",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1218-1232",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<NetworkInfoResponse>; exact handler backend/src/handlers.rs:1218-1232",
|
|
"sha256": "5d02208a69b790246dfc8d08647fd728517d3e1777acb3cf3dd83f8e589a9e2d",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1218,
|
|
"endLine": 1232
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<NetworkInfoResponse>; exact handler backend/src/handlers.rs:1218-1232",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_network_info.bru",
|
|
"method": "GET",
|
|
"path": "/api/network",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/cells",
|
|
"handler": "get_cells",
|
|
"routeEvidence": "backend/src/main.rs:522-522",
|
|
"handlerEvidence": "backend/src/handlers.rs:1235-1249",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1235-1249",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CellsResponse>; exact handler backend/src/handlers.rs:1235-1249",
|
|
"sha256": "2a0eb9db873a461af208a2784c9a07fff1a00fcb3666fcaaa8f67840783a8dde",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1235,
|
|
"endLine": 1249
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CellsResponse>; exact handler backend/src/handlers.rs:1235-1249",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_cells_info.bru",
|
|
"method": "GET",
|
|
"path": "/api/cells",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/cell-monitor/start",
|
|
"handler": "start_cell_monitor_handler",
|
|
"routeEvidence": "backend/src/main.rs:524-525",
|
|
"handlerEvidence": "backend/src/handlers.rs:1252-1282",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1252-1282",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1252-1282",
|
|
"sha256": "c70d5916a800de22a643c93e2a9ddb7a6a4eeb9e8ad83fee1fbd3ee7660b78fe",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1252,
|
|
"endLine": 1282
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1252-1282",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/cell-monitor/stop",
|
|
"handler": "stop_cell_monitor_handler",
|
|
"routeEvidence": "backend/src/main.rs:528-529",
|
|
"handlerEvidence": "backend/src/handlers.rs:1285-1312",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1285-1312",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1285-1312",
|
|
"sha256": "81303fb59efb78b8ab8901a3a1f693305ff13fc3048d51138c6a9e054ee73c66",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1285,
|
|
"endLine": 1312
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1285-1312",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/radio-mode",
|
|
"handler": "get_radio_mode_handler",
|
|
"routeEvidence": "backend/src/main.rs:532-533",
|
|
"handlerEvidence": "backend/src/handlers.rs:1315-1329",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1315-1329",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<RadioModeResponse>; exact handler backend/src/handlers.rs:1315-1329",
|
|
"sha256": "caba610280c2850fd8a840114af3c9b3b69c4ba0f9a724a23cdb92c78aa222ea",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1315,
|
|
"endLine": 1329
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<RadioModeResponse>; exact handler backend/src/handlers.rs:1315-1329",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_radio_mode.bru",
|
|
"method": "GET",
|
|
"path": "/api/radio-mode",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/radio-mode",
|
|
"handler": "set_radio_mode_handler",
|
|
"routeEvidence": "backend/src/main.rs:532-534",
|
|
"handlerEvidence": "backend/src/handlers.rs:1332-1352",
|
|
"requestSummary": "body extractor RadioModeRequest fields [mode:RadioMode] (models.rs:351); exact handler backend/src/handlers.rs:1332-1352",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1332-1352",
|
|
"sha256": "c41c6134fe1f28b0f018724a009a4df537556f1226be4e27924d7daa10ce3de2",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1332,
|
|
"endLine": 1352
|
|
},
|
|
"extractorTokens": [
|
|
"Json<RadioModeRequest>",
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1332-1352",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_radio_mode_nr.bru",
|
|
"method": "POST",
|
|
"path": "/api/radio-mode",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"mode"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_radio_mode_lte.bru",
|
|
"method": "POST",
|
|
"path": "/api/radio-mode",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"mode"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_radio_mode_auto.bru",
|
|
"method": "POST",
|
|
"path": "/api/radio-mode",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"mode"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/band-lock",
|
|
"handler": "get_band_lock_handler",
|
|
"routeEvidence": "backend/src/main.rs:538-539",
|
|
"handlerEvidence": "backend/src/handlers.rs:1355-1369",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1355-1369",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<BandLockStatus>; exact handler backend/src/handlers.rs:1355-1369",
|
|
"sha256": "6130c68b619423b3303d2fcf24fa6175c979c80c6bb2158460c2455d7b347f72",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1355,
|
|
"endLine": 1369
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<BandLockStatus>; exact handler backend/src/handlers.rs:1355-1369",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_band_lock.bru",
|
|
"method": "GET",
|
|
"path": "/api/band-lock",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/band-lock",
|
|
"handler": "set_band_lock_handler",
|
|
"routeEvidence": "backend/src/main.rs:538-540",
|
|
"handlerEvidence": "backend/src/handlers.rs:1372-1392",
|
|
"requestSummary": "body extractor BandLockRequest fields [lte_fdd_bands:Vec<u32>, lte_tdd_bands:Vec<u32>, nr_fdd_bands:Vec<u32>, nr_tdd_bands:Vec<u32>] (models.rs:377); exact handler backend/src/handlers.rs:1372-1392",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1372-1392",
|
|
"sha256": "04504f8b9b2d528e6e367bea397ef722f4f1eb3aa7363946718ea9871ac20277",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1372,
|
|
"endLine": 1392
|
|
},
|
|
"extractorTokens": [
|
|
"Json<BandLockRequest>",
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1372-1392",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_band_lock_nr_n78.bru",
|
|
"method": "POST",
|
|
"path": "/api/band-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"lte_fdd_bands",
|
|
"lte_tdd_bands",
|
|
"nr_fdd_bands",
|
|
"nr_tdd_bands"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_band_lock_lte_b1_b3.bru",
|
|
"method": "POST",
|
|
"path": "/api/band-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"lte_fdd_bands",
|
|
"lte_tdd_bands",
|
|
"nr_fdd_bands",
|
|
"nr_tdd_bands"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/unlock_all_bands.bru",
|
|
"method": "POST",
|
|
"path": "/api/band-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"lte_fdd_bands",
|
|
"lte_tdd_bands",
|
|
"nr_fdd_bands",
|
|
"nr_tdd_bands"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_band_lock_lte_nr_mix.bru",
|
|
"method": "POST",
|
|
"path": "/api/band-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"lte_fdd_bands",
|
|
"lte_tdd_bands",
|
|
"nr_fdd_bands",
|
|
"nr_tdd_bands"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/network/interfaces",
|
|
"handler": "get_network_interfaces_info",
|
|
"routeEvidence": "backend/src/main.rs:544-545",
|
|
"handlerEvidence": "backend/src/handlers.rs:1619-1644",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1619-1644",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<NetworkInterfacesResponse>; exact handler backend/src/handlers.rs:1619-1644",
|
|
"sha256": "a1ac88c365ed70bfccbe2efdc5a2788d3d4bb74115c330fdc319c2eebc074521",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1619,
|
|
"endLine": 1644
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<NetworkInterfacesResponse>; exact handler backend/src/handlers.rs:1619-1644",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_network_interfaces.bru",
|
|
"method": "GET",
|
|
"path": "/api/network/interfaces",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/network/connection-addresses",
|
|
"handler": "get_network_connection_addresses",
|
|
"routeEvidence": "backend/src/main.rs:548-549",
|
|
"handlerEvidence": "backend/src/handlers.rs:1647-1666",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1647-1666",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<ConnectionAddressesResponse>; exact handler backend/src/handlers.rs:1647-1666",
|
|
"sha256": "a5f28ff95121c09750c5fc3f81192a0d15c0a794e16954d2a2783f357319b82f",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1647,
|
|
"endLine": 1666
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<ConnectionAddressesResponse>; exact handler backend/src/handlers.rs:1647-1666",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/device-network/ddns/config",
|
|
"handler": "get_device_ddns_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:552-553",
|
|
"handlerEvidence": "backend/src/handlers.rs:1669-1679",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1669-1679",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1669-1679; field shape is implementation evidence only",
|
|
"sha256": "4ec8e855d61695c9db55ba9afb333005f6bbb4e0bdae5e22988173431d139b1b",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1669,
|
|
"endLine": 1679
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1669-1679; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_device_ddns_config.bru",
|
|
"method": "GET",
|
|
"path": "/api/device-network/ddns/config",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/ddns/config",
|
|
"handler": "set_device_ddns_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:552-554",
|
|
"handlerEvidence": "backend/src/handlers.rs:1682-1721",
|
|
"requestSummary": "body extractor crate::config::DdnsConfig fields [enabled:bool, provider:String, access_id:String, access_secret:String, interval_seconds:u64, ttl:u32, ipv4:DdnsIpConfig, ipv6:DdnsIpConfig] (config.rs:634); exact handler backend/src/handlers.rs:1682-1721",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1682-1721",
|
|
"sha256": "10137722721a3ef9bea62ce99f7225143652521a634c928daa7c389978e69d00",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1682,
|
|
"endLine": 1721
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::config::DdnsConfig>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1682-1721",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_device_ddns_config.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/ddns/config",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"enabled",
|
|
"provider",
|
|
"access_id",
|
|
"access_secret",
|
|
"interval_seconds",
|
|
"ttl",
|
|
"ipv4",
|
|
"ipv6"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/device-network/ddns/status",
|
|
"handler": "get_device_ddns_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:558-559",
|
|
"handlerEvidence": "backend/src/handlers.rs:1750-1757",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1750-1757",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1750-1757; field shape is implementation evidence only",
|
|
"sha256": "02494bf7928a9a23ec81cab75333d7322683628a1c33ea067d7e4ad52177f8f6",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1750,
|
|
"endLine": 1757
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1750-1757; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_device_ddns_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/device-network/ddns/status",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/ddns/sync",
|
|
"handler": "sync_device_ddns_handler",
|
|
"routeEvidence": "backend/src/main.rs:562-563",
|
|
"handlerEvidence": "backend/src/handlers.rs:1760-1781",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1760-1781",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<DdnsSyncResponse>; exact handler backend/src/handlers.rs:1760-1781",
|
|
"sha256": "43cf9573e2b43aaf431562572de72d81f57bb586d78c69415441859ad0ab0528",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1760,
|
|
"endLine": 1781
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<DdnsSyncResponse>; exact handler backend/src/handlers.rs:1760-1781",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_ddns_sync.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/ddns/sync",
|
|
"bodyMode": "json",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/device-network/ddns/logs",
|
|
"handler": "get_device_ddns_logs_handler",
|
|
"routeEvidence": "backend/src/main.rs:566-567",
|
|
"handlerEvidence": "backend/src/handlers.rs:1784-1790",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1784-1790",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1784-1790; field shape is implementation evidence only",
|
|
"sha256": "ac80f3ada641ca13354b1b857a8eabfa67c15e30f706209bdce9331a7a903d73",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1784,
|
|
"endLine": 1790
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1784-1790; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_device_ddns_logs.bru",
|
|
"method": "GET",
|
|
"path": "/api/device-network/ddns/logs",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/ddns/logs/clear",
|
|
"handler": "clear_device_ddns_logs_handler",
|
|
"routeEvidence": "backend/src/main.rs:570-571",
|
|
"handlerEvidence": "backend/src/handlers.rs:1793-1802",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1793-1802",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1793-1802; field shape is implementation evidence only",
|
|
"sha256": "8ebb7d7cfe772a4e7fdee06da1ba69de668a68f0a0cb6077949e1f1ef7594173",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1793,
|
|
"endLine": 1802
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1793-1802; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_ddns_logs_clear.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/ddns/logs/clear",
|
|
"bodyMode": "json",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/device-network/wlan/status",
|
|
"handler": "get_device_wlan_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:574-575",
|
|
"handlerEvidence": "backend/src/handlers.rs:1805-1819",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1805-1819",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1805-1819",
|
|
"sha256": "66741c07471de1f7a414b9771d6ce841fdcaf04d48244ac8cd2e03ecb1612034",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1805,
|
|
"endLine": 1819
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1805-1819",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_device_wlan_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/device-network/wlan/status",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/enabled",
|
|
"handler": "set_device_wlan_enabled_handler",
|
|
"routeEvidence": "backend/src/main.rs:578-579",
|
|
"handlerEvidence": "backend/src/handlers.rs:1822-1841",
|
|
"requestSummary": "body extractor WlanEnabledRequest fields [enabled:bool] (models.rs:606); exact handler backend/src/handlers.rs:1822-1841",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1822-1841",
|
|
"sha256": "b6cc1238ca609208e8c2a6f757736617d2ca200e1b8a1725eda59694592582b7",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1822,
|
|
"endLine": 1841
|
|
},
|
|
"extractorTokens": [
|
|
"Json<WlanEnabledRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1822-1841",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_device_wlan_enabled.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/enabled",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"enabled"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/scan",
|
|
"handler": "scan_device_wlan_handler",
|
|
"routeEvidence": "backend/src/main.rs:582-583",
|
|
"handlerEvidence": "backend/src/handlers.rs:1844-1858",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1844-1858",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanScanResponse>; exact handler backend/src/handlers.rs:1844-1858",
|
|
"sha256": "de90691d7c57a4e9af311144f3573e0ce80b3cc7ee29cc65b71c94c28e7b2651",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1844,
|
|
"endLine": 1858
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanScanResponse>; exact handler backend/src/handlers.rs:1844-1858",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_wlan_scan.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/scan",
|
|
"bodyMode": "json",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/device-network/wlan/profiles",
|
|
"handler": "get_device_wlan_profiles_handler",
|
|
"routeEvidence": "backend/src/main.rs:586-587",
|
|
"handlerEvidence": "backend/src/handlers.rs:1861-1875",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1861-1875",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanProfilesResponse>; exact handler backend/src/handlers.rs:1861-1875",
|
|
"sha256": "caadf1fc1c436c6342722c2955f0588581d26d12d1fc3db107e47e18adac43f5",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1861,
|
|
"endLine": 1875
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanProfilesResponse>; exact handler backend/src/handlers.rs:1861-1875",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_device_wlan_profiles.bru",
|
|
"method": "GET",
|
|
"path": "/api/device-network/wlan/profiles",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/forget",
|
|
"handler": "forget_device_wlan_handler",
|
|
"routeEvidence": "backend/src/main.rs:590-591",
|
|
"handlerEvidence": "backend/src/handlers.rs:1878-1897",
|
|
"requestSummary": "body extractor WlanForgetRequest fields [uuid:String, connection_id:String] (models.rs:635); exact handler backend/src/handlers.rs:1878-1897",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanProfilesResponse>; exact handler backend/src/handlers.rs:1878-1897",
|
|
"sha256": "f5142f819f6da44230d61c9f5db90c8cb473de954faee08245a2f159d43c8a7e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1878,
|
|
"endLine": 1897
|
|
},
|
|
"extractorTokens": [
|
|
"Json<WlanForgetRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanProfilesResponse>; exact handler backend/src/handlers.rs:1878-1897",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_wlan_forget.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/forget",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"uuid",
|
|
"connection_id"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/connect",
|
|
"handler": "connect_device_wlan_handler",
|
|
"routeEvidence": "backend/src/main.rs:594-595",
|
|
"handlerEvidence": "backend/src/handlers.rs:1900-1955",
|
|
"requestSummary": "body extractor WlanConnectRequest fields [ssid:String, password:String, auto_join:bool] (models.rs:611); exact handler backend/src/handlers.rs:1900-1955",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1900-1955",
|
|
"sha256": "9c422666a3db49cdf0efd42873ca681ee158b4fb9183b6211c4f9522f0fe23b5",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1900,
|
|
"endLine": 1955
|
|
},
|
|
"extractorTokens": [
|
|
"Json<WlanConnectRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1900-1955",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_wlan_connect.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/connect",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"ssid",
|
|
"password",
|
|
"auto_join"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/disconnect",
|
|
"handler": "disconnect_device_wlan_handler",
|
|
"routeEvidence": "backend/src/main.rs:598-599",
|
|
"handlerEvidence": "backend/src/handlers.rs:1958-1991",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1958-1991",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1958-1991",
|
|
"sha256": "719a709dc8509a35a0e961f55359aa77d07b9e95908d8622e8b369a54ed62505",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1958,
|
|
"endLine": 1991
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1958-1991",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_wlan_disconnect.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/disconnect",
|
|
"bodyMode": "json",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/profile",
|
|
"handler": "save_device_wlan_profile_handler",
|
|
"routeEvidence": "backend/src/main.rs:602-603",
|
|
"handlerEvidence": "backend/src/handlers.rs:1994-2013",
|
|
"requestSummary": "body extractor WlanProfileRequest fields [connection_id:String, auto_join:Option<bool>, ipv4_mode:Option<String>, ipv4_address:Option<String>, ipv4_prefix:Option<u8>, ipv4_gateway:Option<String>] (models.rs:620); exact handler backend/src/handlers.rs:1994-2013",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1994-2013",
|
|
"sha256": "b3180f55af718c0404c190cc47c90be10727269ab9ddc7fee9239d24a6088bcd",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1994,
|
|
"endLine": 2013
|
|
},
|
|
"extractorTokens": [
|
|
"Json<WlanProfileRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1994-2013",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_device_wlan_profile.bru",
|
|
"method": "POST",
|
|
"path": "/api/device-network/wlan/profile",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"connection_id",
|
|
"auto_join",
|
|
"ipv4_mode"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/network/signal-strength",
|
|
"handler": "get_signal_strength_handler",
|
|
"routeEvidence": "backend/src/main.rs:606-607",
|
|
"handlerEvidence": "backend/src/handlers.rs:2016-2030",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2016-2030",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<SignalStrengthResponse>; exact handler backend/src/handlers.rs:2016-2030",
|
|
"sha256": "2c04c31da8b4160b8941a524b3016de75c75ae689a28d50f50a664fa5c4af828",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2016,
|
|
"endLine": 2030
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<SignalStrengthResponse>; exact handler backend/src/handlers.rs:2016-2030",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_signal_strength.bru",
|
|
"method": "GET",
|
|
"path": "/api/network/signal-strength",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/location/cell-info",
|
|
"handler": "get_cell_location_handler",
|
|
"routeEvidence": "backend/src/main.rs:610-611",
|
|
"handlerEvidence": "backend/src/handlers.rs:1395-1409",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1395-1409",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CellLocationResponse>; exact handler backend/src/handlers.rs:1395-1409",
|
|
"sha256": "fc748f05e03bf6843eed36f7a4dd6f785811d05e9dd8942fe2d92a4b63c62398",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1395,
|
|
"endLine": 1409
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CellLocationResponse>; exact handler backend/src/handlers.rs:1395-1409",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_cell_location_info.bru",
|
|
"method": "GET",
|
|
"path": "/api/location/cell-info",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/network/operators",
|
|
"handler": "get_network_operators",
|
|
"routeEvidence": "backend/src/main.rs:614-615",
|
|
"handlerEvidence": "backend/src/handlers.rs:1412-1426",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1412-1426",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<OperatorListResponse>; exact handler backend/src/handlers.rs:1412-1426",
|
|
"sha256": "d3b30db8a501b92aba2d3038e3642eb020412a2ac11e8286dc1f4860ef3c732b",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1412,
|
|
"endLine": 1426
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<OperatorListResponse>; exact handler backend/src/handlers.rs:1412-1426",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_operators.bru",
|
|
"method": "GET",
|
|
"path": "/api/network/operators",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/network/operators/scan",
|
|
"handler": "scan_network_operators",
|
|
"routeEvidence": "backend/src/main.rs:618-619",
|
|
"handlerEvidence": "backend/src/handlers.rs:1429-1443",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1429-1443",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<OperatorListResponse>; exact handler backend/src/handlers.rs:1429-1443",
|
|
"sha256": "4a8bfbd38a943df8dfa9ce69f3bb162874baf7f6f69507d35257c80aff5316e6",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1429,
|
|
"endLine": 1443
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<OperatorListResponse>; exact handler backend/src/handlers.rs:1429-1443",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/scan_operators.bru",
|
|
"method": "GET",
|
|
"path": "/api/network/operators/scan",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/network/register-manual",
|
|
"handler": "register_network_manual",
|
|
"routeEvidence": "backend/src/main.rs:622-623",
|
|
"handlerEvidence": "backend/src/handlers.rs:1446-1466",
|
|
"requestSummary": "body extractor ManualRegisterRequest fields [mccmnc:String] (models.rs:771); exact handler backend/src/handlers.rs:1446-1466",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1446-1466",
|
|
"sha256": "8b78cc782499ff836911c3bb5563c85ae53cc4bb05b418a01ff94f4e16916b4c",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1446,
|
|
"endLine": 1466
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ManualRegisterRequest>",
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1446-1466",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/register_operator_manual.bru",
|
|
"method": "POST",
|
|
"path": "/api/network/register-manual",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"mccmnc"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/network/register-auto",
|
|
"handler": "register_network_auto",
|
|
"routeEvidence": "backend/src/main.rs:626-627",
|
|
"handlerEvidence": "backend/src/handlers.rs:1469-1486",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1469-1486",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1469-1486",
|
|
"sha256": "431aabcc9852603b66f9a3234afb2e76f6e6cc3845ffb4827874aef16f3744d0",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1469,
|
|
"endLine": 1486
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1469-1486",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/register_operator_auto.bru",
|
|
"method": "POST",
|
|
"path": "/api/network/register-auto",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/apn",
|
|
"handler": "get_apn_list_handler",
|
|
"routeEvidence": "backend/src/main.rs:630-631",
|
|
"handlerEvidence": "backend/src/handlers.rs:1489-1504",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1489-1504",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<ApnListResponse>; exact handler backend/src/handlers.rs:1489-1504",
|
|
"sha256": "798953ca7e3857d0ea96f60b7882dafd3893dd751f8af07afea7707dc1145631",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1489,
|
|
"endLine": 1504
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<ApnListResponse>; exact handler backend/src/handlers.rs:1489-1504",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_apn_list.bru",
|
|
"method": "GET",
|
|
"path": "/api/apn",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/apn",
|
|
"handler": "set_apn_handler",
|
|
"routeEvidence": "backend/src/main.rs:630-632",
|
|
"handlerEvidence": "backend/src/handlers.rs:1507-1571",
|
|
"requestSummary": "body extractor SetApnRequest fields [context_path:String, apn:Option<String>, protocol:Option<String>, username:Option<String>, password:Option<String>, auth_method:Option<String>] (models.rs:795); exact handler backend/src/handlers.rs:1507-1571",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1507-1571",
|
|
"sha256": "6edced468c5f3bcb5181736b235805550d50c76ebf770b7632c6a7a38e65a8d0",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1507,
|
|
"endLine": 1571
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SetApnRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1507-1571",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_apn.bru",
|
|
"method": "POST",
|
|
"path": "/api/apn",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"context_path",
|
|
"apn",
|
|
"protocol",
|
|
"username",
|
|
"password",
|
|
"auth_method"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/cell-lock",
|
|
"handler": "get_cell_lock_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:636-637",
|
|
"handlerEvidence": "backend/src/handlers.rs:1574-1582",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1574-1582",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1574-1582; field shape is implementation evidence only",
|
|
"sha256": "fe4b4aaedc6e5ccf4d36d0a347b46999ae99290a41efaf0bedf7e37be992591e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1574,
|
|
"endLine": 1582
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1574-1582; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_cell_lock.bru",
|
|
"method": "GET",
|
|
"path": "/api/cell-lock",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/cell-lock",
|
|
"handler": "set_cell_lock_handler",
|
|
"routeEvidence": "backend/src/main.rs:636-638",
|
|
"handlerEvidence": "backend/src/handlers.rs:1585-1603",
|
|
"requestSummary": "body extractor CellLockRequest fields [rat:u8, enable:bool, lock_type:u8, pci:Option<u16>, arfcn:Option<u32>] (models.rs:405); exact handler backend/src/handlers.rs:1585-1603",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CellLockResult>; exact handler backend/src/handlers.rs:1585-1603",
|
|
"sha256": "29ff2739b7d0b58489c537db7c2fc000dabc4ba4251e27ba34e546cf9f9735ce",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1585,
|
|
"endLine": 1603
|
|
},
|
|
"extractorTokens": [
|
|
"Json<CellLockRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CellLockResult>; exact handler backend/src/handlers.rs:1585-1603",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_cell_lock_lte.bru",
|
|
"method": "POST",
|
|
"path": "/api/cell-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"rat",
|
|
"enable",
|
|
"arfcn",
|
|
"pci"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_cell_lock_nr.bru",
|
|
"method": "POST",
|
|
"path": "/api/cell-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"rat",
|
|
"enable",
|
|
"arfcn",
|
|
"pci"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/unlock_cell_nr.bru",
|
|
"method": "POST",
|
|
"path": "/api/cell-lock",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"rat",
|
|
"enable"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/cell-lock/unlock-all",
|
|
"handler": "unlock_all_cells_handler",
|
|
"routeEvidence": "backend/src/main.rs:642-643",
|
|
"handlerEvidence": "backend/src/handlers.rs:1606-1616",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1606-1616",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:1606-1616; field shape is implementation evidence only",
|
|
"sha256": "390162e5ce89c0952897c9a14054e33d502f52ad69a61b6becfe7c47f3c8be5d",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 1606,
|
|
"endLine": 1616
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1606-1616; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/unlock_all_cells.bru",
|
|
"method": "POST",
|
|
"path": "/api/cell-lock/unlock-all",
|
|
"bodyMode": "json",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/data",
|
|
"handler": "get_data_status",
|
|
"routeEvidence": "backend/src/main.rs:647-648",
|
|
"handlerEvidence": "backend/src/handlers.rs:2035-2062",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2035-2062",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<DataConnectionResponse>; exact handler backend/src/handlers.rs:2035-2062",
|
|
"sha256": "43f00a519bd67c3a500c709747a29286ccf37bdd96abd83541dcd21c3c476420",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2035,
|
|
"endLine": 2062
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<DataConnectionResponse>; exact handler backend/src/handlers.rs:2035-2062",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_data_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/data",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/data",
|
|
"handler": "set_data_status",
|
|
"routeEvidence": "backend/src/main.rs:647-649",
|
|
"handlerEvidence": "backend/src/handlers.rs:2065-2131",
|
|
"requestSummary": "body extractor DataConnectionRequest fields [active:bool] (models.rs:234); exact handler backend/src/handlers.rs:2065-2131",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<DataConnectionResponse>; exact handler backend/src/handlers.rs:2065-2131",
|
|
"sha256": "f1653cfe4442172ca80c97d1223ee4bdc6ed739d2f16e620a26285ab58b395b9",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2065,
|
|
"endLine": 2131
|
|
},
|
|
"extractorTokens": [
|
|
"Json<DataConnectionRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<DataConnectionResponse>; exact handler backend/src/handlers.rs:2065-2131",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_data_status_disable.bru",
|
|
"method": "POST",
|
|
"path": "/api/data",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"active"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_data_status_enable.bru",
|
|
"method": "POST",
|
|
"path": "/api/data",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"active"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/roaming",
|
|
"handler": "get_roaming_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:653-654",
|
|
"handlerEvidence": "backend/src/handlers.rs:2172-2193",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2172-2193",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<RoamingResponse>; exact handler backend/src/handlers.rs:2172-2193",
|
|
"sha256": "687ff0cdb729645af41a7b5d6828f1c348da3948163376adca3418e68a7937ae",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2172,
|
|
"endLine": 2193
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<RoamingResponse>; exact handler backend/src/handlers.rs:2172-2193",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_roaming_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/roaming",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/roaming",
|
|
"handler": "set_roaming_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:653-655",
|
|
"handlerEvidence": "backend/src/handlers.rs:2196-2247",
|
|
"requestSummary": "body extractor RoamingRequest fields [allowed:bool] (models.rs:244); exact handler backend/src/handlers.rs:2196-2247",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<RoamingResponse>; exact handler backend/src/handlers.rs:2196-2247",
|
|
"sha256": "b18b5c87eb24ccc952ff28bbee43f484c4e20c918ddd4f18d043a471ed3309c7",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2196,
|
|
"endLine": 2247
|
|
},
|
|
"extractorTokens": [
|
|
"Json<RoamingRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<RoamingResponse>; exact handler backend/src/handlers.rs:2196-2247",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_roaming_enable.bru",
|
|
"method": "POST",
|
|
"path": "/api/roaming",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"allowed"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_roaming_disable.bru",
|
|
"method": "POST",
|
|
"path": "/api/roaming",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"allowed"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/airplane-mode",
|
|
"handler": "get_airplane_mode_handler",
|
|
"routeEvidence": "backend/src/main.rs:659-660",
|
|
"handlerEvidence": "backend/src/handlers.rs:2315-2329",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2315-2329",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<AirplaneModeResponse>; exact handler backend/src/handlers.rs:2315-2329",
|
|
"sha256": "243c2a63fd99d45cf4729005221137e0b024f72256dbe3ea3ef83bb75bdde620",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2315,
|
|
"endLine": 2329
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<AirplaneModeResponse>; exact handler backend/src/handlers.rs:2315-2329",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_airplane_mode.bru",
|
|
"method": "GET",
|
|
"path": "/api/airplane-mode",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/airplane-mode",
|
|
"handler": "set_airplane_mode_handler",
|
|
"routeEvidence": "backend/src/main.rs:659-661",
|
|
"handlerEvidence": "backend/src/handlers.rs:2250-2312",
|
|
"requestSummary": "body extractor AirplaneModeRequest fields [enabled:bool] (models.rs:255); exact handler backend/src/handlers.rs:2250-2312",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<AirplaneModeResponse>; exact handler backend/src/handlers.rs:2250-2312",
|
|
"sha256": "5efb8a55c495ea0be28c8845d4fa3dcecdac3e3d770aaa3ae23140da46f8492a",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2250,
|
|
"endLine": 2312
|
|
},
|
|
"extractorTokens": [
|
|
"Json<AirplaneModeRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<AirplaneModeResponse>; exact handler backend/src/handlers.rs:2250-2312",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_airplane_mode_disable.bru",
|
|
"method": "POST",
|
|
"path": "/api/airplane-mode",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"enabled"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/set_airplane_mode_enable.bru",
|
|
"method": "POST",
|
|
"path": "/api/airplane-mode",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"enabled"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/baseband/restart",
|
|
"handler": "restart_baseband_handler",
|
|
"routeEvidence": "backend/src/main.rs:665-666",
|
|
"handlerEvidence": "backend/src/handlers.rs:2133-2159",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2133-2159",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<BasebandRestartResponse>; exact handler backend/src/handlers.rs:2133-2159",
|
|
"sha256": "ef18782a4b21d5b4ba5c75334f7fb503c697239a06372235139f3844e629f6fc",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2133,
|
|
"endLine": 2159
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<BasebandRestartResponse>; exact handler backend/src/handlers.rs:2133-2159",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/baseband/restart/status",
|
|
"handler": "get_baseband_restart_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:669-670",
|
|
"handlerEvidence": "backend/src/handlers.rs:2161-2169",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2161-2169",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:2161-2169; field shape is implementation evidence only",
|
|
"sha256": "736cc766f31d5d714dc45f720bc682f377ded3075b4886ec0cb5eb82b2e65cf5",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2161,
|
|
"endLine": 2169
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:2161-2169; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/work-mode",
|
|
"handler": "get_work_mode_handler",
|
|
"routeEvidence": "backend/src/main.rs:674-675",
|
|
"handlerEvidence": "backend/src/handlers.rs:352-365",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:352-365",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:352-365; field shape is implementation evidence only",
|
|
"sha256": "f2d3dca3f43326f8d0b8da91e01dc98483284a34e2d81ec3602e9fa8e1547ffd",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 352,
|
|
"endLine": 365
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:352-365; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/work-mode",
|
|
"handler": "set_work_mode_handler",
|
|
"routeEvidence": "backend/src/main.rs:674-676",
|
|
"handlerEvidence": "backend/src/handlers.rs:368-405",
|
|
"requestSummary": "body extractor WorkModeRequest fields [mode:WorkMode, confirm:bool] (models.rs:57); exact handler backend/src/handlers.rs:368-405",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<WorkModeResponse>; exact handler backend/src/handlers.rs:368-405",
|
|
"sha256": "cf17a54e0df74a9d41ddc7d847f7339f4fe2392f4c6c04041bf3cad519931c3c",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 368,
|
|
"endLine": 405
|
|
},
|
|
"extractorTokens": [
|
|
"Json<WorkModeRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<WorkModeResponse>; exact handler backend/src/handlers.rs:368-405",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/esim/config",
|
|
"handler": "get_esim_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:680-681",
|
|
"handlerEvidence": "backend/src/handlers.rs:456-462",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:456-462",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:456-462; field shape is implementation evidence only",
|
|
"sha256": "1be6b526e1a78451fb771cd0ca2ab2013a934d75847157bbf41bd9e2ab359221",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 456,
|
|
"endLine": 462
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:456-462; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/esim/config",
|
|
"handler": "set_esim_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:680-682",
|
|
"handlerEvidence": "backend/src/handlers.rs:465-482",
|
|
"requestSummary": "body extractor crate::config::EsimConfig fields [lpac_path:String, custom_memory_total_kb:Option<u32>] (config.rs:1660); exact handler backend/src/handlers.rs:465-482",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:465-482; field shape is implementation evidence only",
|
|
"sha256": "b497f06687977d9fc9eace182b20a5feb3562b3f6a18583e3e62918cd4e85e79",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 465,
|
|
"endLine": 482
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::config::EsimConfig>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:465-482; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/esim/lpac/status",
|
|
"handler": "get_esim_lpac_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:686-687",
|
|
"handlerEvidence": "backend/src/handlers.rs:408-416",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:408-416",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:408-416; field shape is implementation evidence only",
|
|
"sha256": "a4d5143d1f83089b6f29eda71d7dfc499b47d7260492f453eba31f87a64a8241",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 408,
|
|
"endLine": 416
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:408-416; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/esim/lpac/repair",
|
|
"handler": "repair_esim_lpac_handler",
|
|
"routeEvidence": "backend/src/main.rs:690-691",
|
|
"handlerEvidence": "backend/src/handlers.rs:419-453",
|
|
"requestSummary": "body extractor EsimLpacRepairRequest fields [proxy_prefix:Option<String>, asset_url:Option<String>] (models.rs:153); exact handler backend/src/handlers.rs:419-453",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:419-453; field shape is implementation evidence only",
|
|
"sha256": "4d88af6126732e94f424825cd5a3715060973d5aab707f8b9ea9539225199019",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 419,
|
|
"endLine": 453
|
|
},
|
|
"extractorTokens": [
|
|
"Json<EsimLpacRepairRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:419-453; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/esim/euicc",
|
|
"handler": "get_esim_euicc_handler",
|
|
"routeEvidence": "backend/src/main.rs:694-695",
|
|
"handlerEvidence": "backend/src/handlers.rs:485-521",
|
|
"requestSummary": "query extractor std::collections::HashMap<String, String>; exact exact handler backend/src/handlers.rs:485-521",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:485-521; field shape is implementation evidence only",
|
|
"sha256": "7bb950b7fe21268d45b57dc7f422cd39b7e542eb76dc6c9a739a83c4f347556e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 485,
|
|
"endLine": 521
|
|
},
|
|
"extractorTokens": [
|
|
"Query<std::collections::HashMap<String, String>>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:485-521; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/esim/profiles",
|
|
"handler": "get_esim_profiles_handler",
|
|
"routeEvidence": "backend/src/main.rs:698-699",
|
|
"handlerEvidence": "backend/src/handlers.rs:524-598",
|
|
"requestSummary": "query extractor std::collections::HashMap<String, String>; exact exact handler backend/src/handlers.rs:524-598",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<EsimProfilesResponse>; exact handler backend/src/handlers.rs:524-598",
|
|
"sha256": "07f60eddaa9d20ff8239c0083b15207aec94530c2e1edf998dc709e39b125062",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 524,
|
|
"endLine": 598
|
|
},
|
|
"extractorTokens": [
|
|
"Query<std::collections::HashMap<String, String>>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<EsimProfilesResponse>; exact handler backend/src/handlers.rs:524-598",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/esim/profiles",
|
|
"handler": "download_esim_profile_handler",
|
|
"routeEvidence": "backend/src/main.rs:698-700",
|
|
"handlerEvidence": "backend/src/handlers.rs:803-1071",
|
|
"requestSummary": "body extractor EsimDownloadRequest fields [smdp:String, matching_id:String, confirmation_code:Option<String>, imei:Option<String>] (models.rs:174); exact handler backend/src/handlers.rs:803-1071",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<EsimCommandResponse>; exact handler backend/src/handlers.rs:803-1071",
|
|
"sha256": "fe41273a15be55b3864e2d8f4dfc65d27686e5cafdc20d972603a5800b7a7043",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 803,
|
|
"endLine": 1071
|
|
},
|
|
"extractorTokens": [
|
|
"Json<EsimDownloadRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<EsimCommandResponse>; exact handler backend/src/handlers.rs:803-1071",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/esim/profiles/{iccid}/enable",
|
|
"handler": "enable_esim_profile_handler",
|
|
"routeEvidence": "backend/src/main.rs:704-705",
|
|
"handlerEvidence": "backend/src/handlers.rs:601-726",
|
|
"requestSummary": "path extractor String; exact handler backend/src/handlers.rs:601-726",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:601-726; field shape is implementation evidence only",
|
|
"sha256": "d54705546ca3bf2afafe9638d2c33ed198255747e19092a1dd6e1697e691ec2d",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 601,
|
|
"endLine": 726
|
|
},
|
|
"extractorTokens": [
|
|
"Path<String>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:601-726; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/esim/profiles/{iccid}/rename",
|
|
"handler": "rename_esim_profile_handler",
|
|
"routeEvidence": "backend/src/main.rs:708-709",
|
|
"handlerEvidence": "backend/src/handlers.rs:729-750",
|
|
"requestSummary": "body extractor EsimRenameRequest fields [name:String] (models.rs:169); path extractor String; exact handler backend/src/handlers.rs:729-750",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<EsimCommandResponse>; exact handler backend/src/handlers.rs:729-750",
|
|
"sha256": "0d5cb68158e1e6c2f656a687eb43be6ad936a8d920e0a18262c20195ea08cb65",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 729,
|
|
"endLine": 750
|
|
},
|
|
"extractorTokens": [
|
|
"Json<EsimRenameRequest>",
|
|
"Path<String>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<EsimCommandResponse>; exact handler backend/src/handlers.rs:729-750",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"path": "/api/esim/profiles/{iccid}",
|
|
"handler": "delete_esim_profile_handler",
|
|
"routeEvidence": "backend/src/main.rs:712-713",
|
|
"handlerEvidence": "backend/src/handlers.rs:753-780",
|
|
"requestSummary": "path extractor String; exact handler backend/src/handlers.rs:753-780",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:753-780; field shape is implementation evidence only",
|
|
"sha256": "8ad25b4826f75d27b2e39e8dee2c2362f47f2c9279ff1bd878ec57e2aa18aaf1",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 753,
|
|
"endLine": 780
|
|
},
|
|
"extractorTokens": [
|
|
"Path<String>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:753-780; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/calls",
|
|
"handler": "get_calls_handler",
|
|
"routeEvidence": "backend/src/main.rs:717-718",
|
|
"handlerEvidence": "backend/src/handlers.rs:2634-2655",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2634-2655",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CallListResponse>; exact handler backend/src/handlers.rs:2634-2655",
|
|
"sha256": "21e77021b749876bcd614e999f860c7e6826fc9744733cae9cbc65744b839da1",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2634,
|
|
"endLine": 2655
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CallListResponse>; exact handler backend/src/handlers.rs:2634-2655",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_calls.bru",
|
|
"method": "GET",
|
|
"path": "/api/calls",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/dial",
|
|
"handler": "dial_call_handler",
|
|
"routeEvidence": "backend/src/main.rs:721-722",
|
|
"handlerEvidence": "backend/src/handlers.rs:2657-2689",
|
|
"requestSummary": "body extractor MakeCallRequest fields [phone_number:String] (models.rs:810); exact handler backend/src/handlers.rs:2657-2689",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2657-2689",
|
|
"sha256": "c440bb90bb4373b32a57c6c2d40ebbcb8017853f99b0338c444eaa2f19e00d90",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2657,
|
|
"endLine": 2689
|
|
},
|
|
"extractorTokens": [
|
|
"Json<MakeCallRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2657-2689",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_call_dial.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/dial",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"phone_number"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/hangup",
|
|
"handler": "hangup_call_handler",
|
|
"routeEvidence": "backend/src/main.rs:725-726",
|
|
"handlerEvidence": "backend/src/handlers.rs:2691-2725",
|
|
"requestSummary": "body extractor HangupCallRequest fields [path:String] (models.rs:830); exact handler backend/src/handlers.rs:2691-2725",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2691-2725",
|
|
"sha256": "cffdc6b2f949af4d1ad38a29693f8c610824bfc2f950540d43399481aa3bb992",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2691,
|
|
"endLine": 2725
|
|
},
|
|
"extractorTokens": [
|
|
"Json<HangupCallRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2691-2725",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_call_hangup.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/hangup",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"path"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/hangup-all",
|
|
"handler": "hangup_all_calls_handler",
|
|
"routeEvidence": "backend/src/main.rs:729-730",
|
|
"handlerEvidence": "backend/src/handlers.rs:2727-2760",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2727-2760",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2727-2760",
|
|
"sha256": "3af8fab7bb4c04370a679b8dc28c435c60c15bba7f6b68fdccbd06e17698e5b5",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2727,
|
|
"endLine": 2760
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2727-2760",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_call_hangup_all.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/hangup-all",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/answer",
|
|
"handler": "answer_call_handler",
|
|
"routeEvidence": "backend/src/main.rs:733-734",
|
|
"handlerEvidence": "backend/src/handlers.rs:2762-2789",
|
|
"requestSummary": "body extractor HangupCallRequest fields [path:String] (models.rs:830); exact handler backend/src/handlers.rs:2762-2789",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2762-2789",
|
|
"sha256": "cfcda6600d9ba27cb94599a4b0cac37ba4c64a6fb1c85806201e17ff7999c765",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2762,
|
|
"endLine": 2789
|
|
},
|
|
"extractorTokens": [
|
|
"Json<HangupCallRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2762-2789",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_call_answer.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/answer",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"path"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/call/volume",
|
|
"handler": "get_call_volume_handler",
|
|
"routeEvidence": "backend/src/main.rs:737-738",
|
|
"handlerEvidence": "backend/src/handlers.rs:2899-2906",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2899-2906",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CallVolumeResponse>; exact handler backend/src/handlers.rs:2899-2906",
|
|
"sha256": "4f96c358e70ba5b394df486073b9aa4568634b6f17204a1e1beb46eaa65b6113",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2899,
|
|
"endLine": 2906
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CallVolumeResponse>; exact handler backend/src/handlers.rs:2899-2906",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_call_volume.bru",
|
|
"method": "GET",
|
|
"path": "/api/call/volume",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/volume",
|
|
"handler": "set_call_volume_handler",
|
|
"routeEvidence": "backend/src/main.rs:737-739",
|
|
"handlerEvidence": "backend/src/handlers.rs:2908-2922",
|
|
"requestSummary": "body extractor SetCallVolumeRequest fields [speaker_volume:Option<u8>, microphone_volume:Option<u8>, muted:Option<bool>] (models.rs:856); exact handler backend/src/handlers.rs:2908-2922",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CallVolumeResponse>; exact handler backend/src/handlers.rs:2908-2922",
|
|
"sha256": "9f2e624358e53aaf0adb75e83962b587bd522906d56e597ae9893722505ab582",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2908,
|
|
"endLine": 2922
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SetCallVolumeRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CallVolumeResponse>; exact handler backend/src/handlers.rs:2908-2922",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_call_volume.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/volume",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"speaker_volume",
|
|
"microphone_volume",
|
|
"muted"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/call/forwarding",
|
|
"handler": "get_call_forwarding_handler",
|
|
"routeEvidence": "backend/src/main.rs:743-744",
|
|
"handlerEvidence": "backend/src/handlers.rs:2924-2931",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2924-2931",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CallForwardingResponse>; exact handler backend/src/handlers.rs:2924-2931",
|
|
"sha256": "f7916eb4c5c484e5df16a44890308b546788b4f281784dc754c6160047786712",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2924,
|
|
"endLine": 2931
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CallForwardingResponse>; exact handler backend/src/handlers.rs:2924-2931",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_call_forwarding.bru",
|
|
"method": "GET",
|
|
"path": "/api/call/forwarding",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/forwarding",
|
|
"handler": "set_call_forwarding_handler",
|
|
"routeEvidence": "backend/src/main.rs:743-745",
|
|
"handlerEvidence": "backend/src/handlers.rs:2933-2943",
|
|
"requestSummary": "body extractor SetCallForwardingRequest fields [forward_type:String, number:String, timeout:Option<u16>] (models.rs:891); exact handler backend/src/handlers.rs:2933-2943",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CallForwardingResponse>; exact handler backend/src/handlers.rs:2933-2943",
|
|
"sha256": "ddc8b848bccd96aa0485aed3d8ae828cb0c22f0199fb5e98e22dda87ef866a3d",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2933,
|
|
"endLine": 2943
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SetCallForwardingRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CallForwardingResponse>; exact handler backend/src/handlers.rs:2933-2943",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_call_forwarding.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/forwarding",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"forward_type",
|
|
"number"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/call/settings",
|
|
"handler": "get_call_settings_handler",
|
|
"routeEvidence": "backend/src/main.rs:749-750",
|
|
"handlerEvidence": "backend/src/handlers.rs:2852-2866",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2852-2866",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CallSettingsResponse>; exact handler backend/src/handlers.rs:2852-2866",
|
|
"sha256": "893ccecb6c077f7e4c25829113a41bc1d7ddc9766fd813433f0653e32e62f544",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2852,
|
|
"endLine": 2866
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CallSettingsResponse>; exact handler backend/src/handlers.rs:2852-2866",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_call_settings.bru",
|
|
"method": "GET",
|
|
"path": "/api/call/settings",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/settings",
|
|
"handler": "set_call_settings_handler",
|
|
"routeEvidence": "backend/src/main.rs:749-751",
|
|
"handlerEvidence": "backend/src/handlers.rs:2868-2897",
|
|
"requestSummary": "body extractor SetCallSettingRequest fields [property:String, value:String] (models.rs:875); exact handler backend/src/handlers.rs:2868-2897",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2868-2897",
|
|
"sha256": "55ab650b3c53b78a3b80606e57d1e96261c5f88c27554c9181f8cd91e212441e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2868,
|
|
"endLine": 2897
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SetCallSettingRequest>",
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2868-2897",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_call_settings.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/settings",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"property",
|
|
"value"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/call/history",
|
|
"handler": "get_call_history_handler",
|
|
"routeEvidence": "backend/src/main.rs:755-756",
|
|
"handlerEvidence": "backend/src/handlers.rs:2791-2813",
|
|
"requestSummary": "query extractor CallHistoryRequest fields [limit:i64, offset:i64] (models.rs:835); exact handler backend/src/handlers.rs:2791-2813",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<CallHistoryResponse>>); exact handler backend/src/handlers.rs:2791-2813",
|
|
"sha256": "1def94db4c3d848ebba26d285882e36be6d0ce3a61b525d36b120d9b1a11740a",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2791,
|
|
"endLine": 2813
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<CallHistoryResponse>>",
|
|
"Query<CallHistoryRequest>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<CallHistoryResponse>>); exact handler backend/src/handlers.rs:2791-2813",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"path": "/api/call/history/{id}",
|
|
"handler": "delete_call_history_handler",
|
|
"routeEvidence": "backend/src/main.rs:759-760",
|
|
"handlerEvidence": "backend/src/handlers.rs:2815-2832",
|
|
"requestSummary": "path extractor i64; exact handler backend/src/handlers.rs:2815-2832",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2815-2832",
|
|
"sha256": "defa60d157769310f419da59b4abff5813c6e2ebc790b46d03881e305df44971",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2815,
|
|
"endLine": 2832
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"Path<i64>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2815-2832",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/delete_call_history.bru",
|
|
"method": "DELETE",
|
|
"path": "/api/call/history/1",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/call/history/clear",
|
|
"handler": "clear_call_history_handler",
|
|
"routeEvidence": "backend/src/main.rs:763-764",
|
|
"handlerEvidence": "backend/src/handlers.rs:2834-2850",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2834-2850",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2834-2850",
|
|
"sha256": "b0e0002012256b5dba375fdc2f747d07923f191029ff960b09297ddc2a521e73",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2834,
|
|
"endLine": 2850
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2834-2850",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/clear_call_history.bru",
|
|
"method": "POST",
|
|
"path": "/api/call/history/clear",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/ims/status",
|
|
"handler": "get_ims_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:767-768",
|
|
"handlerEvidence": "backend/src/handlers.rs:2945-2952",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2945-2952",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<ImsStatusResponse>; exact handler backend/src/handlers.rs:2945-2952",
|
|
"sha256": "e533ac5c9e7bc694faa94eaddc7de74e75c53270478480e0c53a1031f5087ba1",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2945,
|
|
"endLine": 2952
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<ImsStatusResponse>; exact handler backend/src/handlers.rs:2945-2952",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_ims_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/ims/status",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/voicemail/status",
|
|
"handler": "get_voicemail_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:771-772",
|
|
"handlerEvidence": "backend/src/handlers.rs:2954-2961",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2954-2961",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<VoicemailStatusResponse>; exact handler backend/src/handlers.rs:2954-2961",
|
|
"sha256": "837b8fbc971099b904d594fd605ff70aa3f1242a3f26365db95a479d885b33c3",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2954,
|
|
"endLine": 2961
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<VoicemailStatusResponse>; exact handler backend/src/handlers.rs:2954-2961",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_voicemail_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/voicemail/status",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/sms/send",
|
|
"handler": "send_sms_handler",
|
|
"routeEvidence": "backend/src/main.rs:776-777",
|
|
"handlerEvidence": "backend/src/handlers.rs:2373-2404",
|
|
"requestSummary": "body extractor SendSmsRequest fields [phone_number:String, content:String] (models.rs:912); exact handler backend/src/handlers.rs:2373-2404",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2373-2404",
|
|
"sha256": "6cd7eaa5e1a1f939704cadb96de5c47ac7df8c63a7d87018cf2f0ed8fbcdb156",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2373,
|
|
"endLine": 2404
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SendSmsRequest>",
|
|
"State<Arc<Connection>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2373-2404",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_sms_send.bru",
|
|
"method": "POST",
|
|
"path": "/api/sms/send",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"phone_number",
|
|
"content"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/sms/list",
|
|
"handler": "get_sms_list_handler",
|
|
"routeEvidence": "backend/src/main.rs:780-781",
|
|
"handlerEvidence": "backend/src/handlers.rs:2407-2434",
|
|
"requestSummary": "query extractor SmsListRequest fields [limit:i64, offset:i64, direction:Option<String>] (models.rs:918); exact handler backend/src/handlers.rs:2407-2434",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<SmsListResponse>>); exact handler backend/src/handlers.rs:2407-2434",
|
|
"sha256": "abbc14adc02b2f5f0c0cf11a9bbac9ceeddf12871a9be8a00b9e9967923d3576",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2407,
|
|
"endLine": 2434
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<SmsListResponse>>",
|
|
"Query<SmsListRequest>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<SmsListResponse>>); exact handler backend/src/handlers.rs:2407-2434",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/sms/conversation",
|
|
"handler": "get_sms_conversation_handler",
|
|
"routeEvidence": "backend/src/main.rs:784-785",
|
|
"handlerEvidence": "backend/src/handlers.rs:2437-2458",
|
|
"requestSummary": "query extractor SmsConversationRequest fields [phone_number:String, limit:i64] (models.rs:927); exact handler backend/src/handlers.rs:2437-2458",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<SmsListResponse>>); exact handler backend/src/handlers.rs:2437-2458",
|
|
"sha256": "e0747d062889fe8caf7b16d6f394c1a3a4f10148f8df3e2b0b09c80e345bb3da",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2437,
|
|
"endLine": 2458
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<SmsListResponse>>",
|
|
"Query<SmsConversationRequest>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<SmsListResponse>>); exact handler backend/src/handlers.rs:2437-2458",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/sms/stats",
|
|
"handler": "get_sms_stats_handler",
|
|
"routeEvidence": "backend/src/main.rs:788-789",
|
|
"handlerEvidence": "backend/src/handlers.rs:2461-2477",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2461-2477",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<SmsStatsResponse>>); exact handler backend/src/handlers.rs:2461-2477",
|
|
"sha256": "bd62f399815cb0d1f41cf895ce32e921dd10bc8cde5b30ed95ba9b46a629b9eb",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2461,
|
|
"endLine": 2477
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<SmsStatsResponse>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<SmsStatsResponse>>); exact handler backend/src/handlers.rs:2461-2477",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_sms_stats.bru",
|
|
"method": "GET",
|
|
"path": "/api/sms/stats",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/sms/batch-delete",
|
|
"handler": "delete_sms_batch_handler",
|
|
"routeEvidence": "backend/src/main.rs:792-793",
|
|
"handlerEvidence": "backend/src/handlers.rs:2551-2578",
|
|
"requestSummary": "body extractor SmsBatchDeleteRequest fields [ids:Vec<i64>, phone_numbers:Vec<String>] (models.rs:934); exact handler backend/src/handlers.rs:2551-2578",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2551-2578",
|
|
"sha256": "94c5c834874012034e8bcd6ba0b03f8cd24fb283c3682129568bcbada59d1609",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2551,
|
|
"endLine": 2578
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SmsBatchDeleteRequest>",
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2551-2578",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"path": "/api/sms/conversation/{phone_number}",
|
|
"handler": "delete_sms_conversation_handler",
|
|
"routeEvidence": "backend/src/main.rs:796-797",
|
|
"handlerEvidence": "backend/src/handlers.rs:2528-2548",
|
|
"requestSummary": "path extractor String; exact handler backend/src/handlers.rs:2528-2548",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2528-2548",
|
|
"sha256": "8abd673088da872031588a6449bba27fc95aac6d74a418eed143adbd1fc8166a",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2528,
|
|
"endLine": 2548
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"Path<String>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2528-2548",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"path": "/api/sms/message/{id}",
|
|
"handler": "delete_sms_message_handler",
|
|
"routeEvidence": "backend/src/main.rs:800-801",
|
|
"handlerEvidence": "backend/src/handlers.rs:2508-2525",
|
|
"requestSummary": "path extractor i64; exact handler backend/src/handlers.rs:2508-2525",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2508-2525",
|
|
"sha256": "8edc9f89854b5c8d8150cb04d5d26935c5bf3131db2cc459a32966c24c6c37f6",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2508,
|
|
"endLine": 2525
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"Path<i64>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2508-2525",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/sms/clear",
|
|
"handler": "clear_sms_handler",
|
|
"routeEvidence": "backend/src/main.rs:804-805",
|
|
"handlerEvidence": "backend/src/handlers.rs:2480-2505",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2480-2505",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2480-2505",
|
|
"sha256": "8c536214c43b65fc5ae19a81c26c7f3b007d6da6eada9f3908f0f9ddcd81bb57",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 2480,
|
|
"endLine": 2505
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2480-2505",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_sms_clear.bru",
|
|
"method": "POST",
|
|
"path": "/api/sms/clear",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/stats",
|
|
"handler": "get_system_stats",
|
|
"routeEvidence": "backend/src/main.rs:808-808",
|
|
"handlerEvidence": "backend/src/handlers.rs:3272-3288",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3272-3288",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:3272-3288; field shape is implementation evidence only",
|
|
"sha256": "94834f33d10be4b67c6dbc13d948ea17094235847d6e6cab92f426ff56f8af51",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3272,
|
|
"endLine": 3288
|
|
},
|
|
"extractorTokens": [
|
|
"State<Arc<Connection>>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3272-3288; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_stats.bru",
|
|
"method": "GET",
|
|
"path": "/api/stats",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/stats/cpu",
|
|
"handler": "get_cpu_info",
|
|
"routeEvidence": "backend/src/main.rs:809-809",
|
|
"handlerEvidence": "backend/src/handlers.rs:3291-3302",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3291-3302",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<CpuInfo>; exact handler backend/src/handlers.rs:3291-3302",
|
|
"sha256": "9f24be45c5c8df7a153d7542ec26c95a0a92af09ff5246e3650d985adb634b77",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3291,
|
|
"endLine": 3302
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<CpuInfo>; exact handler backend/src/handlers.rs:3291-3302",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_cpu_info.bru",
|
|
"method": "GET",
|
|
"path": "/api/stats/cpu",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/connectivity",
|
|
"handler": "get_connectivity_check",
|
|
"routeEvidence": "backend/src/main.rs:811-812",
|
|
"handlerEvidence": "backend/src/handlers.rs:3305-3322",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3305-3322",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<ConnectivityCheckResponse>>); exact handler backend/src/handlers.rs:3305-3322",
|
|
"sha256": "42ba5f81f052b9923867ee194593504b9f390c1972b08483e4bec85c017303a4",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3305,
|
|
"endLine": 3322
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<ConnectivityCheckResponse>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<ConnectivityCheckResponse>>); exact handler backend/src/handlers.rs:3305-3322",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/system/reboot",
|
|
"handler": "system_reboot",
|
|
"routeEvidence": "backend/src/main.rs:815-816",
|
|
"handlerEvidence": "backend/src/handlers.rs:3381-3406",
|
|
"requestSummary": "body extractor SystemRebootRequest fields [delay_seconds:u32] (models.rs:422); exact handler backend/src/handlers.rs:3381-3406",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:3381-3406; field shape is implementation evidence only",
|
|
"sha256": "362737633fd01332829b2623f8aa0bd398846a3648fb431f70c161ee1bb6fe1e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3381,
|
|
"endLine": 3406
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SystemRebootRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3381-3406; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_system_reboot.bru",
|
|
"method": "POST",
|
|
"path": "/api/system/reboot",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"delay_seconds"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/service/restart",
|
|
"handler": "restart_service_handler",
|
|
"routeEvidence": "backend/src/main.rs:819-820",
|
|
"handlerEvidence": "backend/src/handlers.rs:3578-3601",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3578-3601",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:3578-3601; field shape is implementation evidence only",
|
|
"sha256": "712a81c6cca94e0cd2911c324c35cfbb27ed88688f8a119783105e912bceec8b",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3578,
|
|
"endLine": 3601
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3578-3601; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/notifications/config",
|
|
"handler": "get_notification_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:824-825",
|
|
"handlerEvidence": "backend/src/handlers.rs:3641-3652",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3641-3652",
|
|
"responseSummary": "Rust return ( StatusCode, Json<ApiResponse<crate::config::NotificationConfig>>, ); exact handler backend/src/handlers.rs:3641-3652",
|
|
"sha256": "96344b8b2d1b881879c78c33a954a6a7af4de9aa59ffc1d1ef77a4ebc980e277",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3641,
|
|
"endLine": 3652
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<crate::config::NotificationConfig>>",
|
|
"State<Arc<ConfigManager>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::config::NotificationConfig>>, ); exact handler backend/src/handlers.rs:3641-3652",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_notification_config.bru",
|
|
"method": "GET",
|
|
"path": "/api/notifications/config",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/notifications/config",
|
|
"handler": "set_notification_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:824-826",
|
|
"handlerEvidence": "backend/src/handlers.rs:3655-3672",
|
|
"requestSummary": "body extractor crate::config::NotificationConfig fields [version:u8, channels:Vec<NotificationChannelInstance>, rules:Vec<NotificationRule>, log_cleanup:NotificationLogCleanupConfig] (config.rs:548); exact handler backend/src/handlers.rs:3655-3672",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3655-3672",
|
|
"sha256": "5fc4fbfff68050e0887b051bb111a78b3d3805dfc32b685414f4178333285f3e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3655,
|
|
"endLine": 3672
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::config::NotificationConfig>",
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<ConfigManager>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3655-3672",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/set_notification_config.bru",
|
|
"method": "POST",
|
|
"path": "/api/notifications/config",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"webhook",
|
|
"bark"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/notifications/test/{channel}",
|
|
"handler": "test_notification_channel_handler",
|
|
"routeEvidence": "backend/src/main.rs:830-831",
|
|
"handlerEvidence": "backend/src/handlers.rs:3675-3704",
|
|
"requestSummary": "path extractor String; exact handler backend/src/handlers.rs:3675-3704",
|
|
"responseSummary": "Rust return ( StatusCode, Json<ApiResponse<crate::models::WebhookTestResponse>>, ); exact handler backend/src/handlers.rs:3675-3704",
|
|
"sha256": "df28427afab1724aa28b0e28f39b7707778422f086b9ca9bd8ac8ec8e5c909e5",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3675,
|
|
"endLine": 3704
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<crate::models::WebhookTestResponse>>",
|
|
"Path<String>",
|
|
"State<Arc<NotificationSender>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::models::WebhookTestResponse>>, ); exact handler backend/src/handlers.rs:3675-3704",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/notifications/logs",
|
|
"handler": "get_notification_logs_handler",
|
|
"routeEvidence": "backend/src/main.rs:835-836",
|
|
"handlerEvidence": "backend/src/handlers.rs:3709-3734",
|
|
"requestSummary": "query extractor NotificationLogQuery fields [event_type:String, status:String, q:String, start_date:String, end_date:String, limit:i64, offset:i64] (handlers.rs:3607); exact handler backend/src/handlers.rs:3709-3734",
|
|
"responseSummary": "Rust return ( StatusCode, Json<ApiResponse<crate::db::NotificationLogsResponse>>, ); exact handler backend/src/handlers.rs:3709-3734",
|
|
"sha256": "da933f5e679cb9e14580b82b75a4caae71e26db4b2e9f57f32b99c1d472bf005",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3709,
|
|
"endLine": 3734
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<crate::db::NotificationLogsResponse>>",
|
|
"Query<NotificationLogQuery>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::db::NotificationLogsResponse>>, ); exact handler backend/src/handlers.rs:3709-3734",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/notifications/logs/clear",
|
|
"handler": "clear_notification_logs_handler",
|
|
"routeEvidence": "backend/src/main.rs:839-840",
|
|
"handlerEvidence": "backend/src/handlers.rs:3737-3760",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3737-3760",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3737-3760",
|
|
"sha256": "04de36a4268a3ab6f30354da995a73fb44689d28a2dcd4945548b3b1a89c64d3",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3737,
|
|
"endLine": 3760
|
|
},
|
|
"extractorTokens": [
|
|
"Json<NotificationLogClearRequest>",
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3737-3760",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/notifications/queue",
|
|
"handler": "get_notification_queue_handler",
|
|
"routeEvidence": "backend/src/main.rs:843-844",
|
|
"handlerEvidence": "backend/src/notification_queue.rs:24-41",
|
|
"requestSummary": "query extractor NotificationQueueQuery fields [limit:i64] (notification_queue.rs:14); exact handler backend/src/notification_queue.rs:24-41",
|
|
"responseSummary": "Rust return ( StatusCode, Json<ApiResponse<crate::db::NotificationQueueResponse>>, ); exact handler backend/src/notification_queue.rs:24-41",
|
|
"sha256": "babc88061bcb3386c8394818ccafe784c4c3fd32dd3626370faa0cf0f7652f86",
|
|
"handlerRange": {
|
|
"file": "backend/src/notification_queue.rs",
|
|
"startLine": 24,
|
|
"endLine": 41
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<crate::db::NotificationQueueResponse>>",
|
|
"Query<NotificationQueueQuery>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::db::NotificationQueueResponse>>, ); exact handler backend/src/notification_queue.rs:24-41",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/notifications/queue/retry-all",
|
|
"handler": "retry_all_notification_queue_handler",
|
|
"routeEvidence": "backend/src/main.rs:847-848",
|
|
"handlerEvidence": "backend/src/notification_queue.rs:84-100",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/notification_queue.rs:84-100",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:84-100",
|
|
"sha256": "f58e1be1cbf6a022663038bdbc76ec7c6df7c0bbcba6f13ea16faf25f03dcd34",
|
|
"handlerRange": {
|
|
"file": "backend/src/notification_queue.rs",
|
|
"startLine": 84,
|
|
"endLine": 100
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:84-100",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/notifications/queue/clear",
|
|
"handler": "clear_notification_queue_handler",
|
|
"routeEvidence": "backend/src/main.rs:851-852",
|
|
"handlerEvidence": "backend/src/notification_queue.rs:103-119",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/notification_queue.rs:103-119",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:103-119",
|
|
"sha256": "2501068f6741e02ed9dfb0475191acfa80ccc81f3cf9b8d2152920c78b7006f1",
|
|
"handlerRange": {
|
|
"file": "backend/src/notification_queue.rs",
|
|
"startLine": 103,
|
|
"endLine": 119
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:103-119",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"path": "/api/notifications/queue/{id}",
|
|
"handler": "delete_notification_queue_item_handler",
|
|
"routeEvidence": "backend/src/main.rs:855-856",
|
|
"handlerEvidence": "backend/src/notification_queue.rs:64-81",
|
|
"requestSummary": "path extractor i64; exact handler backend/src/notification_queue.rs:64-81",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:64-81",
|
|
"sha256": "6b845ad2da8f319d8cfa2cb208361901c5a3e852027d9cb96bd54bcd5b27b034",
|
|
"handlerRange": {
|
|
"file": "backend/src/notification_queue.rs",
|
|
"startLine": 64,
|
|
"endLine": 81
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"Path<i64>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:64-81",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/notifications/queue/{id}/retry",
|
|
"handler": "retry_notification_queue_item_handler",
|
|
"routeEvidence": "backend/src/main.rs:859-860",
|
|
"handlerEvidence": "backend/src/notification_queue.rs:44-61",
|
|
"requestSummary": "path extractor i64; exact handler backend/src/notification_queue.rs:44-61",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:44-61",
|
|
"sha256": "068be5777b9d8f78a7d72c2368b788ab23e6ae1de4d4ab110596783be869d967",
|
|
"handlerRange": {
|
|
"file": "backend/src/notification_queue.rs",
|
|
"startLine": 44,
|
|
"endLine": 61
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"Path<i64>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:44-61",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/automation/config",
|
|
"handler": "get_automation_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:864-865",
|
|
"handlerEvidence": "backend/src/handlers.rs:3968-3979",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3968-3979",
|
|
"responseSummary": "Rust return ( StatusCode, Json<ApiResponse<crate::config::AutomationConfig>>, ); exact handler backend/src/handlers.rs:3968-3979",
|
|
"sha256": "eed75ffb9545cf5e08d2bc7ae01ead9830e9457842ce87613f8bdbad8d2b3bba",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3968,
|
|
"endLine": 3979
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<crate::config::AutomationConfig>>",
|
|
"State<Arc<ConfigManager>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::config::AutomationConfig>>, ); exact handler backend/src/handlers.rs:3968-3979",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/automation/config",
|
|
"handler": "set_automation_config_handler",
|
|
"routeEvidence": "backend/src/main.rs:864-866",
|
|
"handlerEvidence": "backend/src/handlers.rs:3982-3999",
|
|
"requestSummary": "body extractor crate::config::AutomationConfig fields [enabled:bool, tasks:Vec<AutomationTask>] (config.rs:1394); exact handler backend/src/handlers.rs:3982-3999",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3982-3999",
|
|
"sha256": "7f324660f7624a52d5521b4d2a15dbb099cf5a4c518b662a0f7d776f68a33c97",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3982,
|
|
"endLine": 3999
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::config::AutomationConfig>",
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<ConfigManager>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3982-3999",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/automation/logs",
|
|
"handler": "get_automation_logs_handler",
|
|
"routeEvidence": "backend/src/main.rs:870-871",
|
|
"handlerEvidence": "backend/src/handlers.rs:4002-4027",
|
|
"requestSummary": "query extractor AutomationLogQuery fields [task_type:String, status:String, q:String, start_date:String, end_date:String, limit:i64, offset:i64] (handlers.rs:3938); exact handler backend/src/handlers.rs:4002-4027",
|
|
"responseSummary": "Rust return ( StatusCode, Json<ApiResponse<crate::db::AutomationLogsResponse>>, ); exact handler backend/src/handlers.rs:4002-4027",
|
|
"sha256": "b6cacc95a374e31ad4fb1141d8a1b002ddb6fb642b6300a501830744ad0a587d",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 4002,
|
|
"endLine": 4027
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<crate::db::AutomationLogsResponse>>",
|
|
"Query<AutomationLogQuery>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::db::AutomationLogsResponse>>, ); exact handler backend/src/handlers.rs:4002-4027",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/automation/logs/clear",
|
|
"handler": "clear_automation_logs_handler",
|
|
"routeEvidence": "backend/src/main.rs:874-875",
|
|
"handlerEvidence": "backend/src/handlers.rs:4030-4053",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:4030-4053",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:4030-4053",
|
|
"sha256": "0912300e74c831ac108f2696eb28a65b5861cd508498330a9a91add6f6781d7e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 4030,
|
|
"endLine": 4053
|
|
},
|
|
"extractorTokens": [
|
|
"Json<AutomationLogClearRequest>",
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"State<Arc<Database>>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:4030-4053",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/automation/test/{task_id}",
|
|
"handler": "test_automation_task_handler",
|
|
"routeEvidence": "backend/src/main.rs:878-879",
|
|
"handlerEvidence": "backend/src/handlers.rs:4056-4146",
|
|
"requestSummary": "path extractor String; exact handler backend/src/handlers.rs:4056-4146",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:4056-4146",
|
|
"sha256": "091db790a51ab1855cc1d96b0a07e5c1fc6570102050382abab2535ea5d2034e",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 4056,
|
|
"endLine": 4146
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<serde_json::Value>>",
|
|
"Path<String>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:4056-4146",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/ota/status",
|
|
"handler": "get_ota_status_handler",
|
|
"routeEvidence": "backend/src/main.rs:882-883",
|
|
"handlerEvidence": "backend/src/handlers.rs:3763-3769",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3763-3769",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:3763-3769; field shape is implementation evidence only",
|
|
"sha256": "89d8afa94cbad60c4845764679734bf5ef62b1bdf0f64f4e905740d978cce5b0",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3763,
|
|
"endLine": 3769
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3763-3769; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_ota_status.bru",
|
|
"method": "GET",
|
|
"path": "/api/ota/status",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/ota/upload",
|
|
"handler": "upload_ota_handler",
|
|
"routeEvidence": "backend/src/main.rs:886-887",
|
|
"handlerEvidence": "backend/src/handlers.rs:3772-3792",
|
|
"requestSummary": "bytes extractor axum::body::Bytes; exact exact handler backend/src/handlers.rs:3772-3792",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<crate::models::OtaUploadResponse>; exact handler backend/src/handlers.rs:3772-3792",
|
|
"sha256": "becfb7dc7e9c1355976abcc802d12f03c06d05d035db2203516fee0cc0b12a74",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3772,
|
|
"endLine": 3792
|
|
},
|
|
"extractorTokens": [
|
|
"axum::body::Bytes"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<crate::models::OtaUploadResponse>; exact handler backend/src/handlers.rs:3772-3792",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/ota/latest-release",
|
|
"handler": "get_latest_ota_release_handler",
|
|
"routeEvidence": "backend/src/main.rs:892-893",
|
|
"handlerEvidence": "backend/src/handlers.rs:3795-3825",
|
|
"requestSummary": "body extractor crate::models::OtaOnlinePrepareRequest fields [proxy_prefix:Option<String>] (models.rs:986); exact handler backend/src/handlers.rs:3795-3825",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<crate::models::OtaLatestReleaseResponse>; exact handler backend/src/handlers.rs:3795-3825",
|
|
"sha256": "61083109860620e593336906b5b08360b7694f3553ab6859445166a52cef0314",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3795,
|
|
"endLine": 3825
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::models::OtaOnlinePrepareRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<crate::models::OtaLatestReleaseResponse>; exact handler backend/src/handlers.rs:3795-3825",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/ota/online-prepare",
|
|
"handler": "prepare_online_ota_handler",
|
|
"routeEvidence": "backend/src/main.rs:896-897",
|
|
"handlerEvidence": "backend/src/handlers.rs:3828-3889",
|
|
"requestSummary": "body extractor crate::models::OtaOnlinePrepareRequest fields [proxy_prefix:Option<String>] (models.rs:986); exact handler backend/src/handlers.rs:3828-3889",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<crate::models::OtaUploadResponse>; exact handler backend/src/handlers.rs:3828-3889",
|
|
"sha256": "6d70f80714b7f00461ba8eb4a3dc5c7f6056590bed50162031e7c0af8e5371e2",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3828,
|
|
"endLine": 3889
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::models::OtaOnlinePrepareRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<crate::models::OtaUploadResponse>; exact handler backend/src/handlers.rs:3828-3889",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/ota/apply",
|
|
"handler": "apply_ota_handler",
|
|
"routeEvidence": "backend/src/main.rs:900-901",
|
|
"handlerEvidence": "backend/src/handlers.rs:3892-3911",
|
|
"requestSummary": "body extractor crate::models::OtaApplyRequest fields [restart_now:bool] (models.rs:1030); exact handler backend/src/handlers.rs:3892-3911",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:3892-3911",
|
|
"sha256": "46c24f90fdb71e52316e32c93e6c37265d79dc4bb2076bbed9c97b92517c3d03",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3892,
|
|
"endLine": 3911
|
|
},
|
|
"extractorTokens": [
|
|
"Json<crate::models::OtaApplyRequest>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:3892-3911",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_ota_apply_restart.bru",
|
|
"method": "POST",
|
|
"path": "/api/ota/apply",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"restart_now"
|
|
]
|
|
},
|
|
{
|
|
"file": "bruno-api/post_ota_apply.bru",
|
|
"method": "POST",
|
|
"path": "/api/ota/apply",
|
|
"bodyMode": "json",
|
|
"bodyFields": [
|
|
"restart_now"
|
|
]
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+model+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/ota/cancel",
|
|
"handler": "cancel_ota_handler",
|
|
"routeEvidence": "backend/src/main.rs:904-905",
|
|
"handlerEvidence": "backend/src/handlers.rs:3914-3931",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3914-3931",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:3914-3931",
|
|
"sha256": "9085b81dc3f8588654d7b258de241d29832afa2c40a9390bbbe9245c069a1603",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 3914,
|
|
"endLine": 3931
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:3914-3931",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/post_ota_cancel.bru",
|
|
"method": "POST",
|
|
"path": "/api/ota/cancel",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/auth/password",
|
|
"handler": "auth::change_password",
|
|
"routeEvidence": "backend/src/main.rs:908-909",
|
|
"handlerEvidence": "backend/src/auth.rs:491-553",
|
|
"requestSummary": "body extractor ChangePasswordRequest fields [new_password:String] (auth.rs:59); exact handler backend/src/auth.rs:491-553",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:491-553",
|
|
"sha256": "ec7372792586fd2ab24eda6fc2fc008b04c567045c6dfc54f9ae24530ce3b113",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 491,
|
|
"endLine": 553
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ChangePasswordRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:491-553",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/auth/settings",
|
|
"handler": "auth::get_settings",
|
|
"routeEvidence": "backend/src/main.rs:912-913",
|
|
"handlerEvidence": "backend/src/auth.rs:555-570",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/auth.rs:555-570",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<AuthSettingsResponse>>); exact handler backend/src/auth.rs:555-570",
|
|
"sha256": "035bdb5afbefdcb84d93a6f58f94ace658cfd041bea5ac3f41f1d6d32d4eca1f",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 555,
|
|
"endLine": 570
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<AuthSettingsResponse>>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<AuthSettingsResponse>>); exact handler backend/src/auth.rs:555-570",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/auth/settings",
|
|
"handler": "auth::set_settings",
|
|
"routeEvidence": "backend/src/main.rs:912-914",
|
|
"handlerEvidence": "backend/src/auth.rs:572-640",
|
|
"requestSummary": "body extractor SecurityConfig fields [password_protection_enabled:bool, password_min_length:u8, password_require_letters:bool, password_require_digits:bool, password_require_symbols:bool, session_ttl_seconds:i64, idle_timeout_seconds:i64] (config.rs:615); exact handler backend/src/auth.rs:572-640",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:572-640",
|
|
"sha256": "10b564c9437defd56e62bb46e622cce512d3cd42ad8fee67699697a7828987e8",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 572,
|
|
"endLine": 640
|
|
},
|
|
"extractorTokens": [
|
|
"Json<SecurityConfig>",
|
|
"State<AppState>",
|
|
"HeaderMap"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:572-640",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/health",
|
|
"handler": "health_check",
|
|
"routeEvidence": "backend/src/main.rs:923-923",
|
|
"handlerEvidence": "backend/src/handlers.rs:65-75",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:65-75",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/handlers.rs:65-75; field shape is implementation evidence only",
|
|
"sha256": "e169391fd5f376b8602c2164d0070744964b009f367d2f42c8832b9f98faad25",
|
|
"handlerRange": {
|
|
"file": "backend/src/handlers.rs",
|
|
"startLine": 65,
|
|
"endLine": 75
|
|
},
|
|
"extractorTokens": [],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:65-75; field shape is implementation evidence only",
|
|
"brunoEvidence": [
|
|
{
|
|
"file": "bruno-api/get_health.bru",
|
|
"method": "GET",
|
|
"path": "/api/health",
|
|
"bodyMode": "none",
|
|
"bodyFields": []
|
|
}
|
|
],
|
|
"evidenceLevel": "route+handler+bruno"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/auth/status",
|
|
"handler": "auth::status",
|
|
"routeEvidence": "backend/src/main.rs:925-926",
|
|
"handlerEvidence": "backend/src/auth.rs:345-364",
|
|
"requestSummary": "none; no body/query/path extractor; exact handler backend/src/auth.rs:345-364",
|
|
"responseSummary": "Rust return (StatusCode, Json<ApiResponse<AuthStatusResponse>>); exact handler backend/src/auth.rs:345-364",
|
|
"sha256": "0ee683548f9f803687e7162cd5c596b09e36ff0adad03a5cb63c2067ece24aa3",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 345,
|
|
"endLine": 364
|
|
},
|
|
"extractorTokens": [
|
|
"Json<ApiResponse<AuthStatusResponse>>",
|
|
"State<AppState>",
|
|
"HeaderMap"
|
|
],
|
|
"responseKind": "explicit-return",
|
|
"responseTypeEvidence": "Rust return (StatusCode, Json<ApiResponse<AuthStatusResponse>>); exact handler backend/src/auth.rs:345-364",
|
|
"evidenceLevel": "route+handler"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/auth/setup",
|
|
"handler": "auth::setup",
|
|
"routeEvidence": "backend/src/main.rs:929-930",
|
|
"handlerEvidence": "backend/src/auth.rs:366-427",
|
|
"requestSummary": "body extractor LoginRequest fields [password:String] (auth.rs:54); exact handler backend/src/auth.rs:366-427",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:366-427",
|
|
"sha256": "1c0c5eb2cc77326de57062361dfe9c499aad351d8d3bbd101844c5cd0be43a6f",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 366,
|
|
"endLine": 427
|
|
},
|
|
"extractorTokens": [
|
|
"Json<LoginRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:366-427",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/auth/login",
|
|
"handler": "auth::login",
|
|
"routeEvidence": "backend/src/main.rs:933-934",
|
|
"handlerEvidence": "backend/src/auth.rs:429-489",
|
|
"requestSummary": "body extractor LoginRequest fields [password:String] (auth.rs:54); exact handler backend/src/auth.rs:429-489",
|
|
"responseSummary": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:429-489",
|
|
"sha256": "defd9444410e5b124ab0d621e7faf70bae335363e7e287738273e9e06cc151a1",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 429,
|
|
"endLine": 489
|
|
},
|
|
"extractorTokens": [
|
|
"Json<LoginRequest>",
|
|
"State<AppState>"
|
|
],
|
|
"responseKind": "api-response-payload",
|
|
"responseTypeEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:429-489",
|
|
"evidenceLevel": "route+handler+model"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/auth/logout",
|
|
"handler": "auth::logout",
|
|
"routeEvidence": "backend/src/main.rs:937-938",
|
|
"handlerEvidence": "backend/src/auth.rs:642-655",
|
|
"requestSummary": "none body; HeaderMap carries simadmin_session cookie; exact handler backend/src/auth.rs:642-655; cookie name backend/src/auth.rs:43-43",
|
|
"responseSummary": "dynamic-json construction in exact handler backend/src/auth.rs:642-655; field shape is implementation evidence only",
|
|
"sha256": "1ccf5c295251b2a22462cc81c3759330b65979cef524facbf2998b712c5daee1",
|
|
"handlerRange": {
|
|
"file": "backend/src/auth.rs",
|
|
"startLine": 642,
|
|
"endLine": 655
|
|
},
|
|
"extractorTokens": [
|
|
"State<AppState>",
|
|
"HeaderMap"
|
|
],
|
|
"responseKind": "dynamic-json",
|
|
"responseTypeEvidence": "dynamic-json construction in exact handler backend/src/auth.rs:642-655; field shape is implementation evidence only",
|
|
"evidenceLevel": "route+handler"
|
|
}
|
|
],
|
|
"snapshotManifest": "upstream-58e2204/manifest.json",
|
|
"opaqueIntoResponseCount": 0,
|
|
"brunoOperationCount": 67,
|
|
"brunoFileCount": 82
|
|
}
|