---
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 `clsADServices` 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** | `clsADServices` |
| **WSDL document** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |
| **SOAP namespace** | `http://tempuri.org/ADWebService/Service1` |
| **Port type / binding name** | `clsADServicesSoap` |
| **Binding** | SOAP 1.1 over HTTP (the proxy uses `clsADServicesSoap`; the WSDL also declares `clsADServicesSoap12`, `clsADServicesHttpGet`, and `clsADServicesHttpPost`) |
| **Encoding style** | `Document` / `Literal`, wrapped |
| **Parameter style** | `Wrapped` |
| **Operations declared** | 20 |

## Declared operations

| Operation | SOAP action | Input message | Output message | Faults | Called in this repository |
| --- | --- | --- | --- | --- | --- |
| `GetDefaultPrinter` | `http://tempuri.org/ADWebService/Service1/GetDefaultPrinter` | `string mailid` | `string GetDefaultPrinterResult` | None declared | Yes — [details](reference.md#getdefaultprinter) |
| `GetLastLogon` | `http://tempuri.org/ADWebService/Service1/GetLastLogon` | `string mailid`, `domain` | `dateTime GetLastLogonResult` | None declared | No |
| `GetIDNumber` | `http://tempuri.org/ADWebService/Service1/GetIDNumber` | `string mailid`, `domain` | `string` | None declared | No |
| `GetPaymentPassword` | `http://tempuri.org/ADWebService/Service1/GetPaymentPassword` | `string mailid`, `domain` | `string` | None declared | No |
| `GetAccountsByIDNumber` | `http://tempuri.org/ADWebService/Service1/GetAccountsByIDNumber` | `string IDNumber` | `ArrayOfAnyType` | None declared | No |
| `GetEMailAddress` | `http://tempuri.org/ADWebService/Service1/GetEMailAddress` | `string mailid`, `domain` | `string` | None declared | No |
| `GetFaxNumber` | `http://tempuri.org/ADWebService/Service1/GetFaxNumber` | `string mailid`, `domain` | `string` | None declared | No |
| `HasAccess` | `http://tempuri.org/ADWebService/Service1/HasAccess` | `string mailid`, `resourcename` | `boolean` | None declared | No |
| `HasAccessExternal` | `http://tempuri.org/ADWebService/Service1/HasAccessExternal` | `string mailid`, `resourcename` | `boolean` | None declared | No |
| `HasAccessCache` | `http://tempuri.org/ADWebService/Service1/HasAccessCache` | `string mailid`, `resourcename` | `boolean` | None declared | Yes — [details](reference.md#hasaccesscache) |
| `WhoHasAccessCache` | `http://tempuri.org/ADWebService/Service1/WhoHasAccessCache` | `string resourcename` | `ArrayOfAnyType` | None declared | No |
| `HasAccessCacheExternal` | `http://tempuri.org/ADWebService/Service1/HasAccessCacheExternal` | `string mailid`, `resourcename` | `boolean` | None declared | Yes — [details](reference.md#hasaccesscacheexternal) |
| `ResourceCached` | `http://tempuri.org/ADWebService/Service1/ResourceCached` | `string resourcename` | `boolean` | None declared | No |
| `GetUserInfo` | `http://tempuri.org/ADWebService/Service1/GetUserInfo` | `string inMailid` | `USERINFOSTRUCT` | None declared | Yes — [details](reference.md#getuserinfo) |
| `GetUserInfoExternal` | `http://tempuri.org/ADWebService/Service1/GetUserInfoExternal` | `string inMailid` | `USERINFOSTRUCT` | None declared | No |
| `IsUserMenuCached` | `http://tempuri.org/ADWebService/Service1/IsUserMenuCached` | `string inMailID` | `boolean` | None declared | No |
| `RemoveUserMenuCache` | `http://tempuri.org/ADWebService/Service1/RemoveUserMenuCache` | `string inMailID` | `boolean` | None declared | No |
| `GetUserMenuCached` | `http://tempuri.org/ADWebService/Service1/GetUserMenuCached` | `string inMailID` | `string` | None declared | No |
| `SetPaymentPassword` | `http://tempuri.org/ADWebService/Service1/SetPaymentPassword` | `string mailid`, `domain`, `passwd` | `boolean` | None declared | No |
| `SetUserMenuCached` | `http://tempuri.org/ADWebService/Service1/SetUserMenuCached` | `string inMailID`, `inNavContext` | (empty response) | None declared | No |

## Message types

| Type | Kind | Members | Used by |
| --- | --- | --- | --- |
| `USERINFOSTRUCT` | Complex type | `Address`, `Email`, `City`, `Department`, `Division`, `FaxNumber`, `FirstName`, `FullName`, `LastName`, `Location`, `MiddleName`, `State`, `Section: int`, `Telephone`, `Title`, `Zip`, `Gender`, `EmployeeID`, `ManagerMailID` (all `string` except `Section`) | `GetUserInfo`, `GetUserInfoExternal` |
| `ArrayOfAnyType` | Array | Untyped element array | `GetAccountsByIDNumber`, `WhoHasAccessCache` |

### USERINFOSTRUCT

| Member | Type | Required | Purpose |
| --- | --- | --- | --- |
| `Address` | `string` | Not stated in the WSDL | Mapped to `Contact.PrimaryAddress.Line1` |
| `City` | `string` | Not stated in the WSDL | Mapped to `Contact.PrimaryAddress.City` |
| `State` | `string` | Not stated in the WSDL | Mapped to `Contact.PrimaryAddress.State` |
| `Zip` | `string` | Not stated in the WSDL | Mapped to `Contact.PrimaryAddress.ZipCode` |
| `FaxNumber` | `string` | Not stated in the WSDL | Mapped to `Contact.PrimaryFax` |
| `Telephone` | `string` | Not stated in the WSDL | Mapped to `Contact.PrimaryPhone` |
| `Email` | `string` | Not stated in the WSDL | Mapped to `Contact.Email` |
| `Gender` | `string` | Not stated in the WSDL | Mapped to `Contact.Gender` |
| `FirstName`, `MiddleName`, `LastName` | `string` | Not stated in the WSDL | Mapped to `Contact.Name` |
| `Department`, `Division`, `FullName`, `Location`, `Section`, `Title`, `EmployeeID`, `ManagerMailID` | `string` / `int` | Not stated in the WSDL | Declared on the type, but dropped by `GetContact` — not read into `Contact` |

Security-relevant contract observation: the contract also declares `GetPaymentPassword` and `SetPaymentPassword`, which carry a password in the SOAP body. Neither is called or reachable from this repository.

## Faults

The WSDL declares no faults. A failure reaches this repository as `FaultException` / `CommunicationException` / `TimeoutException`, surfaced by the WCF proxy; see [Consumption](consumption.md) for how the call sites handle it.

## Binding details

| Aspect | Value |
| --- | --- |
| Transport | HTTP |
| Message version | SOAP 1.1 (the proxy binds `clsADServicesSoap`) |
| Security mode | None declared in the WSDL — `BasicHttpSecurityMode.None` is applied in code, 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 | Not from this repository — the remote `clsADServices` service is outside this run's scope |
| Consequence of drift | A change to `USERINFOSTRUCT`'s field shape would only affect `GetContact`'s mapping; the other three called operations use primitive types |

## 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)

## Sources
- `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl`
