assetsUpdateResourceByAssetId.ts•5.2 kB
/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
import { SDKCore } from "../core.js";
import { encodeJSON, encodeSimple } 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 {
UpdateResourceByAssetIdRequest,
UpdateResourceByAssetIdRequest$zodSchema,
UpdateResourceByAssetIdResponse,
UpdateResourceByAssetIdResponse$zodSchema,
} from "../models/updateresourcebyassetidop.js";
import { APICall, APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
/**
* Updates an existing asset's metadata, tags, and other attributes using its asset ID
*
* @remarks
* Updates one or more attributes of a specified resource (asset) by its asset ID. This enables you to update details of an asset by its unique and immutable identifier, regardless of public ID, display name, asset folder, resource type or deliver type. Note that you can also update many attributes of an existing asset using the explicit method, which is not rate-limited.
*/
export function assetsUpdateResourceByAssetId(
client$: SDKCore,
request: UpdateResourceByAssetIdRequest,
options?: RequestOptions,
): APIPromise<
Result<
UpdateResourceByAssetIdResponse,
| APIError
| SDKValidationError
| UnexpectedClientError
| InvalidRequestError
| RequestAbortedError
| RequestTimeoutError
| ConnectionError
>
> {
return new APIPromise($do(
client$,
request,
options,
));
}
async function $do(
client$: SDKCore,
request: UpdateResourceByAssetIdRequest,
options?: RequestOptions,
): Promise<
[
Result<
UpdateResourceByAssetIdResponse,
| APIError
| SDKValidationError
| UnexpectedClientError
| InvalidRequestError
| RequestAbortedError
| RequestTimeoutError
| ConnectionError
>,
APICall,
]
> {
const parsed$ = safeParse(
request,
(value$) => UpdateResourceByAssetIdRequest$zodSchema.parse(value$),
"Input validation failed",
);
if (!parsed$.ok) {
return [parsed$, { status: "invalid" }];
}
const payload$ = parsed$.value;
const body$ = encodeJSON("body", payload$.ResourceUpdateRequest, {
explode: true,
});
const pathParams$ = {
asset_id: encodeSimple("asset_id", payload$.asset_id, {
explode: false,
charEncoding: "percent",
}),
cloud_name: encodeSimple("cloud_name", client$._options.cloud_name, {
explode: false,
charEncoding: "percent",
}),
};
const path$ = pathToFunc("/v1_1/{cloud_name}/resources/{asset_id}")(
pathParams$,
);
const headers$ = new Headers(compactMap({
"Content-Type": "application/json",
Accept: "application/json",
}));
const securityInput = await extractSecurity(client$._options.security);
const requestSecurity = resolveGlobalSecurity(securityInput);
const context = {
baseURL: options?.serverURL ?? client$._baseURL ?? "",
operationID: "updateResourceByAssetId",
oAuth2Scopes: [],
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: "PUT",
baseURL: options?.serverURL,
path: path$,
headers: headers$,
body: body$,
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<
UpdateResourceByAssetIdResponse,
| APIError
| SDKValidationError
| UnexpectedClientError
| InvalidRequestError
| RequestAbortedError
| RequestTimeoutError
| ConnectionError
>(
M.json(200, UpdateResourceByAssetIdResponse$zodSchema, { key: "info" }),
M.json([400, 401, 404], UpdateResourceByAssetIdResponse$zodSchema, {
key: "api_error",
}),
)(response, req$, { extraFields: responseFields$ });
return [result$, { status: "complete", request: req$, response }];
}