---
title: CallRexServiceProxy
summary: API reference for CallRexServiceProxy.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-15
library: SAIF.Application.Services.AudioVideo.32
reference_type: package
---

# CallRexServiceProxy

`CallRexServiceProxy` wraps the generated WCF client `Core.ThirdParty.CallRex.ClientServiceClient`, providing the recording retrieval and control operations that [CallRecordingSystem](../saif-services-utilities-audiovideo/CallRecordingSystem.md) delegates to; see [CallRex WCF proxy operations](../../operations/callrex-wcf-proxy-operations.md).

## Purpose
- Authenticates against the CallRex `ClientService` WCF endpoint (`http://localhost:8002/ClientService` in `app.config`) and attaches SOAP authorization headers to every state-changing call.
- Exposes recording retrieval (`GetAllRecordings`, `GetRecordings`, `GetRecording`), user retrieval (`GetUsers`), and recording control operations (`MarkInvalid`, `DeleteRecording`, start/stop/pause/resume).

## Context
- Namespace: `SAIF.Services.ClientProxies.ThirdParty`
- Assembly/package: `SAIF.Application.Services.AudioVideo.32`
- Implements: `IDisposable`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| CallRexServiceProxy(...) | `CallRexServiceProxy(string serviceUrl, IEnvironmentService environmentService, ILogService logService)` | Constructs the proxy and eagerly calls `_webService.Login("AI", "AudioImporter")` against the configured endpoint. |
| MarkInvalid | `void MarkInvalid(CallRecording recording)` | Calls the CallRex `UpdateAttachedDataByCallLogID` SOAP operation, setting `Description = "Invalid:" + recording.Description`. |
| DeleteRecording | `bool DeleteRecording(Guid recordingId)` | Calls `_webService.DeleteRecording(...)`; required to succeed for [Import call recording](../../operations/import-call-recording.md) to complete ([BR-AV-17](../../business-rules.md#br-av-17-callrex-deletion-required-for-import-completion)). |
| GetAllRecordings | `IEnumerable<CallRecording> GetAllRecordings()` | Retrieves every recording known to CallRex.* |
| GetRecordings(Guid) | `IEnumerable<CallRecording> GetRecordings(Guid userId)` | Retrieves recordings for a specific CallRex user.* |
| GetRecording(Guid) | `CallRecording GetRecording(Guid recordingId)` | Retrieves a single recording by ID. |
| GetUsers | `IEnumerable<CallUser> GetUsers()` | Retrieves all [CallUser](../saif-core-contracts-audiovideo/CallUser.md) records known to CallRex.* |
| StartRecording | `void StartRecording(...)` | Starts recording a call, wrapped in `AuthorizeClientServiceCall`.* |
| StopRecording | `void StopRecording(...)` | Stops recording a call, wrapped in `AuthorizeClientServiceCall`.* |
| PauseRecording | `void PauseRecording(...)` | Pauses an in-progress recording, wrapped in `AuthorizeClientServiceCall`.* |
| ResumeRecording | `void ResumeRecording(...)` | Resumes a paused recording, wrapped in `AuthorizeClientServiceCall`.* |
| Dispose | `void Dispose()` | Closes the underlying WCF client channel. |

## Behavioral notes
- All state-changing calls (`MarkInvalid`, `DeleteRecording`, `StartRecording`, `StopRecording`, `PauseRecording`, `ResumeRecording`) are wrapped in `AuthorizeClientServiceCall`, which adds custom SOAP headers `Username`/`Password` (hard-coded service-account credentials) to every outgoing message via `OperationContextScope`. This is a documented configuration/credential-management risk — see [Configuration](../../configuration.md).
- The endpoint identity is the SPN `qmssvc@corp.saif.com`, configured in `app.config`.

## Constraints and usage notes
- Construction eagerly performs a login SOAP call; a proxy instance should not be constructed unless the endpoint is reachable and expected to be used immediately.*

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs`
- `Application\SAIF.Application.Services.AudioVideo.32\app.config`
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\AudioVideoService.cs`
