/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
import { FireHydrantCore } from "../core.js";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { compactMap } from "../lib/primitives.js";
import { safeParse } from "../lib/schemas.js";
import { RequestOptions } from "../lib/sdks.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
import { APIError } from "../models/errors/apierror.js";
import {
ConnectionError,
InvalidRequestError,
RequestAbortedError,
RequestTimeoutError,
UnexpectedClientError,
} from "../models/errors/httpclienterrors.js";
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import {
ListIncidentsRequest,
ListIncidentsRequest$zodSchema,
ListIncidentsResponse,
ListIncidentsResponse$zodSchema,
} from "../models/listincidentsop.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
/**
* List incidents
*
* @remarks
* List all of the incidents in the organization
*/
export function incidentsListIncidents(
client$: FireHydrantCore,
request?: ListIncidentsRequest | undefined,
options?: RequestOptions,
): APIPromise<
Result<
ListIncidentsResponse,
| APIError
| SDKValidationError
| UnexpectedClientError
| InvalidRequestError
| RequestAbortedError
| RequestTimeoutError
| ConnectionError
>
> {
return new APIPromise($do(
client$,
request,
options,
));
}
async function $do(
client$: FireHydrantCore,
request?: ListIncidentsRequest | undefined,
options?: RequestOptions,
): Promise<
[
Result<
ListIncidentsResponse,
| APIError
| SDKValidationError
| UnexpectedClientError
| InvalidRequestError
| RequestAbortedError
| RequestTimeoutError
| ConnectionError
>,
APICall,
]
> {
const parsed$ = safeParse(
request,
(value$) => ListIncidentsRequest$zodSchema.optional().parse(value$),
"Input validation failed",
);
if (!parsed$.ok) {
return [parsed$, { status: "invalid" }];
}
const payload$ = parsed$.value;
const body$ = null;
const path$ = pathToFunc("/v1/incidents")();
const query$ = encodeFormQuery({
"archived": payload$?.archived,
"assigned_teams": payload$?.assigned_teams,
"attached_runbooks": payload$?.attached_runbooks,
"closed_at_or_after": payload$?.closed_at_or_after,
"closed_at_or_before": payload$?.closed_at_or_before,
"conditions": payload$?.conditions,
"created_at_or_after": payload$?.created_at_or_after,
"created_at_or_before": payload$?.created_at_or_before,
"current_milestones": payload$?.current_milestones,
"end_date": payload$?.end_date,
"environments": payload$?.environments,
"excluded_infrastructure_ids": payload$?.excluded_infrastructure_ids,
"functionalities": payload$?.functionalities,
"incident_type_id": payload$?.incident_type_id,
"name": payload$?.name,
"page": payload$?.page,
"per_page": payload$?.per_page,
"priorities": payload$?.priorities,
"priority_not_set": payload$?.priority_not_set,
"query": payload$?.query,
"resolved_at_or_after": payload$?.resolved_at_or_after,
"resolved_at_or_before": payload$?.resolved_at_or_before,
"retrospective_templates": payload$?.retrospective_templates,
"saved_search_id": payload$?.saved_search_id,
"services": payload$?.services,
"severities": payload$?.severities,
"severity_not_set": payload$?.severity_not_set,
"start_date": payload$?.start_date,
"status": payload$?.status,
"tag_match_strategy": payload$?.tag_match_strategy,
"tags": payload$?.tags,
"teams": payload$?.teams,
"updated_after": payload$?.updated_after,
"updated_before": payload$?.updated_before,
});
const headers$ = new Headers(compactMap({
Accept: "application/json",
}));
const securityInput = await extractSecurity(client$._options.security);
const requestSecurity = resolveGlobalSecurity(securityInput);
const context = {
options: client$._options,
baseURL: options?.serverURL ?? client$._baseURL ?? "",
operationID: "list_incidents",
oAuth2Scopes: null,
resolvedSecurity: requestSecurity,
securitySource: client$._options.security,
retryConfig: options?.retries
|| client$._options.retryConfig
|| { strategy: "none" },
retryCodes: options?.retryCodes || [
"429",
"500",
"502",
"503",
"504",
],
};
const requestRes = client$._createRequest(context, {
security: requestSecurity,
method: "GET",
baseURL: options?.serverURL,
path: path$,
headers: headers$,
query: query$,
body: body$,
userAgent: client$._options.userAgent,
timeoutMs: options?.timeoutMs || client$._options.timeoutMs
|| -1,
}, options);
if (!requestRes.ok) {
return [requestRes, { status: "invalid" }];
}
const req$ = requestRes.value;
const doResult = await client$._do(req$, {
context,
errorCodes: [],
retryConfig: context.retryConfig,
retryCodes: context.retryCodes,
});
if (!doResult.ok) {
return [doResult, { status: "request-error", request: req$ }];
}
const response = doResult.value;
const responseFields$ = {
HttpMeta: { Response: response, Request: req$ },
};
const [result$] = await M.match<
ListIncidentsResponse,
| APIError
| SDKValidationError
| UnexpectedClientError
| InvalidRequestError
| RequestAbortedError
| RequestTimeoutError
| ConnectionError
>(
M.json(200, ListIncidentsResponse$zodSchema, {
key: "IncidentEntityPaginated",
}),
)(response, req$, { extraFields: responseFields$ });
return [result$, { status: "complete", request: req$, response }];
}