---
title: Contract
summary: The WSDL-declared operations, message types, faults, and binding of the called service.
status: draft
owner: SAIF.Core documentation
last_reviewed: 2026-09-24
---

# Contract

This page documents the contract of `ClientService` as the WSDL declares it. It is the page a reader uses to answer "what can this service be asked to do, and in what shape" — not what this repository actually calls, since it calls none of it (see [Operation map](operation-map.md)).

| Field | Value |
| --- | --- |
| **Service** | `ClientService` |
| **WSDL document** | `Services/SAIF.Services.Web.Proxies/Service References/CallRex/service.wsdl` |
| **SOAP namespace** | `http://tempuri.org/` |
| **Port type / binding name** | `IClientService` (160 operations), `IClientAccessPolicy` (1 operation) |
| **Binding** | `CustomBinding_IClientService`, of type `IClientService`, SOAP 1.2 with WS-Addressing |
| **Encoding style** | WCF binary message encoding (`msb:BinaryEncoding`) |
| **Parameter style** | Wrapped |
| **Operations declared** | 161 |

## Declared operations

The full 160-operation `IClientService` surface plus the single `IClientAccessPolicy` operation, grouped by functional area. None is called from repository source (see [Operation map](operation-map.md) for the per-operation reconciliation).

| Area | Operations |
| --- | --- |
| System / licensing | `GetGeneralSettings`, `UpdateGeneralSettings`, `GetLicenseList`, `InvalidateLicenseList`, `GetServerToken`, `SetLicenseKey`, `GetIsCallCenter`, `GetEncryptionInfo`, `SetNewEncryptionKey` |
| Authentication / users | `Login`, `LoginUsingWinAuthentication`, `ChangePassword`, `GetUserList`, `AddUser`, `UpdateUser`, `DeleteUser`, `GetUserDetails`, `GetAllUserDetails`, `GetUserSecurityProfile`, `GetUserPreferences`, `SetUserPreferences`, `SetUserPreference`, `GetUserMonitorInfo` |
| Supervision scope | `GetManagedUserListForUser`, `GetNonManagedUserListForUser`, `AddManagedUsers`, `RemoveManagedUsers`, `GetManagedDepartmentListForUser`, `GetNonManagedDepartmentListForUser`, `GetManagedLocationListForUser`, `GetNonManagedLocationListForUser`, `AddManagedDepartment`, `RemoveManagedDepartment`, `AddManagedDepartments`, `RemoveManagedDepartments`, `AddManagedLocation`, `RemoveManagedLocation`, `AddManagedLocations`, `RemoveManagedLocations`, `GetSearchableUserListForUser`, `GetSubordinatesList`, `GetLocationList`, `GetDepartmentList`, `GetPbxList`, `DiscoverADPath` |
| Recordings (call) | `GetRecordedCalls`, `GetRecordedMedia`, `GetRecordedMediaByID`, `GetRecordedCallChain`, `GetCurrentCallByUserID`, `GetSearchableRecordedMediaTypesForUser`, `IsRecordingValid`, `DeleteRecording`, `DeleteRecordings`, `StartOnDemandRecording`, `StopOnDemandRecording`, `PauseOnDemandRecording`, `ResumeOnDemandRecording`, `GetExpiredCallRecording`, `GetAttachedDataByCallLogID`, `UpdateAttachedDataByCallLogID` |
| Recordings (screen / computer) | `GetComputerRecordings`, `GetComputerRecordingUserDetails`, `CheckAvailabilityForComputerMonitoring`, `PrepareComputerRecordingForStream`, `ReleaseComputerRecordingStreamResources`, `StartOnDemandScreenRecording`, `StopOnDemandScreenRecording`, `PauseOnDemandScreenRecording`, `ResumeOnDemandScreenRecording`, `GetExpiredComputerRecording`, `GetComputerRecordingDeployments`, `RemoveComputerRecordingDeployment`, `GetAttachedDataByScreenRecordingID`, `UpdateAttachedDataByScreenRecordingID` |
| File transfer | `GetFileTransferAddress`, `GetPermissibleFileTransferAddress`, `GetZippedFilesTransferAddress`, `GetZippedMediaFilesTransferAddress`, `GetZippedComputerRecordingFilesTransferAddress`, `GetMergedWavFilesTransferAddress`, `GetMergedWavFilesTransferAddressViaRecording` |
| Archiving / data sources | `GetArchiveList`, `GetArchiveTasks`, `UpdateArchiveTask`, `AddArchiveTask`, `GetRemoteDataSources`, `AddRemoteDataSource`, `GetArchiveSourceDataSources`, `GetCallRecordingServiceList` |
| Quality evaluation | `GetEvaluatorsList`, `GetEvaluations`, `GetEvaluation`, `DeleteEvaluation`, `SaveEvaluation`, `GetScorecards`, `GetScorecardCategories`, `GetQuestionCategories`, `GetQuestionsPerCategory`, `GetQuestionsPerScorecard`, `AddCategory`, `UpdateCategory`, `UpdateScorecard`, `AddQuestionCategory`, `AddQuestionCategories`, `AddQuestion`, `AddQuestions`, `AddScorecard`, `GetAgentEvalRecordedMedia`, `BlockAgentEvalCall`, `BlockAgentEvalScreenRecording` |
| Flags / saved searches | `GetSearchableFlagsForUser`, `GetFlagsListForUser`, `AddFlag`, `UpdateFlag`, `DeleteFlag`, `AddSavedSearch`, `UpdateSavedSearch`, `DeleteSavedSearch`, `GetSavedSearch`, `GetSavedSearchList` |
| Reporting / audit | `GetCallCounts`, `GetRenderedReport`, `GetRenderedReportForDashboard`, `GetSavedReportListComplete`, `GetSavedReportList`, `AddSavedReport`, `UpdateSavedReport`, `DeleteSavedReport`, `GetSavedReport`, `GetReportList`, `GetAuditLogList`, `GetAuditActionTypeList`, `AddAuditLog` |
| Profiles | `GetProfileMemberList`, `GetProfileNonMemberList`, `AddUsersToProfile`, `RemoveUsersFromProfile`, `GetSecurityProfileList`, `GetSecurityProfileDetails`, `AddSecurityProfile`, `UpdateSecurityProfile`, `DeleteSecurityProfile`, `GetCallRecordingProfileList`, `GetCallRecordingProfile`, `AddCallRecordingProfile`, `UpdateCallRecordingProfile`, `DeleteCallRecordingProfile`, `SetDefaultCallRecordingProfile`, `GetScreenRecordingProfileList`, `GetScreenRecordingProfile`, `AddScreenRecordingProfile`, `UpdateScreenRecordingProfile`, `DeleteScreenRecordingProfile`, `SetDefaultScreenRecordingProfile` |
| Service management | `GetServiceList`, `GetService`, `AddService`, `UpdateService`, `DeleteService` |
| `IClientAccessPolicy` | `GetPolicy` (Silverlight cross-domain policy endpoint*) |

