/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { IncidentioCore } from "../core.js"; import { encodeJSON as encodeJSON$, encodeSimple as encodeSimple$, } from "../lib/encodings.js"; import * as m$ from "../lib/matchers.js"; import * as schemas$ from "../lib/schemas.js"; import { RequestOptions } from "../lib/sdks.js"; import { pathToFunc } from "../lib/url.js"; import * as components from "../models/components/index.js"; import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError, } from "../models/errors/httpclienterrors.js"; import { SDKError } from "../models/errors/sdkerror.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import * as operations from "../models/operations/index.js"; import { Result } from "../types/fp.js"; /** * UpdateTypeSchema Catalog V2 * * @remarks * Update an existing catalog types schema, adding or removing attributes. * * Updating the schema is handled separately from creating and updating types, so that you don't * have to worry about dependencies between types. For example, if type A has an attribute that * relies on type B, you would have to create type B first. * * By allowing the creation of types without a schema, they can be created in any order, but it * means that you need to make a separate call to this endpoint to update the schema. */ export async function catalogTypesUpdateSchema( client$: IncidentioCore, request: operations.CatalogV2NumberUpdateTypeSchemaRequest, options?: RequestOptions, ): Promise< Result< components.CreateTypeResponseBody, | SDKError | SDKValidationError | UnexpectedClientError | InvalidRequestError | RequestAbortedError | RequestTimeoutError | ConnectionError > > { const input$ = request; const parsed$ = schemas$.safeParse( input$, (value$) => operations.CatalogV2NumberUpdateTypeSchemaRequest$outboundSchema.parse( value$, ), "Input validation failed", ); if (!parsed$.ok) { return parsed$; } const payload$ = parsed$.value; const body$ = encodeJSON$("body", payload$.UpdateTypeSchemaRequestBody, { explode: true, }); const pathParams$ = { id: encodeSimple$("id", payload$.id, { explode: false, charEncoding: "percent", }), }; const path$ = pathToFunc("/v2/catalog_types/{id}/actions/update_schema")( pathParams$, ); const headers$ = new Headers({ "Content-Type": "application/json", Accept: "application/json", }); const context = { operationID: "Catalog V2#UpdateTypeSchema", oAuth2Scopes: [], securitySource: null, }; const requestRes = client$.createRequest$(context, { method: "POST", path: path$, headers: headers$, body: body$, timeoutMs: options?.timeoutMs || client$.options$.timeoutMs || -1, }, options); if (!requestRes.ok) { return requestRes; } const request$ = requestRes.value; const doResult = await client$.do$(request$, { context, errorCodes: ["4XX", "5XX"], retryConfig: options?.retries || client$.options$.retryConfig, retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], }); if (!doResult.ok) { return doResult; } const response = doResult.value; const [result$] = await m$.match< components.CreateTypeResponseBody, | SDKError | SDKValidationError | UnexpectedClientError | InvalidRequestError | RequestAbortedError | RequestTimeoutError | ConnectionError >( m$.json(200, components.CreateTypeResponseBody$inboundSchema), m$.fail(["4XX", "5XX"]), )(response); if (!result$.ok) { return result$; } return result$; }