UNPKG

attio-js

Version:

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

130 lines 6.25 kB
"use strict"; /* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.recordsAssert = recordsAssert; const encodings_js_1 = require("../lib/encodings.js"); const M = __importStar(require("../lib/matchers.js")); const primitives_js_1 = require("../lib/primitives.js"); const schemas_js_1 = require("../lib/schemas.js"); const security_js_1 = require("../lib/security.js"); const url_js_1 = require("../lib/url.js"); const getv2objectsobject_js_1 = require("../models/errors/getv2objectsobject.js"); const putv2objectsobjectrecords_js_1 = require("../models/operations/putv2objectsobjectrecords.js"); const async_js_1 = require("../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`. */ function recordsAssert(client, request, options) { return new async_js_1.APIPromise($do(client, request, options)); } async function $do(client, request, options) { const parsed = (0, schemas_js_1.safeParse)(request, (value) => putv2objectsobjectrecords_js_1.PutV2ObjectsObjectRecordsRequest$outboundSchema.parse(value), "Input validation failed"); if (!parsed.ok) { return [parsed, { status: "invalid" }]; } const payload = parsed.value; const body = (0, encodings_js_1.encodeJSON)("body", payload.RequestBody, { explode: true }); const pathParams = { object: (0, encodings_js_1.encodeSimple)("object", payload.object, { explode: false, charEncoding: "percent", }), }; const path = (0, url_js_1.pathToFunc)("/v2/objects/{object}/records")(pathParams); const query = (0, encodings_js_1.encodeFormQuery)({ "matching_attribute": payload.matching_attribute, }); const headers = new Headers((0, primitives_js_1.compactMap)({ "Content-Type": "application/json", Accept: "application/json", })); const secConfig = await (0, security_js_1.extractSecurity)(client._options.apiKey); const securityInput = secConfig == null ? {} : { apiKey: secConfig }; const requestSecurity = (0, security_js_1.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, putv2objectsobjectrecords_js_1.PutV2ObjectsObjectRecordsResponse$inboundSchema), M.jsonErr(400, getv2objectsobject_js_1.PutV2ObjectsObjectRecordsInvalidRequestError$inboundSchema), M.jsonErr(404, getv2objectsobject_js_1.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