3498 lines
141 KiB
TypeScript
3498 lines
141 KiB
TypeScript
import { structuredEvidence58e2204 } from './structured-evidence-58e2204.ts';
|
|
import { sensitiveModelEvidence58e2204 } from './sensitive-evidence-58e2204.ts';
|
|
|
|
/** Frozen static-contract OperationRegistry audited at upstream commit 58e2204. */
|
|
const rawUpstream58e2204Operations = [
|
|
{
|
|
"operationId": "getDevice",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/device",
|
|
"handler": "get_device_info",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1076-1090",
|
|
"responseSchemaEvidence": "ApiResponse<DeviceInfoResponse> success payload/error envelope; success/error payload evidenced by ApiResponse<DeviceInfoResponse>; exact handler backend/src/handlers.rs:1076-1090",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:506-506",
|
|
"backend/src/handlers.rs:1076-1090",
|
|
"bruno-api/get_device_info.bru:8"
|
|
],
|
|
"upstreamDomain": "device-system",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getSim",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/sim",
|
|
"handler": "get_sim_info",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1126-1145",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<SimInfoResponse>; exact handler backend/src/handlers.rs:1126-1145",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:508-508",
|
|
"backend/src/handlers.rs:1126-1145",
|
|
"bruno-api/get_sim_info.bru:8"
|
|
],
|
|
"upstreamDomain": "sim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postSimDetailsRefresh",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/sim/details/refresh",
|
|
"handler": "refresh_sim_details_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1148-1164",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1148-1164; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:510-511",
|
|
"backend/src/handlers.rs:1148-1164"
|
|
],
|
|
"upstreamDomain": "sim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postSimCache",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/sim/cache",
|
|
"handler": "update_sim_cache_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor UpdateSimCacheRequest fields [phone_number:Option<String>, sms_center:Option<String>] (models.rs:1036); exact handler backend/src/handlers.rs:1167-1213",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1167-1213",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:514-515",
|
|
"backend/src/handlers.rs:1167-1213"
|
|
],
|
|
"upstreamDomain": "sim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNetwork",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/network",
|
|
"handler": "get_network_info",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1218-1232",
|
|
"responseSchemaEvidence": "ApiResponse<NetworkInfoResponse> success payload/error envelope; success/error payload evidenced by ApiResponse<NetworkInfoResponse>; exact handler backend/src/handlers.rs:1218-1232",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:519-520",
|
|
"backend/src/handlers.rs:1218-1232",
|
|
"bruno-api/get_network_info.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCells",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/cells",
|
|
"handler": "get_cells",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1235-1249",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CellsResponse>; exact handler backend/src/handlers.rs:1235-1249",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:522-522",
|
|
"backend/src/handlers.rs:1235-1249",
|
|
"bruno-api/get_cells_info.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCellMonitorStart",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/cell-monitor/start",
|
|
"handler": "start_cell_monitor_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1252-1282",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1252-1282",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:524-525",
|
|
"backend/src/handlers.rs:1252-1282"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCellMonitorStop",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/cell-monitor/stop",
|
|
"handler": "stop_cell_monitor_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1285-1312",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1285-1312",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:528-529",
|
|
"backend/src/handlers.rs:1285-1312"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getRadioMode",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/radio-mode",
|
|
"handler": "get_radio_mode_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1315-1329",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<RadioModeResponse>; exact handler backend/src/handlers.rs:1315-1329",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:532-533",
|
|
"backend/src/handlers.rs:1315-1329",
|
|
"bruno-api/get_radio_mode.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postRadioMode",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/radio-mode",
|
|
"handler": "set_radio_mode_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor RadioModeRequest fields [mode:RadioMode] (models.rs:351); exact handler backend/src/handlers.rs:1332-1352",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1332-1352",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:532-534",
|
|
"backend/src/handlers.rs:1332-1352",
|
|
"bruno-api/set_radio_mode_nr.bru:8",
|
|
"bruno-api/set_radio_mode_lte.bru:8",
|
|
"bruno-api/set_radio_mode_auto.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getBandLock",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/band-lock",
|
|
"handler": "get_band_lock_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1355-1369",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<BandLockStatus>; exact handler backend/src/handlers.rs:1355-1369",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:538-539",
|
|
"backend/src/handlers.rs:1355-1369",
|
|
"bruno-api/get_band_lock.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postBandLock",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/band-lock",
|
|
"handler": "set_band_lock_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1372-1392",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:538-540",
|
|
"backend/src/handlers.rs:1372-1392",
|
|
"bruno-api/set_band_lock_nr_n78.bru:8",
|
|
"bruno-api/set_band_lock_lte_b1_b3.bru:8",
|
|
"bruno-api/unlock_all_bands.bru:8",
|
|
"bruno-api/set_band_lock_lte_nr_mix.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNetworkInterfaces",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/network/interfaces",
|
|
"handler": "get_network_interfaces_info",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1619-1644",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<NetworkInterfacesResponse>; exact handler backend/src/handlers.rs:1619-1644",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:544-545",
|
|
"backend/src/handlers.rs:1619-1644",
|
|
"bruno-api/get_network_interfaces.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNetworkConnectionAddresses",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/network/connection-addresses",
|
|
"handler": "get_network_connection_addresses",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1647-1666",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<ConnectionAddressesResponse>; exact handler backend/src/handlers.rs:1647-1666",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:548-549",
|
|
"backend/src/handlers.rs:1647-1666"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getDeviceNetworkDdnsConfig",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/device-network/ddns/config",
|
|
"handler": "get_device_ddns_config_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1669-1679",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1669-1679; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.response.data.access_id",
|
|
"$.response.data.access_secret"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:552-553",
|
|
"backend/src/handlers.rs:1669-1679",
|
|
"bruno-api/get_device_ddns_config.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkDdnsConfig",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/ddns/config",
|
|
"handler": "set_device_ddns_config_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1682-1721",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.access_id",
|
|
"$.body.access_secret"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:552-554",
|
|
"backend/src/handlers.rs:1682-1721",
|
|
"bruno-api/set_device_ddns_config.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getDeviceNetworkDdnsStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/device-network/ddns/status",
|
|
"handler": "get_device_ddns_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1750-1757",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1750-1757; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:558-559",
|
|
"backend/src/handlers.rs:1750-1757",
|
|
"bruno-api/get_device_ddns_status.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkDdnsSync",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/ddns/sync",
|
|
"handler": "sync_device_ddns_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1760-1781",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<DdnsSyncResponse>; exact handler backend/src/handlers.rs:1760-1781",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:562-563",
|
|
"backend/src/handlers.rs:1760-1781",
|
|
"bruno-api/post_device_ddns_sync.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getDeviceNetworkDdnsLogs",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/device-network/ddns/logs",
|
|
"handler": "get_device_ddns_logs_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1784-1790",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1784-1790; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:566-567",
|
|
"backend/src/handlers.rs:1784-1790",
|
|
"bruno-api/get_device_ddns_logs.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkDdnsLogsClear",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/ddns/logs/clear",
|
|
"handler": "clear_device_ddns_logs_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1793-1802",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1793-1802; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:570-571",
|
|
"backend/src/handlers.rs:1793-1802",
|
|
"bruno-api/post_device_ddns_logs_clear.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getDeviceNetworkWlanStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/device-network/wlan/status",
|
|
"handler": "get_device_wlan_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1805-1819",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1805-1819",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.response.data.ssid"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:574-575",
|
|
"backend/src/handlers.rs:1805-1819",
|
|
"bruno-api/get_device_wlan_status.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkWlanEnabled",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/wlan/enabled",
|
|
"handler": "set_device_wlan_enabled_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor WlanEnabledRequest fields [enabled:bool] (models.rs:606); exact handler backend/src/handlers.rs:1822-1841",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1822-1841",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:578-579",
|
|
"backend/src/handlers.rs:1822-1841",
|
|
"bruno-api/set_device_wlan_enabled.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkWlanScan",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/wlan/scan",
|
|
"handler": "scan_device_wlan_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1844-1858",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanScanResponse>; exact handler backend/src/handlers.rs:1844-1858",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:582-583",
|
|
"backend/src/handlers.rs:1844-1858",
|
|
"bruno-api/post_device_wlan_scan.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getDeviceNetworkWlanProfiles",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/device-network/wlan/profiles",
|
|
"handler": "get_device_wlan_profiles_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1861-1875",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanProfilesResponse>; exact handler backend/src/handlers.rs:1861-1875",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.response.data[*].ssid"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:586-587",
|
|
"backend/src/handlers.rs:1861-1875",
|
|
"bruno-api/get_device_wlan_profiles.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkWlanForget",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/wlan/forget",
|
|
"handler": "forget_device_wlan_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor WlanForgetRequest fields [uuid:String, connection_id:String] (models.rs:635); exact handler backend/src/handlers.rs:1878-1897",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanProfilesResponse>; exact handler backend/src/handlers.rs:1878-1897",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:590-591",
|
|
"backend/src/handlers.rs:1878-1897",
|
|
"bruno-api/post_device_wlan_forget.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkWlanConnect",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/wlan/connect",
|
|
"handler": "connect_device_wlan_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor WlanConnectRequest fields [ssid:String, password:String, auto_join:bool] (models.rs:611); exact handler backend/src/handlers.rs:1900-1955",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1900-1955",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.ssid",
|
|
"$.body.password"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:594-595",
|
|
"backend/src/handlers.rs:1900-1955",
|
|
"bruno-api/post_device_wlan_connect.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkWlanDisconnect",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/wlan/disconnect",
|
|
"handler": "disconnect_device_wlan_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1958-1991",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1958-1991",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:598-599",
|
|
"backend/src/handlers.rs:1958-1991",
|
|
"bruno-api/post_device_wlan_disconnect.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postDeviceNetworkWlanProfile",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/device-network/wlan/profile",
|
|
"handler": "save_device_wlan_profile_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WlanStatusResponse>; exact handler backend/src/handlers.rs:1994-2013",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.credentials"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "device-network",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:602-603",
|
|
"backend/src/handlers.rs:1994-2013",
|
|
"bruno-api/post_device_wlan_profile.bru:8"
|
|
],
|
|
"upstreamDomain": "device-network",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNetworkSignalStrength",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/network/signal-strength",
|
|
"handler": "get_signal_strength_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2016-2030",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<SignalStrengthResponse>; exact handler backend/src/handlers.rs:2016-2030",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:606-607",
|
|
"backend/src/handlers.rs:2016-2030",
|
|
"bruno-api/get_signal_strength.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getLocationCellInfo",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/location/cell-info",
|
|
"handler": "get_cell_location_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1395-1409",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CellLocationResponse>; exact handler backend/src/handlers.rs:1395-1409",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:610-611",
|
|
"backend/src/handlers.rs:1395-1409",
|
|
"bruno-api/get_cell_location_info.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNetworkOperators",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/network/operators",
|
|
"handler": "get_network_operators",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1412-1426",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<OperatorListResponse>; exact handler backend/src/handlers.rs:1412-1426",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:614-615",
|
|
"backend/src/handlers.rs:1412-1426",
|
|
"bruno-api/get_operators.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNetworkOperatorsScan",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/network/operators/scan",
|
|
"handler": "scan_network_operators",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1429-1443",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<OperatorListResponse>; exact handler backend/src/handlers.rs:1429-1443",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:618-619",
|
|
"backend/src/handlers.rs:1429-1443",
|
|
"bruno-api/scan_operators.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNetworkRegisterManual",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/network/register-manual",
|
|
"handler": "register_network_manual",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor ManualRegisterRequest fields [mccmnc:String] (models.rs:771); exact handler backend/src/handlers.rs:1446-1466",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1446-1466",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:622-623",
|
|
"backend/src/handlers.rs:1446-1466",
|
|
"bruno-api/register_operator_manual.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNetworkRegisterAuto",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/network/register-auto",
|
|
"handler": "register_network_auto",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1469-1486",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1469-1486",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:626-627",
|
|
"backend/src/handlers.rs:1469-1486",
|
|
"bruno-api/register_operator_auto.bru:8"
|
|
],
|
|
"upstreamDomain": "cellular",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getApn",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/apn",
|
|
"handler": "get_apn_list_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1489-1504",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<ApnListResponse>; exact handler backend/src/handlers.rs:1489-1504",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.username",
|
|
"$.body.password"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:630-631",
|
|
"backend/src/handlers.rs:1489-1504",
|
|
"bruno-api/get_apn_list.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postApn",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/apn",
|
|
"handler": "set_apn_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:1507-1571",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.username",
|
|
"$.body.password"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:630-632",
|
|
"backend/src/handlers.rs:1507-1571",
|
|
"bruno-api/set_apn.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCellLock",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/cell-lock",
|
|
"handler": "get_cell_lock_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1574-1582",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1574-1582; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:636-637",
|
|
"backend/src/handlers.rs:1574-1582",
|
|
"bruno-api/get_cell_lock.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCellLock",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/cell-lock",
|
|
"handler": "set_cell_lock_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CellLockResult>; exact handler backend/src/handlers.rs:1585-1603",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:636-638",
|
|
"backend/src/handlers.rs:1585-1603",
|
|
"bruno-api/set_cell_lock_lte.bru:8",
|
|
"bruno-api/set_cell_lock_nr.bru:8",
|
|
"bruno-api/unlock_cell_nr.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCellLockUnlockAll",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/cell-lock/unlock-all",
|
|
"handler": "unlock_all_cells_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:1606-1616",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:1606-1616; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:642-643",
|
|
"backend/src/handlers.rs:1606-1616",
|
|
"bruno-api/unlock_all_cells.bru:8"
|
|
],
|
|
"upstreamDomain": "radio-lock",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getData",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/data",
|
|
"handler": "get_data_status",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2035-2062",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<DataConnectionResponse>; exact handler backend/src/handlers.rs:2035-2062",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:647-648",
|
|
"backend/src/handlers.rs:2035-2062",
|
|
"bruno-api/get_data_status.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postData",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/data",
|
|
"handler": "set_data_status",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor DataConnectionRequest fields [active:bool] (models.rs:234); exact handler backend/src/handlers.rs:2065-2131",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<DataConnectionResponse>; exact handler backend/src/handlers.rs:2065-2131",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:647-649",
|
|
"backend/src/handlers.rs:2065-2131",
|
|
"bruno-api/set_data_status_disable.bru:8",
|
|
"bruno-api/set_data_status_enable.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getRoaming",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/roaming",
|
|
"handler": "get_roaming_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2172-2193",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<RoamingResponse>; exact handler backend/src/handlers.rs:2172-2193",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:653-654",
|
|
"backend/src/handlers.rs:2172-2193",
|
|
"bruno-api/get_roaming_status.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postRoaming",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/roaming",
|
|
"handler": "set_roaming_status_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor RoamingRequest fields [allowed:bool] (models.rs:244); exact handler backend/src/handlers.rs:2196-2247",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<RoamingResponse>; exact handler backend/src/handlers.rs:2196-2247",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:653-655",
|
|
"backend/src/handlers.rs:2196-2247",
|
|
"bruno-api/set_roaming_enable.bru:8",
|
|
"bruno-api/set_roaming_disable.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getAirplaneMode",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/airplane-mode",
|
|
"handler": "get_airplane_mode_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2315-2329",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<AirplaneModeResponse>; exact handler backend/src/handlers.rs:2315-2329",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:659-660",
|
|
"backend/src/handlers.rs:2315-2329",
|
|
"bruno-api/get_airplane_mode.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAirplaneMode",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/airplane-mode",
|
|
"handler": "set_airplane_mode_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor AirplaneModeRequest fields [enabled:bool] (models.rs:255); exact handler backend/src/handlers.rs:2250-2312",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<AirplaneModeResponse>; exact handler backend/src/handlers.rs:2250-2312",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:659-661",
|
|
"backend/src/handlers.rs:2250-2312",
|
|
"bruno-api/set_airplane_mode_disable.bru:8",
|
|
"bruno-api/set_airplane_mode_enable.bru:8"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postBasebandRestart",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/baseband/restart",
|
|
"handler": "restart_baseband_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2133-2159",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<BasebandRestartResponse>; exact handler backend/src/handlers.rs:2133-2159",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:665-666",
|
|
"backend/src/handlers.rs:2133-2159"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getBasebandRestartStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/baseband/restart/status",
|
|
"handler": "get_baseband_restart_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2161-2169",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:2161-2169; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "cellular",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:669-670",
|
|
"backend/src/handlers.rs:2161-2169"
|
|
],
|
|
"upstreamDomain": "data-connection",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getWorkMode",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/work-mode",
|
|
"handler": "get_work_mode_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:352-365",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:352-365; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:674-675",
|
|
"backend/src/handlers.rs:352-365"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postWorkMode",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/work-mode",
|
|
"handler": "set_work_mode_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor WorkModeRequest fields [mode:WorkMode, confirm:bool] (models.rs:57); exact handler backend/src/handlers.rs:368-405",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<WorkModeResponse>; exact handler backend/src/handlers.rs:368-405",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:674-676",
|
|
"backend/src/handlers.rs:368-405"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getEsimConfig",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/esim/config",
|
|
"handler": "get_esim_config_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:456-462",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:456-462; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:680-681",
|
|
"backend/src/handlers.rs:456-462"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postEsimConfig",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/esim/config",
|
|
"handler": "set_esim_config_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:465-482; field shape is implementation evidence only",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:680-682",
|
|
"backend/src/handlers.rs:465-482"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getEsimLpacStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/esim/lpac/status",
|
|
"handler": "get_esim_lpac_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:408-416",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:408-416; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:686-687",
|
|
"backend/src/handlers.rs:408-416"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postEsimLpacRepair",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/esim/lpac/repair",
|
|
"handler": "repair_esim_lpac_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor EsimLpacRepairRequest fields [proxy_prefix:Option<String>, asset_url:Option<String>] (models.rs:153); exact handler backend/src/handlers.rs:419-453",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:419-453; field shape is implementation evidence only",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:690-691",
|
|
"backend/src/handlers.rs:419-453"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getEsimEuicc",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/esim/euicc",
|
|
"handler": "get_esim_euicc_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "query extractor std::collections::HashMap<String, String>; exact exact handler backend/src/handlers.rs:485-521",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:485-521; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:694-695",
|
|
"backend/src/handlers.rs:485-521"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getEsimProfiles",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/esim/profiles",
|
|
"handler": "get_esim_profiles_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "query extractor std::collections::HashMap<String, String>; exact exact handler backend/src/handlers.rs:524-598",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<EsimProfilesResponse>; exact handler backend/src/handlers.rs:524-598",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:698-699",
|
|
"backend/src/handlers.rs:524-598"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postEsimProfiles",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/esim/profiles",
|
|
"handler": "download_esim_profile_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<EsimCommandResponse>; exact handler backend/src/handlers.rs:803-1071",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.matching_id",
|
|
"$.body.confirmation_code",
|
|
"$.body.imei"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:698-700",
|
|
"backend/src/handlers.rs:803-1071"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postEsimProfilesIccidEnable",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/esim/profiles/{iccid}/enable",
|
|
"handler": "enable_esim_profile_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor String; exact handler backend/src/handlers.rs:601-726",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:601-726; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:704-705",
|
|
"backend/src/handlers.rs:601-726"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postEsimProfilesIccidRename",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/esim/profiles/{iccid}/rename",
|
|
"handler": "rename_esim_profile_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor EsimRenameRequest fields [name:String] (models.rs:169); path extractor String; exact handler backend/src/handlers.rs:729-750",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<EsimCommandResponse>; exact handler backend/src/handlers.rs:729-750",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:708-709",
|
|
"backend/src/handlers.rs:729-750"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "deleteEsimProfilesIccid",
|
|
"method": "DELETE",
|
|
"pathTemplate": "/api/esim/profiles/{iccid}",
|
|
"handler": "delete_esim_profile_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor String; exact handler backend/src/handlers.rs:753-780",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:753-780; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "esim",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:712-713",
|
|
"backend/src/handlers.rs:753-780"
|
|
],
|
|
"upstreamDomain": "workmode-esim",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCalls",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/calls",
|
|
"handler": "get_calls_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2634-2655",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CallListResponse>; exact handler backend/src/handlers.rs:2634-2655",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:717-718",
|
|
"backend/src/handlers.rs:2634-2655",
|
|
"bruno-api/get_calls.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallDial",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/dial",
|
|
"handler": "dial_call_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor MakeCallRequest fields [phone_number:String] (models.rs:810); exact handler backend/src/handlers.rs:2657-2689",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2657-2689",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.phone_number"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:721-722",
|
|
"backend/src/handlers.rs:2657-2689",
|
|
"bruno-api/post_call_dial.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallHangup",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/hangup",
|
|
"handler": "hangup_call_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor HangupCallRequest fields [path:String] (models.rs:830); exact handler backend/src/handlers.rs:2691-2725",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2691-2725",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:725-726",
|
|
"backend/src/handlers.rs:2691-2725",
|
|
"bruno-api/post_call_hangup.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallHangupAll",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/hangup-all",
|
|
"handler": "hangup_all_calls_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2727-2760",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2727-2760",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:729-730",
|
|
"backend/src/handlers.rs:2727-2760",
|
|
"bruno-api/post_call_hangup_all.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallAnswer",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/answer",
|
|
"handler": "answer_call_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor HangupCallRequest fields [path:String] (models.rs:830); exact handler backend/src/handlers.rs:2762-2789",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2762-2789",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:733-734",
|
|
"backend/src/handlers.rs:2762-2789",
|
|
"bruno-api/post_call_answer.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCallVolume",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/call/volume",
|
|
"handler": "get_call_volume_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2899-2906",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CallVolumeResponse>; exact handler backend/src/handlers.rs:2899-2906",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:737-738",
|
|
"backend/src/handlers.rs:2899-2906",
|
|
"bruno-api/get_call_volume.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallVolume",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/volume",
|
|
"handler": "set_call_volume_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CallVolumeResponse>; exact handler backend/src/handlers.rs:2908-2922",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:737-739",
|
|
"backend/src/handlers.rs:2908-2922",
|
|
"bruno-api/set_call_volume.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCallForwarding",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/call/forwarding",
|
|
"handler": "get_call_forwarding_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2924-2931",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CallForwardingResponse>; exact handler backend/src/handlers.rs:2924-2931",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:743-744",
|
|
"backend/src/handlers.rs:2924-2931",
|
|
"bruno-api/get_call_forwarding.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallForwarding",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/forwarding",
|
|
"handler": "set_call_forwarding_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor SetCallForwardingRequest fields [forward_type:String, number:String, timeout:Option<u16>] (models.rs:891); exact handler backend/src/handlers.rs:2933-2943",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CallForwardingResponse>; exact handler backend/src/handlers.rs:2933-2943",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.number"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:743-745",
|
|
"backend/src/handlers.rs:2933-2943",
|
|
"bruno-api/set_call_forwarding.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCallSettings",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/call/settings",
|
|
"handler": "get_call_settings_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2852-2866",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CallSettingsResponse>; exact handler backend/src/handlers.rs:2852-2866",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:749-750",
|
|
"backend/src/handlers.rs:2852-2866",
|
|
"bruno-api/get_call_settings.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallSettings",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/settings",
|
|
"handler": "set_call_settings_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor SetCallSettingRequest fields [property:String, value:String] (models.rs:875); exact handler backend/src/handlers.rs:2868-2897",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2868-2897",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:749-751",
|
|
"backend/src/handlers.rs:2868-2897",
|
|
"bruno-api/set_call_settings.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getCallHistory",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/call/history",
|
|
"handler": "get_call_history_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "query extractor CallHistoryRequest fields [limit:i64, offset:i64] (models.rs:835); exact handler backend/src/handlers.rs:2791-2813",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<CallHistoryResponse>>); exact handler backend/src/handlers.rs:2791-2813",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:755-756",
|
|
"backend/src/handlers.rs:2791-2813"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "deleteCallHistoryId",
|
|
"method": "DELETE",
|
|
"pathTemplate": "/api/call/history/{id}",
|
|
"handler": "delete_call_history_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor i64; exact handler backend/src/handlers.rs:2815-2832",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2815-2832",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:759-760",
|
|
"backend/src/handlers.rs:2815-2832",
|
|
"bruno-api/delete_call_history.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postCallHistoryClear",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/call/history/clear",
|
|
"handler": "clear_call_history_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2834-2850",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2834-2850",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:763-764",
|
|
"backend/src/handlers.rs:2834-2850",
|
|
"bruno-api/clear_call_history.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getImsStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/ims/status",
|
|
"handler": "get_ims_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2945-2952",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<ImsStatusResponse>; exact handler backend/src/handlers.rs:2945-2952",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:767-768",
|
|
"backend/src/handlers.rs:2945-2952",
|
|
"bruno-api/get_ims_status.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getVoicemailStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/voicemail/status",
|
|
"handler": "get_voicemail_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2954-2961",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<VoicemailStatusResponse>; exact handler backend/src/handlers.rs:2954-2961",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "calls",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:771-772",
|
|
"backend/src/handlers.rs:2954-2961",
|
|
"bruno-api/get_voicemail_status.bru:8"
|
|
],
|
|
"upstreamDomain": "calls",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postSmsSend",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/sms/send",
|
|
"handler": "send_sms_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor SendSmsRequest fields [phone_number:String, content:String] (models.rs:912); exact handler backend/src/handlers.rs:2373-2404",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:2373-2404",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.phone_number",
|
|
"$.body.content"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:776-777",
|
|
"backend/src/handlers.rs:2373-2404",
|
|
"bruno-api/post_sms_send.bru:8"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getSmsList",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/sms/list",
|
|
"handler": "get_sms_list_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "query extractor SmsListRequest fields [limit:i64, offset:i64, direction:Option<String>] (models.rs:918); exact handler backend/src/handlers.rs:2407-2434",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<SmsListResponse>>); exact handler backend/src/handlers.rs:2407-2434",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:780-781",
|
|
"backend/src/handlers.rs:2407-2434"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getSmsConversation",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/sms/conversation",
|
|
"handler": "get_sms_conversation_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "query extractor SmsConversationRequest fields [phone_number:String, limit:i64] (models.rs:927); exact handler backend/src/handlers.rs:2437-2458",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<SmsListResponse>>); exact handler backend/src/handlers.rs:2437-2458",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.query.phone_number"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:784-785",
|
|
"backend/src/handlers.rs:2437-2458"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getSmsStats",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/sms/stats",
|
|
"handler": "get_sms_stats_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2461-2477",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<SmsStatsResponse>>); exact handler backend/src/handlers.rs:2461-2477",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:788-789",
|
|
"backend/src/handlers.rs:2461-2477",
|
|
"bruno-api/get_sms_stats.bru:8"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postSmsBatchDelete",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/sms/batch-delete",
|
|
"handler": "delete_sms_batch_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor SmsBatchDeleteRequest fields [ids:Vec<i64>, phone_numbers:Vec<String>] (models.rs:934); exact handler backend/src/handlers.rs:2551-2578",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2551-2578",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": true,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.phone_numbers[*]"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:792-793",
|
|
"backend/src/handlers.rs:2551-2578"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "deleteSmsConversationPhoneNumber",
|
|
"method": "DELETE",
|
|
"pathTemplate": "/api/sms/conversation/{phone_number}",
|
|
"handler": "delete_sms_conversation_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor String; exact handler backend/src/handlers.rs:2528-2548",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2528-2548",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.path.phone_number"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:796-797",
|
|
"backend/src/handlers.rs:2528-2548"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "deleteSmsMessageId",
|
|
"method": "DELETE",
|
|
"pathTemplate": "/api/sms/message/{id}",
|
|
"handler": "delete_sms_message_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor i64; exact handler backend/src/handlers.rs:2508-2525",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2508-2525",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:800-801",
|
|
"backend/src/handlers.rs:2508-2525"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postSmsClear",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/sms/clear",
|
|
"handler": "clear_sms_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:2480-2505",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:2480-2505",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "messages",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:804-805",
|
|
"backend/src/handlers.rs:2480-2505",
|
|
"bruno-api/post_sms_clear.bru:8"
|
|
],
|
|
"upstreamDomain": "messages",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getStats",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/stats",
|
|
"handler": "get_system_stats",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3272-3288",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3272-3288; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:808-808",
|
|
"backend/src/handlers.rs:3272-3288",
|
|
"bruno-api/get_stats.bru:8"
|
|
],
|
|
"upstreamDomain": "device-system",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getStatsCpu",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/stats/cpu",
|
|
"handler": "get_cpu_info",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3291-3302",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<CpuInfo>; exact handler backend/src/handlers.rs:3291-3302",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:809-809",
|
|
"backend/src/handlers.rs:3291-3302",
|
|
"bruno-api/get_cpu_info.bru:8"
|
|
],
|
|
"upstreamDomain": "device-system",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getConnectivity",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/connectivity",
|
|
"handler": "get_connectivity_check",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3305-3322",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<ConnectivityCheckResponse>>); exact handler backend/src/handlers.rs:3305-3322",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:811-812",
|
|
"backend/src/handlers.rs:3305-3322"
|
|
],
|
|
"upstreamDomain": "device-system",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postSystemReboot",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/system/reboot",
|
|
"handler": "system_reboot",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor SystemRebootRequest fields [delay_seconds:u32] (models.rs:422); exact handler backend/src/handlers.rs:3381-3406",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3381-3406; field shape is implementation evidence only",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:815-816",
|
|
"backend/src/handlers.rs:3381-3406",
|
|
"bruno-api/post_system_reboot.bru:8"
|
|
],
|
|
"upstreamDomain": "device-system",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postServiceRestart",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/service/restart",
|
|
"handler": "restart_service_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3578-3601",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3578-3601; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "overview",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:819-820",
|
|
"backend/src/handlers.rs:3578-3601"
|
|
],
|
|
"upstreamDomain": "device-system",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNotificationsConfig",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/notifications/config",
|
|
"handler": "get_notification_config_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3641-3652",
|
|
"responseSchemaEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::config::NotificationConfig>>, ); exact handler backend/src/handlers.rs:3641-3652",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.response.data.channels[*].config"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:824-825",
|
|
"backend/src/handlers.rs:3641-3652",
|
|
"bruno-api/get_notification_config.bru:8"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNotificationsConfig",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/notifications/config",
|
|
"handler": "set_notification_config_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3655-3672",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.channels[*].config"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:824-826",
|
|
"backend/src/handlers.rs:3655-3672",
|
|
"bruno-api/set_notification_config.bru:8"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNotificationsTestChannel",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/notifications/test/{channel}",
|
|
"handler": "test_notification_channel_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor String; exact handler backend/src/handlers.rs:3675-3704",
|
|
"responseSchemaEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::models::WebhookTestResponse>>, ); exact handler backend/src/handlers.rs:3675-3704",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:830-831",
|
|
"backend/src/handlers.rs:3675-3704"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNotificationsLogs",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/notifications/logs",
|
|
"handler": "get_notification_logs_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::db::NotificationLogsResponse>>, ); exact handler backend/src/handlers.rs:3709-3734",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:835-836",
|
|
"backend/src/handlers.rs:3709-3734"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNotificationsLogsClear",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/notifications/logs/clear",
|
|
"handler": "clear_notification_logs_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3737-3760",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3737-3760",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:839-840",
|
|
"backend/src/handlers.rs:3737-3760"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getNotificationsQueue",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/notifications/queue",
|
|
"handler": "get_notification_queue_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "query extractor NotificationQueueQuery fields [limit:i64] (notification_queue.rs:14); exact handler backend/src/notification_queue.rs:24-41",
|
|
"responseSchemaEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::db::NotificationQueueResponse>>, ); exact handler backend/src/notification_queue.rs:24-41",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:843-844",
|
|
"backend/src/notification_queue.rs:24-41"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNotificationsQueueRetryAll",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/notifications/queue/retry-all",
|
|
"handler": "retry_all_notification_queue_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/notification_queue.rs:84-100",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:84-100",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:847-848",
|
|
"backend/src/notification_queue.rs:84-100"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNotificationsQueueClear",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/notifications/queue/clear",
|
|
"handler": "clear_notification_queue_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/notification_queue.rs:103-119",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:103-119",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:851-852",
|
|
"backend/src/notification_queue.rs:103-119"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "deleteNotificationsQueueId",
|
|
"method": "DELETE",
|
|
"pathTemplate": "/api/notifications/queue/{id}",
|
|
"handler": "delete_notification_queue_item_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor i64; exact handler backend/src/notification_queue.rs:64-81",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:64-81",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:855-856",
|
|
"backend/src/notification_queue.rs:64-81"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postNotificationsQueueIdRetry",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/notifications/queue/{id}/retry",
|
|
"handler": "retry_notification_queue_item_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor i64; exact handler backend/src/notification_queue.rs:44-61",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/notification_queue.rs:44-61",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "notifications",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:859-860",
|
|
"backend/src/notification_queue.rs:44-61"
|
|
],
|
|
"upstreamDomain": "notifications",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getAutomationConfig",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/automation/config",
|
|
"handler": "get_automation_config_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3968-3979",
|
|
"responseSchemaEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::config::AutomationConfig>>, ); exact handler backend/src/handlers.rs:3968-3979",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.response.data.tasks[*].config"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "automation",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:864-865",
|
|
"backend/src/handlers.rs:3968-3979"
|
|
],
|
|
"upstreamDomain": "automation",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAutomationConfig",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/automation/config",
|
|
"handler": "set_automation_config_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor crate::config::AutomationConfig fields [enabled:bool, tasks:Vec<AutomationTask>] (config.rs:1394); exact handler backend/src/handlers.rs:3982-3999",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:3982-3999",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.tasks[*].config"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "automation",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:864-866",
|
|
"backend/src/handlers.rs:3982-3999"
|
|
],
|
|
"upstreamDomain": "automation",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getAutomationLogs",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/automation/logs",
|
|
"handler": "get_automation_logs_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "Rust return ( StatusCode, Json<ApiResponse<crate::db::AutomationLogsResponse>>, ); exact handler backend/src/handlers.rs:4002-4027",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "automation",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:870-871",
|
|
"backend/src/handlers.rs:4002-4027"
|
|
],
|
|
"upstreamDomain": "automation",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAutomationLogsClear",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/automation/logs/clear",
|
|
"handler": "clear_automation_logs_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:4030-4053",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:4030-4053",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "automation",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:874-875",
|
|
"backend/src/handlers.rs:4030-4053"
|
|
],
|
|
"upstreamDomain": "automation",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAutomationTestTaskId",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/automation/test/{task_id}",
|
|
"handler": "test_automation_task_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "path extractor String; exact handler backend/src/handlers.rs:4056-4146",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<serde_json::Value>>); exact handler backend/src/handlers.rs:4056-4146",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "automation",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:878-879",
|
|
"backend/src/handlers.rs:4056-4146"
|
|
],
|
|
"upstreamDomain": "automation",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getOtaStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/ota/status",
|
|
"handler": "get_ota_status_handler",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3763-3769",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:3763-3769; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "ota",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:882-883",
|
|
"backend/src/handlers.rs:3763-3769",
|
|
"bruno-api/get_ota_status.bru:8"
|
|
],
|
|
"upstreamDomain": "ota",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postOtaUpload",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/ota/upload",
|
|
"handler": "upload_ota_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "bytes extractor axum::body::Bytes; exact exact handler backend/src/handlers.rs:3772-3792",
|
|
"responseSchemaEvidence": "ApiResponse<OtaUploadResponse> success payload/error envelope; success/error payload evidenced by ApiResponse<OtaUploadResponse>; exact handler backend/src/handlers.rs:3772-3792",
|
|
"requestContentType": "application/octet-stream",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "ota",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:886-887",
|
|
"backend/src/handlers.rs:3772-3792"
|
|
],
|
|
"upstreamDomain": "ota",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postOtaLatestRelease",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/ota/latest-release",
|
|
"handler": "get_latest_ota_release_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor crate::models::OtaOnlinePrepareRequest fields [proxy_prefix:Option<String>] (models.rs:986); exact handler backend/src/handlers.rs:3795-3825",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<crate::models::OtaLatestReleaseResponse>; exact handler backend/src/handlers.rs:3795-3825",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "ota",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:892-893",
|
|
"backend/src/handlers.rs:3795-3825"
|
|
],
|
|
"upstreamDomain": "ota",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postOtaOnlinePrepare",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/ota/online-prepare",
|
|
"handler": "prepare_online_ota_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor crate::models::OtaOnlinePrepareRequest fields [proxy_prefix:Option<String>] (models.rs:986); exact handler backend/src/handlers.rs:3828-3889",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<crate::models::OtaUploadResponse>; exact handler backend/src/handlers.rs:3828-3889",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "ota",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:896-897",
|
|
"backend/src/handlers.rs:3828-3889"
|
|
],
|
|
"upstreamDomain": "ota",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postOtaApply",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/ota/apply",
|
|
"handler": "apply_ota_handler",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor crate::models::OtaApplyRequest fields [restart_now:bool] (models.rs:1030); exact handler backend/src/handlers.rs:3892-3911",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:3892-3911",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "non-idempotent",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "ota",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:900-901",
|
|
"backend/src/handlers.rs:3892-3911",
|
|
"bruno-api/post_ota_apply_restart.bru:8",
|
|
"bruno-api/post_ota_apply.bru:8"
|
|
],
|
|
"upstreamDomain": "ota",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postOtaCancel",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/ota/cancel",
|
|
"handler": "cancel_ota_handler",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:3914-3931",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<serde_json::Value>; exact handler backend/src/handlers.rs:3914-3931",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 30000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "ota",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:904-905",
|
|
"backend/src/handlers.rs:3914-3931",
|
|
"bruno-api/post_ota_cancel.bru:8"
|
|
],
|
|
"upstreamDomain": "ota",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAuthPassword",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/auth/password",
|
|
"handler": "auth::change_password",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor ChangePasswordRequest fields [new_password:String] (auth.rs:59); exact handler backend/src/auth.rs:491-553",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:491-553",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.new_password",
|
|
"$.response.headers.set-cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "settings-instance",
|
|
"executionPolicy": "dedicatedFlow",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:908-909",
|
|
"backend/src/auth.rs:491-553",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getAuthSettings",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/auth/settings",
|
|
"handler": "auth::get_settings",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/auth.rs:555-570",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<AuthSettingsResponse>>); exact handler backend/src/auth.rs:555-570",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.request.headers.cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "settings-instance",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:912-913",
|
|
"backend/src/auth.rs:555-570",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAuthSettings",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/auth/settings",
|
|
"handler": "auth::set_settings",
|
|
"capability": "job",
|
|
"riskLevel": "R2",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "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",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:572-640",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "explicit",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.request.headers.cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "settings-instance",
|
|
"executionPolicy": "dedicatedFlow",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:912-914",
|
|
"backend/src/auth.rs:572-640",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getHealth",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/health",
|
|
"handler": "health_check",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/handlers.rs:65-75",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/handlers.rs:65-75; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "instances-new",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:923-923",
|
|
"backend/src/handlers.rs:65-75",
|
|
"bruno-api/get_health.bru:8",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "getAuthStatus",
|
|
"method": "GET",
|
|
"pathTemplate": "/api/auth/status",
|
|
"handler": "auth::status",
|
|
"capability": "query",
|
|
"riskLevel": "R0",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "none; no body/query/path extractor; exact handler backend/src/auth.rs:345-364",
|
|
"responseSchemaEvidence": "Rust return (StatusCode, Json<ApiResponse<AuthStatusResponse>>); exact handler backend/src/auth.rs:345-364",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "safe",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.request.headers.cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "instances-new",
|
|
"executionPolicy": "registeredOperation",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:925-926",
|
|
"backend/src/auth.rs:345-364",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAuthSetup",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/auth/setup",
|
|
"handler": "auth::setup",
|
|
"capability": "job",
|
|
"riskLevel": "R3",
|
|
"sessionSensitive": false,
|
|
"requestSchemaEvidence": "body extractor LoginRequest fields [password:String] (auth.rs:54); exact handler backend/src/auth.rs:366-427",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:366-427",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "strong",
|
|
"batchable": false,
|
|
"syncSafe": false,
|
|
"sensitiveFields": [
|
|
"$.body.password",
|
|
"$.response.headers.set-cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "instances-new",
|
|
"executionPolicy": "dedicatedFlow",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:929-930",
|
|
"backend/src/auth.rs:366-427",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3"
|
|
},
|
|
{
|
|
"operationId": "postAuthLogin",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/auth/login",
|
|
"handler": "auth::login",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": true,
|
|
"requestSchemaEvidence": "body extractor LoginRequest fields [password:String] (auth.rs:54); exact handler backend/src/auth.rs:429-489",
|
|
"responseSchemaEvidence": "success/error payload evidenced by ApiResponse<Value>; exact handler backend/src/auth.rs:429-489",
|
|
"requestContentType": "application/json",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.body.password",
|
|
"$.response.headers.set-cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "instances-new",
|
|
"executionPolicy": "dedicatedFlow",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:933-934",
|
|
"backend/src/auth.rs:429-489",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3",
|
|
"automaticReplay": "forbidden"
|
|
},
|
|
{
|
|
"operationId": "postAuthLogout",
|
|
"method": "POST",
|
|
"pathTemplate": "/api/auth/logout",
|
|
"handler": "auth::logout",
|
|
"capability": "command",
|
|
"riskLevel": "R1",
|
|
"sessionSensitive": true,
|
|
"requestSchemaEvidence": "none body; HeaderMap carries simadmin_session cookie; exact handler backend/src/auth.rs:642-655; cookie name backend/src/auth.rs:43-43",
|
|
"responseSchemaEvidence": "dynamic-json construction in exact handler backend/src/auth.rs:642-655; field shape is implementation evidence only",
|
|
"requestContentType": "none",
|
|
"timeoutMs": 10000,
|
|
"idempotency": "conditional",
|
|
"confirmationPolicy": "none",
|
|
"batchable": false,
|
|
"syncSafe": true,
|
|
"sensitiveFields": [
|
|
"$.request.headers.cookie",
|
|
"$.response.headers.set-cookie"
|
|
],
|
|
"compatibilityAdapter": "none-pinned-commit",
|
|
"uiOwner": "settings-instance",
|
|
"executionPolicy": "dedicatedFlow",
|
|
"sourceEvidence": [
|
|
"backend/src/main.rs:937-938",
|
|
"backend/src/auth.rs:642-655",
|
|
"backend/src/auth.rs:43-43"
|
|
],
|
|
"upstreamDomain": "instances-auth",
|
|
"auditedAtCommit": "58e220411d6599609f0eeda01eb7016e9212f970",
|
|
"responseFixtureStatus": "pending-phase-0.3",
|
|
"automaticReplay": "forbidden"
|
|
}
|
|
] as const;
|
|
|
|
type Direction = 'request' | 'response' | 'path' | 'query' | 'session';
|
|
type SensitiveHint = { symbol?: string; containers?: [string, string, string][]; handlerToken?: string };
|
|
const sensitive = (direction: Direction, path: string, reason: string, redactionMode: 'drop' | 'mask' = 'mask', hint: SensitiveHint = {}) =>
|
|
({ direction, path, reason, redactionMode, hint });
|
|
|
|
/* Paths below are deliberately endpoint-specific. They are review policy layered on top of the
|
|
* mechanically rebuilt source claims; the snapshot proves the anchors exist, not their semantics. */
|
|
const sensitiveSupplements: Record<string, ReturnType<typeof sensitive>[]> = {
|
|
'GET /api/sim': ['iccid','imsi','phone_numbers','sms_center'].map(f => sensitive('response', `$.response.data.${f}`, 'SIM/subscriber identifier', 'mask', { symbol: 'SimInfoResponse' })),
|
|
'POST /api/sim/cache': ['phone_number','sms_center'].map(f => sensitive('request', `$.body.${f}`, 'subscriber contact value')),
|
|
'GET /api/sms/list': [sensitive('response','$.response.data.messages[*].phone_number','message correspondent','mask',{symbol:'SmsMessage',containers:[['SmsListResponse','messages','SmsMessage']]}), sensitive('response','$.response.data.messages[*].content','message body','drop',{symbol:'SmsMessage',containers:[['SmsListResponse','messages','SmsMessage']]})],
|
|
'GET /api/sms/conversation': [sensitive('query','$.query.phone_number','message correspondent','mask',{symbol:'SmsConversationRequest'}), sensitive('response','$.response.data.messages[*].phone_number','message correspondent','mask',{symbol:'SmsMessage',containers:[['SmsListResponse','messages','SmsMessage']]}), sensitive('response','$.response.data.messages[*].content','message body','drop',{symbol:'SmsMessage',containers:[['SmsListResponse','messages','SmsMessage']]})],
|
|
'GET /api/calls': [sensitive('response','$.response.data.calls[*].phone_number','call party','mask',{symbol:'CallInfo',containers:[['CallListResponse','calls','CallInfo']]})],
|
|
'GET /api/call/history': [sensitive('response','$.response.data.records[*].phone_number','call party','mask',{symbol:'CallRecord',containers:[['CallHistoryResponse','records','CallRecord']]})],
|
|
'GET /api/call/forwarding': ['voice_unconditional','voice_busy','voice_no_reply','voice_not_reachable'].map(f=>sensitive('response',`$.response.data.${f}`,'forwarding destination','mask',{symbol:'CallForwardingResponse'})),
|
|
'GET /api/voicemail/status': [sensitive('response','$.response.data.mailbox_number','voicemail number','mask',{symbol:'VoicemailStatusResponse'})],
|
|
'GET /api/apn': [sensitive('response','$.response.data.contexts[*].username','APN credential','drop',{symbol:'ApnContext',containers:[['ApnListResponse','contexts','ApnContext']]}), sensitive('response','$.response.data.contexts[*].password','APN credential','drop',{symbol:'ApnContext',containers:[['ApnListResponse','contexts','ApnContext']]})],
|
|
'GET /api/device-network/wlan/status': ['ssid','ipv4_addresses','ipv6_addresses'].map(f => sensitive('response',`$.response.data.${f}`,'network identifier','mask',{symbol:'WlanStatusResponse'})),
|
|
'POST /api/device-network/wlan/scan': ['ssid','bssid'].map(f => sensitive('response',`$.response.data.networks[*].${f}`,'network identifier','mask',{symbol:'WlanNetwork',containers:[['WlanScanResponse','networks','WlanNetwork']]})),
|
|
'GET /api/device-network/wlan/profiles': [sensitive('response','$.response.data.profiles[*].ssid','network identifier','mask',{symbol:'WlanSavedNetwork',containers:[['WlanProfilesResponse','profiles','WlanSavedNetwork']]})],
|
|
'POST /api/device-network/wlan/connect': [sensitive('request','$.body.ssid','network identifier'), sensitive('request','$.body.password','WLAN credential','drop')],
|
|
'GET /api/esim/euicc': [sensitive('response','$.response.data.eid','eUICC identifier','mask',{symbol:'EsimEuiccInfo'})],
|
|
'GET /api/esim/profiles': [sensitive('response','$.response.data.profiles[*].iccid','eSIM identifier','mask',{symbol:'EsimProfile',containers:[['EsimProfilesResponse','profiles','EsimProfile']]})],
|
|
};
|
|
|
|
function legacySensitive(path: string) {
|
|
const isDrop = /password|secret|token|cookie|content|confirmation_code/i.test(path);
|
|
const direction: Direction = path.startsWith('$.body') ? 'request' : path.startsWith('$.query') ? 'query' :
|
|
path.startsWith('$.path') ? 'path' : /cookie|session/.test(path) ? 'session' : 'response';
|
|
const canonical = path.replace('$.request.headers.', '$.session.').replace('$.response.headers.', '$.session.');
|
|
return sensitive(direction, canonical, isDrop ? 'secret or message content' : 'identifier or address', isDrop ? 'drop' : 'mask');
|
|
}
|
|
|
|
function anchorSensitive(field: ReturnType<typeof sensitive>, operation: any) {
|
|
const modelField = field.path.replace(/\[\*\]/g, '').split('.').at(-1)!;
|
|
const claim = ['request','path','query'].includes(field.direction) ? operation.requestEvidence : operation.responseEvidence;
|
|
const candidates = [...claim.modelEvidence.map((m: any) => m.symbol), ...Object.keys(sensitiveModelEvidence58e2204)];
|
|
const symbol = field.hint.symbol ?? candidates.find(s => (sensitiveModelEvidence58e2204 as any)[s]?.fields?.[modelField]);
|
|
if (symbol) {
|
|
const model = (sensitiveModelEvidence58e2204 as any)[symbol];
|
|
const containerPath = (field.hint.containers ?? []).map(([owner, linkField, targetSymbol]) => ({ ...(sensitiveModelEvidence58e2204 as any)[owner], field: linkField, targetSymbol }));
|
|
return { ...field, sourceAnchor: { symbol, sourceSha256: model.sourceSha256 }, evidence: { ...model, modelField, fieldPath: field.path, containerPath } };
|
|
}
|
|
if (field.direction === 'session') {
|
|
const sessionEvidence = { sourceFile: 'backend/src/auth.rs', startLine: 43, endLine: 43, sourceSha256: 'b5bc3eefe0f9312882f59ddacf3a062064fdd90e448e5022b81d9ba940a9d266', symbol: 'SESSION_COOKIE', fieldPath: field.path, handlerToken: 'simadmin_session' };
|
|
return { ...field, sourceAnchor: { symbol: 'SESSION_COOKIE', sourceSha256: sessionEvidence.sourceSha256 }, evidence: sessionEvidence };
|
|
}
|
|
const fallbackToken = modelField;
|
|
return { ...field, sourceAnchor: { symbol: operation.handler, sourceSha256: claim.sourceSha256 }, evidence: { sourceFile: claim.sourceFile, startLine: claim.startLine, endLine: claim.endLine, sourceSha256: claim.sourceSha256, symbol: operation.handler, fieldPath: field.path, handlerToken: field.hint.handlerToken ?? fallbackToken } };
|
|
}
|
|
|
|
export const upstream58e2204Operations = rawUpstream58e2204Operations.map(operation => {
|
|
const route = `${operation.method} ${operation.pathTemplate}`;
|
|
const evidence = structuredEvidence58e2204[route as keyof typeof structuredEvidence58e2204];
|
|
const merged = [...operation.sensitiveFields.map(legacySensitive), ...(sensitiveSupplements[route] ?? [])]
|
|
.filter(field => !(route === 'GET /api/apn' && field.path.startsWith('$.body.')))
|
|
.filter(field => !(route === 'GET /api/device-network/wlan/profiles' && field.path === '$.response.data[*].ssid'))
|
|
.filter(field => !(route === 'POST /api/device-network/wlan/profile' && field.path.endsWith('.credentials')));
|
|
const unique = [...new Map(merged.map(field => [`${field.direction}:${field.path}`, field])).values()];
|
|
const withEvidence = { ...operation, ...evidence };
|
|
return { ...withEvidence, semanticBindingReview: 'reviewed-phase-0.2', sensitiveFields: unique.map(field => anchorSensitive(field, withEvidence)) };
|
|
});
|