---
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 `WSLogging` 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".

| Field | Value |
| --- | --- |
| **Service** | `WSLogging` (`clsWSLogging` ASMX class) |
| **WSDL document** | `Services/SAIF.Services.Web.Proxies/Service References/Logging/clsWSLogging.wsdl` |
| **SOAP namespace** | `http://tempuri.org/SAIF/Logging/clsWSLogging` |
| **Port type / binding name** | `clsWSLoggingSoap` |
| **Binding** | SOAP 1.1 (`clsWSLoggingSoap`) and SOAP 1.2 (`clsWSLoggingSoap12`) both declared |
| **Encoding style** | Document / Literal |
| **Parameter style** | Wrapped |
| **Operations declared** | 3 |

The SOAP namespace is left at the generator default (`http://tempuri.org/...`) with a SAIF-specific path segment appended, rather than a fully-owned namespace — see [Tech debt](tech-debt.md).

## Contract source

This contract is documented from the WSDL captured at `Services/SAIF.Services.Web.Proxies/Service References/Logging/clsWSLogging.wsdl`, which declares the `clsWSLogging` service, the `clsWSLoggingSoap` port type, and both the SOAP 1.1 and SOAP 1.2 bindings summarized in the identity table above. `Reference.cs` is generated from this WSDL and is used only to confirm the type and operation names it declares, per the generated-code doctrine on [Client index](index.md).

## Operations

| Operation | SOAP action | Input message | Output message | Faults | Called in this repository |
| --- | --- | --- | --- | --- | --- |
| `WriteTrace` | `http://tempuri.org/SAIF/Logging/clsWSLogging/WriteTrace` | `TraceInfoStruct inTrace` | empty (`WriteTraceResponse`) | None declared | No |
| `WriteError` | `http://tempuri.org/SAIF/Logging/clsWSLogging/WriteError` | `ErrorInfoStruct inError` | empty (`WriteErrorResponse`) | None declared | Yes — [details](reference.md#writeerror) |
| `WriteAudit` | `http://tempuri.org/SAIF/Logging/clsWSLogging/WriteAudit` | `AuditInfoStruct inAudit` | empty (`WriteAuditResponse`) | None declared | No |

## Messages and types

| Type | Kind | Members | Used by |
| --- | --- | --- | --- |
| `TraceInfoStruct` | Complex type | `ApplicationName`, `AssemblyName`, `ClassName`, `DataText`, `Environment`, `MachineName`, `MethodName`, `MethodPosition`, `PageName`, `TraceDate` (`dateTime`, required), `TraceID`, `UserName` | `WriteTrace` |
| `ErrorInfoStruct` | Complex type | `ApplicationName`, `Environment`, `ErrorDate` (`dateTime`, required), `ExceptionInfo`, `ExceptionSource`, `MachineName`, `PageName`, `StateInfo`, `Username` | `WriteError` |
| `AuditInfoStruct` | Complex type | `ApplicationName`, `AuditDate` (`dateTime`, required), `DataText`, `Environment`, `MachineName`, `MessageText`, `PageName`, `UserName` | `WriteAudit` |

### ErrorInfoStruct

| Member | Type | Required | Purpose |
| --- | --- | --- | --- |
| `ApplicationName` | `string` | Not stated in the WSDL | The logical application name — hard-coded to `"EnvironmentApi"` by this repository's call site |
| `Environment` | `string` | Not stated in the WSDL | The deployment track — hard-coded to `"NetProd"` by this repository's call site regardless of the actual track, see [BR-LOG-001](business-rules.md#br-log-001-environment-is-hard-coded-to-netprod) |
| `ErrorDate` | `dateTime` | Yes | The moment the exception was captured |
| `ExceptionInfo` | `string` | Not stated in the WSDL | The formatted exception message and stack trace |
| `ExceptionSource` | `string` | Not stated in the WSDL | Always an empty string at this call site |
| `MachineName` | `string` | Not stated in the WSDL | `Environment.MachineName` of the process |
| `PageName` | `string` | Not stated in the WSDL | Derived from the failing request's URI |
| `StateInfo` | `string` | Not stated in the WSDL | The full request URI, prefixed `"Uri = "` |
| `Username` | `string` | Not stated in the WSDL | `context.RequestContext.Principal.Identity.Name` |

`TraceInfoStruct` and `AuditInfoStruct` are declared in the WSDL but neither is populated by any call site in this repository; their members are recorded here for completeness only.

## Faults

The WSDL declares no faults. A failure reaches this repository as a generic SOAP fault surfaced by the proxy; see [Consumption](consumption.md) for how the call sites handle it.

## Binding details

| Aspect | Value |
| --- | --- |
| Transport | HTTP |
| Message version | SOAP 1.1 (as configured; SOAP 1.2 is also declared) |
| Security mode | None declared in the WSDL — set in code as `None`, see [Architecture](architecture.md) |
| Declared message size limits | None declared in the WSDL |

## Contract drift risk

| Aspect | Finding |
| --- | --- |
| WSDL captured at | Not determined from source |
| Live service documented by this run | No |
| Verification possible | No — the remote `WSLogging` service is outside this run's scope and its live contract cannot be compared |
| Consequence of drift | A remote change to `WriteError` would not be detected until an error-logging call fails, and that failure is itself swallowed silently at the call site |

## 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)
- [Business rules](business-rules.md)
- [Tech debt](tech-debt.md)

## Sources
- `Services/SAIF.Services.Web.Proxies/Service References/Logging/clsWSLogging.wsdl`
- `Services/SAIF.Services.Web.Proxies/Service References/Logging/Reference.cs`
