---
title: GetResponse<T>
summary: Retrieve the full response envelope from a GET call.
status: draft
owner: bendy
last_reviewed: 2026-09-15
library: SAIF.Web.API.Clients
reference_type: package
operation_id: OP-03
trigger: Direct call, or delegated from GetResults<T>
---

# GetResponse<T>

`GetResponse<T>` is the GET-verb entry point that returns the complete `ApiResponse<T>` envelope — results, responding server, status code, and version — rather than only the materialized results.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-03 |
| **Trigger** | Direct call by a consuming application, or [GetResults\<T\>](get-results.md) step 2. |
| **Inputs** | `methodUriSegment`. |
| **Outputs** | `ApiResponse<T>`. |
| **Primary components** | `JsonHttpClient.GetResponse<T>(string)` |
| **Entry point** | `src/SAIF.Web.API.Clients/JsonHttpClient.cs` |

## Steps

1. Execute the HTTP GET through the shared request funnel.
   - Embedded logic ([BR-CLI-001](../business-rules.md#br-cli-001-ntlm-default-authentication), [BR-CLI-002](../business-rules.md#br-cli-002-caller-identity-headers-required), [BR-CLI-003](../business-rules.md#br-cli-003-on-behalf-of-user-forwarding), [BR-CLI-005](../business-rules.md#br-cli-005-transient-failure-retry), [BR-CLI-006](../business-rules.md#br-cli-006-non-success-response-failure-conversion), [BR-CLI-010](../business-rules.md#br-cli-010-per-client-request-timeout)):
     - Build the client, add headers, execute, retry, and enforce success.

   > **Origin**: This step is implemented in [GetJsonResponse](get-json-response.md) (`SAIF.Web.API.Clients`) and executed on behalf of this operation.
   - On failure: a typed `SAIFException` is thrown when `EnsureSuccessfulResponse` is enabled.
2. Project the transport response into the `ApiResponse<T>` envelope ([BR-CLI-009](../business-rules.md#br-cli-009-response-success-flag), [BR-CLI-012](../business-rules.md#br-cli-012-response-payload-shape-normalization), [BR-CLI-014](../business-rules.md#br-cli-014-responding-server-capture)).
   - Embedded logic:
     - Normalize the JSON payload into `T[]`, capture the `Server-Name` header, copy the status code, and copy the (always-null) version value.

   > **Origin**: This step is implemented in [GetApiResponse\<T\>](get-api-response.md) (`SAIF.Web.API.Clients`) and executed on behalf of this operation.

## Process flow

```mermaid
flowchart TD
	Start(["GetResponse&lt;T&gt;<br>called"]) --> Funnel["Execute GET via<br>GetJsonResponse"]
	Funnel --> Project["GetApiResponse&lt;T&gt;:<br>project into envelope"]
	Project --> EndOk(["Return<br>ApiResponse&lt;T&gt;"])
```

## Failure and edge-case behavior
- `ApiResponse<T>.Version` is always `null`, because the transport-level `JsonResponse.Version` is never assigned upstream.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)

## Sources
- `src/SAIF.Web.API.Clients/JsonHttpClient.cs`
