---
title: Look up recording information
summary: Queries the RECORDING table for a previously imported recording and maps it to the RecordingInfo contract.
status: draft
owner: <owner>
last_reviewed: 2026-09-15
library: SAIF.Application.Services.AudioVideo
reference_type: package
operation_id: OP-AV-04
trigger: External caller invokes IAudioVideoService.GetRecordingInfo with a call recording ID
---

# Look up recording information

This operation retrieves a previously imported recording's persisted metadata by its vendor `CallRexId`.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-AV-04 |
| **Trigger** | External caller invokes `IAudioVideoService.GetRecordingInfo(Guid callRecordingId)`. |
| **Inputs** | `Guid callRecordingId` |
| **Outputs** | `RecordingInfo`, or `null` if no matching recording is found. |
| **Primary components** | `AudioVideoService.GetRecordingInfo` |
| **Entry point** | `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\AudioVideoService.cs` |

## Steps

1. Guard: throw `NotImplementedException` if the service was constructed via the degraded constructor (`_enableServicesFlag == false`).
2. Look up the recording via private `GetRecording(callRecordingId)` — the same `IRepository<Recording>.Query().FirstOrDefault(x => x.CallRexId == callRecordingId.ToString())` query used in [Import a call recording from CallRex](import-recording.md).
3. Map the `Recording` entity to the `RecordingInfo` contract via a private overload, or return `null` if no matching row was found.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([GetRecordingInfo invoked]) --> Guard{Degraded mode?}
	Guard -->|Yes| ErrNotImpl([NotImplementedException])
	Guard -->|No| Query[Query RECORDING by CallRexId]
	Query -->|Found| Map[Map to RecordingInfo]
	Query -->|Not found| Null([Return null])
	Map --> Return([Return RecordingInfo])
```

## Failure and edge-case behavior
- Degraded-mode construction blocks this operation entirely with `NotImplementedException`.
- No matching recording returns `null` rather than throwing.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)

## Sources
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\AudioVideoService.cs`
