Skip to main content
Version: v8.0.0

RequestModel

The definition form of a Request type. Mindset: "this specific endpoint".

Use RequestModel when you are defining a request inside an SDK schema or a request factory. Unlike RequestInstance , every unspecified field stays strict instead of falling back to any

  • because in a definition, an omitted field means "there is no payload / no query / no params here", not "anything goes". The type system will reject mismatches at the call site instead of silently erasing them.

The client field is also injected automatically by createSdk(client) at the SDK boundary, so you never need to repeat it inside schema declarations.

Defaults for omitted fields

FieldDefaultWhy
response
unknown
Forces narrowing in consumer code; never silently widened.
payload
undefined
"No body declared."
.setData()
is required for typed bodies.
queryParams
undefined
Same as payload.
error
Error
Sensible default; override per-endpoint when the API has a known shape.
endpoint
string
Allows literal narrowing without erasure. Pass a string literal.
client
ClientInstance
Injected by
createSdk(client)
; you do not need to set this manually.
hasPayload
false
"Caller must call
.setData()
." Override only when payload is bound.
hasParams
false
Same as
hasPayload
for params.
hasQueryParams
false
Same as
hasPayload
for query params.
mutationContext
undefined
Optional context; default is "no context".

Import
import { RequestModel } from "@hyper-fetch/core"

Preview

class Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext> {
constructor(client: Client, requestOptions: ClientRequestOptions<Endpoint, Client>, initialRequestConfiguration: RequestConfigurationType<Payload, Endpoint extends string ? ExtractUrlParams<Endpoint<Endpoint>> : never, QueryParams, Endpoint, ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>, ExtractAdapterMethodType<ExtractClientAdapterType<Client>>>) {};
used: boolean;
unstable_mock: { config: MockerConfigType; fn: (options: { request: RequestInstance; requestId: string }) => MockResponseType<Response, LocalError | ExtractClientGlobalError<Client>, ExtractClientAdapterType<Client>> };
unstable_hasQuery: HasQuery;
unstable_hasPayload: HasPayload;
unstable_hasParams: HasParams;
unstable_hasMutationContext: MutationContext;
staleTime: number;
scope: null | string;
retryTime: number;
retry: number;
requestOptions: ClientRequestOptions<Endpoint, Client>;
queued: boolean;
queryParams: EmptyTypes | QueryParams;
queryKey: string;
payload: PayloadType<Payload>;
params: EmptyTypes | ExtractUrlParams<Endpoint>;
options: ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>;
offline: boolean;
method: ExtractAdapterMethodType<ExtractClientAdapterType<Client>>;
isMockerEnabled: boolean;
initialRequestConfiguration: RequestConfigurationType<Payload, Endpoint extends string ? ExtractUrlParams<Endpoint<Endpoint>> : never, QueryParams, Endpoint, ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>, ExtractAdapterMethodType<ExtractClientAdapterType<Client>>>;
headers: HeadersInit;
endpoint: Endpoint;
deduplicateTime: null | number;
deduplicate: boolean;
client: Client;
cancelable: boolean;
cacheTime: number;
cacheKey: string;
cache: boolean;
auth: boolean;
abortKey: string;
$hooks: RequestHooks<RequestInstance>;
exec() => RequestSendType<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>>;
send() => RequestSendType<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>>;
abort() => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
clearMock() => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
clone<NewData, NewParams, NewQueryParams>(configuration?: RequestConfigurationType<Payload, EmptyTypes | ExtractUrlParams<Endpoint>, QueryParams, Endpoint, ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>, ExtractAdapterMethodType<ExtractClientAdapterType<Client>>>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, NewData, NewParams, NewQueryParams, MutationContext>;
dehydrate(config?: { override?: boolean; response?: ResponseType<Response, LocalError | ExtractClientGlobalError<Client>, ExtractClientAdapterType<Client>> }) => undefined | HydrateDataType<Response, (LocalError | ExtractClientGlobalError<Client>), ExtractClientAdapterType<Client>>;
read() => undefined | ResponseType<Response, (LocalError | ExtractClientGlobalError<Client>), ExtractClientAdapterType<Client>>;
setAbortKey(abortKey: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setAuth(auth: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCache(cache: undefined | boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCacheKey(cacheKey: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCacheTime(cacheTime: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setCancelable(cancelable: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setDeduplicate(deduplicate: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setDeduplicateTime(deduplicateTime: number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setHeaders(headers: HeadersInit) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setMock(fn: (options: { request: Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, undefined>; requestId: string }) => SyncOrAsync<MockResponseType<Response, LocalError | ExtractClientGlobalError<Client>, ExtractClientAdapterType<Client>>>, config: MockerConfigType) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setMockingEnabled(isMockerEnabled: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setOffline(offline: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setOptimistic<Ctx>(callback: OptimisticCallback<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>, Ctx>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, Ctx>;
setOptions(options: ExtractAdapterOptionsType<ExtractClientAdapterType<Client>>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, true, MutationContext>;
setParams<P>(params: P) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, P extends null ? false : true, HasQuery, MutationContext>;
setPayload<P>(payload: P) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, P extends null ? false : true, HasParams, HasQuery, MutationContext>;
setPayloadMapper<MappedPayload>(payloadMapper: (data: Payload) => MappedPayload) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setQueryKey(queryKey: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setQueryParams(queryParams: QueryParams) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, true, MutationContext>;
setQueued(queued: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRequestMapper<NewRequest>(requestMapper: RequestMapper<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>, NewRequest>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setResponseMapper<MappedResponse>(responseMapper?: ResponseMapper<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>, MappedResponse>) => Request<MappedResponse extends ResponseType<R, any, any> ? R : Response, Payload, QueryParams, MappedResponse extends ResponseType<any, E, any> ? E : LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRetry(retry: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRetryOnError(callback: RetryOnErrorCallbackType<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, undefined>>) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setRetryTime(retryTime: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setScope(scopeId: string) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setStaleTime(staleTime: undefined | number) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
setUsed(used: boolean) => Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>;
toJSON() => RequestJSON<Request<Response, Payload, QueryParams, LocalError, Endpoint, Client, HasPayload, HasParams, HasQuery, MutationContext>>;
fromJSON<NewResponse, NewPayload, NewQueryParams, NewLocalError, NewEndpoint, NewClient, NewHasPayload, NewHasParams, NewHasQuery>(client: NewClient, json: RequestJSON<Request<NewResponse, NewPayload, NewQueryParams, NewLocalError, NewEndpoint, NewClient, NewHasPayload, NewHasParams, NewHasQuery, undefined>>) => Request<NewResponse, NewPayload, NewQueryParams, NewLocalError, NewEndpoint, NewClient, NewHasPayload, NewHasParams, NewHasQuery, undefined>;
}