SAIF.Data.Guidewire architecture¶
SAIF.Data.Guidewire is the lowest layer of the SAIF.Data family: a set of five typed HTTP clients (Activity, Claim, Financial, Provider, and Worker data) that call Guidewire ClaimCenter and ContactManager REST APIs, built on a shared HttpClientBase pattern for URL resolution, Basic authentication, and Polly-backed response caching.
Responsibilities¶
- Provide five async client interfaces (
IActivityDataApiClient,IClaimDataApiClient,IFinancialDataApiClient,IProviderDataApiClient,IWorkerDataApiClient) and their implementations over Guidewire REST endpoints. - Resolve each client's base URL from environment configuration and its Basic-auth credentials from secure configuration, decrypted with a system hash, through the shared
HttpClientBase. - Cache GET/POST responses through a Polly policy looked up in
IReadOnlyPolicyRegistry<string>, configurable perIDataClientConfiguration(UseCache,CachePolicyKey,MaxCacheDuration). - Define the request/response DTOs for each Guidewire API surface under
Models/**andContracts/**. - Supply
IDataClientConfiguration/DataClientConfiguration, the configuration contract thatSAIF.Data'sContainerBuilderExtensions.AddDataClientsuses to register these clients.
Component boundaries¶
Clients/:HttpClientBase(shared abstract base),HttpClientHelper,IDataClientConfiguration/DataClientConfiguration, and the five concrete*DataApiClientclasses.Interfaces/: the five client contracts (I*DataApiClient).Contracts/: search-criteria and shared request types (ActiveMco,FindClaimsSearchCriteria).Models/: per-API request/response DTOs (ActivityDataApi,ClaimDataApi,FinancialDataApi,ProviderDataApi,Shared,WorkerDataApi).
Interaction model¶
This library has no internal project references and no Autofac module of its own; SAIF.Data.Configuration.ContainerBuilderExtensions.AddDataClients (in SAIF.Data) registers each client InstancePerLifetimeScope. At call time, each client's HttpClientBase resolves its base URL from IEnvironmentService.GetConfigSetting(UrlKey), and — on first use, when AuthKey is set — computes a system hash via SystemHashUtil and reads Basic credentials from IEnvironmentService.GetSecureConfigSetting(AuthKey, hash). Cached GET/POST calls execute through the Polly cache policy (or a NoOp policy when caching is disabled). SAIF.Data's CCClaimApiService also derives directly from this library's HttpClientBase.
Architecture diagram¶
The following diagram shows the registration path from SAIF.Data and the shared HTTP/authentication/cache pipeline each client uses to reach Guidewire.
flowchart TD
SD["SAIF.Data<br>ContainerBuilderExtensions.AddDataClients"] --> Clients["Guidewire data clients<br>(Activity, Claim, Financial,<br>Provider, Worker)"]
Clients --> Base["HttpClientBase<br>(URL/AuthKey resolution,<br>Basic auth, Polly cache)"]
Base --> CC["Guidewire ClaimCenter API"]
Base --> AB["Guidewire ContactManager /<br>AddressBook API"]
Sequence diagram¶
The following diagram shows claim data retrieval by id through ClaimDataApiClient (OP-SDG-03).
sequenceDiagram
participant Caller as SAIF.Data caller
participant Client as ClaimDataApiClient
participant Base as HttpClientBase
participant CC as Guidewire ClaimCenter API
Caller->>Client: GetClaim(claimId)
Client->>Base: GetAsyncCached<ClaimData>(GET claims/id/{id})
Base->>CC: GET claims/id/{id} (Basic auth)
CC-->>Base: 200 OK / claim JSON
Base-->>Client: Cached/deserialized ClaimData
Client-->>Caller: ClaimData
Design constraints¶
- There is no database access anywhere in this library; every operation is an outbound HTTP call to a Guidewire REST API.
- There are no internal project references; this is the lowest layer of the SAIF.Data family, so it cannot depend on
SAIF.DataorSAIF.Data.NHibernate. - Response caching is process-wide via Polly with a default 30-second TTL unless
UseCacheisfalse; the obsolete client constructors forceUseCache = falseand silently ignore theirbaseUrlOverrideargument (SDG-BR-003). ProviderDataApiClientdoes not check the response status of its address add/update calls, so failures are unverified by the caller (SDG-BR-014)*.- SAIF.Web.API.Clients/Core, RestSharp, and FluentValidation are referenced in
packages.configbut have no confirmed usage in source*. - Guidewire API contracts (response schemas, error semantics) live outside the repository and could not be verified**.
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.
Related documentation¶
Sources¶
Data/SAIF.Data.Guidewire/SAIF.Data.Guidewire.csprojData/SAIF.Data.Guidewire/Clients/HttpClientBase.csData/SAIF.Data.Guidewire/Clients/HttpClientHelper.csData/SAIF.Data.Guidewire/Clients/DataClientConfiguration.csData/SAIF.Data.Guidewire/Clients/ActivityDataApiClient.csData/SAIF.Data.Guidewire/Clients/ClaimDataApiClient.csData/SAIF.Data.Guidewire/Clients/FinancialDataApiClient.csData/SAIF.Data.Guidewire/Clients/ProviderDataApiClient.csData/SAIF.Data.Guidewire/Clients/WorkerDataApiClient.csData/SAIF.Data/Configuration/ContainerBuilderExtensions.csData/SAIF.Data/Queries/Claims/CCClaimApiService.csData/SAIF.Data.Guidewire/packages.configData/SAIF.Data.Guidewire/Models/ClaimDataApi/ReservesData.cs