---
title: Client reference
summary: Complete reference for every contract operation this repository calls.
status: draft
owner: SAIF.Core documentation
last_reviewed: 2026-09-24
---

# Client reference

This page documents every operation of `SAIFFaxService` that repository source actually calls through `FaxServiceSoapClient`.

---

## Send

Sends a single fax by posting a document path, a recipient name, and a fax number to the remote fax service.

| Field | Value |
| --- | --- |
| **Operation** | `Send` |
| **SOAP action** | `http://www.saif.com/Send` |
| **Proxy member** | `void Send(FaxInfo FaxJob)` |
| **Input message** | `FaxInfo` |
| **Output message** | None — one-way |
| **Declared faults** | None declared |
| **Called by** | `FaxServiceProxy.SendFax(FaxRecipient message, string fullFilePath)` (`Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs:34-44`), reached from `SAIF.Services.WCF.Services.FaxService.SendFax` (`Services/SAIF.Services.WCF/Services/FaxService.cs:42`) |
| **Source** | `Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs:43` |

### Input message

| Part | Type | Required | Bound from | Purpose |
| --- | --- | --- | --- | --- |
| `Attachment` | `string` | No | `fullFilePath` parameter | A UNC-style temp-folder path to the fax document content* |
| `ToFaxNumber` | `string` | No | `message.FaxNumber` | The recipient's fax number |
| `ToName` | `string` | No | `message.RecipientName` | The recipient's name |
| `CoverSheetNote` | `string` | No | Not set | Not populated by this call site |
| `ToCompanyName` | `string` | No | Not set | Not populated by this call site |
| `ToVoiceNumber` | `string` | No | Not set | Not populated by this call site |

### Output message

This operation declares no output message.

### Faults

| Fault | Surfaces as | Handled at the call site |
| --- | --- | --- |
| Generic SOAP fault | `FaultException` / `CommunicationException` / `TimeoutException` | Not handled — the exception propagates |

### Call site

```csharp
webService.Send(new FaxInfo
{
    Attachment = fullFilePath,
    ToFaxNumber = message.FaxNumber,
    ToName = message.RecipientName
});
```

The upstream caller builds `fullFilePath` as `faxTempStorageFolder + Guid.NewGuid().ToString()`, writes the document there via `FileService.WriteFile` before the loop, and calls `Send` once per recipient in `config.Recipients`, sequentially.

| Aspect | Finding |
| --- | --- |
| Invocation frequency | Once per recipient, per fax request |
| Result cached | No |
| Timeout at this call site | None — binding defaults apply |
| Retry at this call site | None |

### Notes
- A failure mid-loop leaves earlier recipients faxed and later ones not, with no indication in the response of which recipients succeeded*.
- The upstream caller deletes the temp file after the loop completes; if any `Send` call throws, the delete is skipped and the temp file is orphaned in the shared temp folder*.

---

## Coverage checklist

| Operation | Documented section | Called by |
| --- | --- | --- |
| `Send` | [`Send`](#send) | `FaxServiceProxy.SendFax` |

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

> **Note:** Statements marked with `*` were inferred from code structure or contextual
> evidence.

## Sources
- `Services/SAIF.Services.Web.Proxies/Service References/Fax/faxservice.wsdl`
- `Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs`
- `Services/SAIF.Services.WCF/Services/FaxService.cs`
