Skip to content

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 per IDataClientConfiguration (UseCache, CachePolicyKey, MaxCacheDuration).
  • Define the request/response DTOs for each Guidewire API surface under Models/** and Contracts/**.
  • Supply IDataClientConfiguration/DataClientConfiguration, the configuration contract that SAIF.Data's ContainerBuilderExtensions.AddDataClients uses to register these clients.

Component boundaries

  • Clients/: HttpClientBase (shared abstract base), HttpClientHelper, IDataClientConfiguration/DataClientConfiguration, and the five concrete *DataApiClient classes.
  • 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.Data or SAIF.Data.NHibernate.
  • Response caching is process-wide via Polly with a default 30-second TTL unless UseCache is false; the obsolete client constructors force UseCache = false and silently ignore their baseUrlOverride argument (SDG-BR-003).
  • ProviderDataApiClient does 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.config but 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.

Sources

  • Data/SAIF.Data.Guidewire/SAIF.Data.Guidewire.csproj
  • Data/SAIF.Data.Guidewire/Clients/HttpClientBase.cs
  • Data/SAIF.Data.Guidewire/Clients/HttpClientHelper.cs
  • Data/SAIF.Data.Guidewire/Clients/DataClientConfiguration.cs
  • Data/SAIF.Data.Guidewire/Clients/ActivityDataApiClient.cs
  • Data/SAIF.Data.Guidewire/Clients/ClaimDataApiClient.cs
  • Data/SAIF.Data.Guidewire/Clients/FinancialDataApiClient.cs
  • Data/SAIF.Data.Guidewire/Clients/ProviderDataApiClient.cs
  • Data/SAIF.Data.Guidewire/Clients/WorkerDataApiClient.cs
  • Data/SAIF.Data/Configuration/ContainerBuilderExtensions.cs
  • Data/SAIF.Data/Queries/Claims/CCClaimApiService.cs
  • Data/SAIF.Data.Guidewire/packages.config
  • Data/SAIF.Data.Guidewire/Models/ClaimDataApi/ReservesData.cs