# API Implementation Status

This document tracks the implementation status of gRPC endpoints from `radiensserver` and `allegoserver` within the `radiens-core-python` clients. It identifies implemented methods, pending tasks, and endpoints that are intentionally excluded.

## AllegoClient (Real-Time)

`AllegoClient` is the primary interface for real-time data acquisition.

### Implemented

- **Lifecycle:** `healthcheck`
- **System State:** `get_status` (BackboneStatus), `restart`, `set_stream_state`, `set_record_state`
- **Configuration:** `get_recording_config`, `set_recording_config`
- **Data Retrieval:** `get_signals` (via HDSnapshot), `get_channel_metadata` (via SignalGroup)
- **Stimulation:** `get_stim_params`, `set_stim_params`, `get_stim_step`, `set_stim_step`, `manual_stim_trigger`, `manual_stim_trigger_toggle`
- **Triggers:** `get_trigger_state`, `set_trigger_state`

### Pending Implementation

- **Analog Output (DAC) Control:** `setDACStream`, `setDACOff`, `setDACGain`, `setDACHighPass`, `getDACReg`
- **Digital Output (DIO) Control:** `setDIOEvents`, `setDIOManual`, `setDIOGated`, `setDIOPulse`, `getDIOReg`
- **Hardware Diagnostics:** `getIntanImpedance`, `scanPorts`
- **Core Config:** `setConfigCore`, `getConfig` (for global hardware settings like sample rate)
- **Real-time DSP:** `setDSPGroup`, `getDSPGroup`
- **Metrics (KPI):** `kpiGetMetrics` (streaming real-time metrics)
- **Spike Sorting (Biointerface):** `spikeSorterSetParam`, `spikeSorterGetParam`, `spikesGetSpikesDense`, `spikesGetNeurons`
- **Neuropixels (Sinaps):** `loadAllMosi`, `transmitMosi`, `readWireOut`, `getSinapsStatusRegisters`, `flashSinaps`

---

## VidereClient (Offline)

`VidereClient` provides access to recorded data files via `radiensserver`.

### Implemented

- **Lifecycle:** `healthcheck`
- **Data Loading:** `link_data_file` (set_datasource)
- **Data Retrieval:** `get_signals` (via HDSnapshotPy)

### Pending Implementation

- **Spike Data:** `spikesGetSpikesDense`, `spikesGetNeurons`, `getSpikeTrainAnalytic`, `spikesGetSpec`
- **Data Management:** `clearDataSource`, `listDataSource`, `exportDatasource`
- **Filtering:** `setDSPGroup`, `getDSPGroup`
- **Metrics:** `kpiGetMetrics`, `kpiRecalculate`
- **Hardware Playback:** `setDACStream`, `setDACOff` (routing file data to physical DAC)

---

## CurateClient (Processing)

`CurateClient` manages data transformation pipelines (Protocols).

### Implemented

- **Lifecycle:** `healthcheck`
- **Data Loading:** `link_data_file`
- **Transforms:** `slice_time`, `downsample`

### Pending Implementation

- **Additional Transforms:**
  - **Filtering:** `HighLowPass`, `Band`, `Notch`
  - **Re-referencing:** `CAR`, `VirtualRef`, `PairedRef`
  - **Channel Selection:** `slice_channels`
  - **Batching:** `BulkDataSource`, `BulkDataSink`
- **Protocol Management:** `applyProtocol` (generic execution), `setProtocol`, `getProtocol`, `getAllProtocols`
- **Remote Filesystem:** `listDirectory`, `copyDataSourceFile`, `moveDataSourceFile`, `removeDataSourceFile`

---

## Intentionally Excluded Endpoints

The following endpoints are used by the `allego-electron` frontend for UI and session management and are not planned for the Python client:

- **UI/Layout:** `workspaceControl`, `getWorkspace`, `getOrCreateEventViewer`, `updateEventViewer`, `listEventViewerEvents`, `getEventViewerEvent`, `listEventViewers`.
- **App Lifecycle:** `launchSummaService`, `getStartupStatus`, `close` (process termination), `getRadixEnvironment`, `clientConnect`, `clientDisconnect`.
- **Licensing/Telemetry:** `featureStart`, `featureStop`, `getPrivacy`, `setPrivacy`, `getOfflineLicenseStatus`.
- **Frontend Optimization:** `getStatusPollFieldsToUpdate`.