Full per-operation signatures, including message part names, are in `Services/SAIF.Services.Web.Proxies/Service References/CallRex/service.xsd`; they are not reproduced here because none is called (see [Operation map](operation-map.md)).

## Message types

Not documented in detail — no repository source populates or reads any complex type on this contract, because no operation is called. `service.wsdl`/`service.xsd` remain the authoritative source for their shape.

## Faults

| Fault | Declared on | Detail type | Meaning |
| --- | --- | --- | --- |
| `EndpointNotFoundFault`, `RecordingIsArchivedFault`, `InvalidDataSourceFault` | `IsRecordingValid` | `DataService` schema types | Recording lookup failures |
| `AccessDeniedFault`, `InvalidLoginFault`, `UserLicenseRequiredFault` | `SetNewEncryptionKey`, `Login`, `LoginUsingWinAuthentication` | `DataService` schema types | Authentication/authorization failures |
| `RecordNotFoundFault` | `GetPermissibleFileTransferAddress` | `DataService` schema types | Missing record |
| `InvalidLoginFault` | `ChangePassword` | `DataService` schema types | Authentication failure |
| `DuplicateExtensionFault`, `InvalidOrBlankExtensionFault`, `DuplicateSipUriFault`, `DuplicateUsernameFault`, `LicenseViolationFault`, `DuplicateDeviceAddressFault`, `InvalidUserIdFault` | `AddUser`, `UpdateUser` | `DataService` schema types | User provisioning conflicts |
| `CantDeleteUserLoggedInAsFault` | `DeleteUser` | `DataService` schema types | Cannot delete the active session's own user |
| `ProfileNotDeletableFault`, `ProfileInUseFault` | `DeleteSecurityProfile`, `DeleteCallRecordingProfile` | `DataService` schema types | Profile still referenced |

## Binding details

| Aspect | Value |
| --- | --- |
| Transport | HTTP |
| Message version | SOAP 1.2 with WS-Addressing |
| Security mode | Transport-level NTLM authentication (`httpTransport authenticationScheme="Ntlm"`); no message security |
| Declared message size limits | None declared in the WSDL — see [Architecture](architecture.md) for the configured (unused) binding |

## Contract drift risk

| Aspect | Finding |
| --- | --- |
| WSDL captured at | Not determined from source |
| Live service documented by this run | No |
| Verification possible | Not from this repository — the remote `ClientService` is outside this run's scope |
| Consequence of drift | None inside this repository today, because nothing calls it; any future consumer would need to re-validate the captured contract against the live CallRex server |

## Related documentation
- [Client index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Operation map](operation-map.md)
- [Client reference](reference.md)
- [Consumption](consumption.md)
- [Dependencies](dependencies.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- `Services/SAIF.Services.Web.Proxies/Service References/CallRex/service.wsdl`
- `Services/SAIF.Services.Web.Proxies/Service References/CallRex/service.xsd`
- `Services/SAIF.Services.Web.Proxies/Service References/CallRex/Reference.cs`
