UNPKG

attio-js

Version:

Developer-friendly & type-safe JS/TS SDK based on the official OpenAPI spec of Attio.

94 lines 4.69 kB
/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { encodeFormQuery, 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 { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; import { pathToFunc } from "../lib/url.js"; import { GetV2ObjectsObjectNotFoundError$inboundSchema, PutV2ObjectsObjectRecordsInvalidRequestError$inboundSchema, } from "../models/errors/getv2objectsobject.js"; import { PutV2ObjectsObjectRecordsRequest$outboundSchema, PutV2ObjectsObjectRecordsResponse$inboundSchema, } from "../models/operations/putv2objectsobjectrecords.js"; import { APIPromise } from "../types/async.js"; /** * Assert a record * * @remarks * Use this endpoint to create or update people, companies and other records. A matching attribute is used to search for existing records. If a record is found with the same value for the matching attribute, that record will be updated. If no record with the same value for the matching attribute is found, a new record will be created instead. If you would like to avoid matching, please use the [Create record endpoint](/reference/post_v2-objects-object-records). * * If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values. * * Required scopes: `record_permission:read-write`, `object_configuration:read`. */ export function recordsAssert(client, request, options) { return new APIPromise($do(client, request, options)); } async function $do(client, request, options) { const parsed = safeParse(request, (value) => PutV2ObjectsObjectRecordsRequest$outboundSchema.parse(value), "Input validation failed"); if (!parsed.ok) { return [parsed, { status: "invalid" }]; } const payload = parsed.value; const body = encodeJSON("body", payload.RequestBody, { explode: true }); const pathParams = { object: encodeSimple("object", payload.object, { explode: false, charEncoding: "percent", }), }; const path = pathToFunc("/v2/objects/{object}/records")(pathParams); const query = encodeFormQuery({ "matching_attribute": payload.matching_attribute, }); const headers = new Headers(compactMap({ "Content-Type": "application/json", Accept: "application/json", })); const secConfig = await extractSecurity(client._options.apiKey); const securityInput = secConfig == null ? {} : { apiKey: secConfig }; const requestSecurity = resolveGlobalSecurity(securityInput); const context = { baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "put_/v2/objects/{object}/records", oAuth2Scopes: [], resolvedSecurity: requestSecurity, securitySource: client._options.apiKey, 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, query: query, 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: ["400", "404", "4XX", "5XX"], 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(M.json(200, PutV2ObjectsObjectRecordsResponse$inboundSchema), M.jsonErr(400, PutV2ObjectsObjectRecordsInvalidRequestError$inboundSchema), M.jsonErr(404, GetV2ObjectsObjectNotFoundError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, { extraFields: responseFields }); if (!result.ok) { return [result, { status: "complete", request: req, response }]; } return [result, { status: "complete", request: req, response }]; } //# sourceMappingURL=recordsAssert.js.map