UNPKG

@netair-tech/n8n-nodes-tiny-erp-auth2

Version:

n8n custom node for Tiny ERP integration with OAuth2 authentication

97 lines 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tinyErpApiRequest = tinyErpApiRequest; exports.tinyErpApiRequestAllItems = tinyErpApiRequestAllItems; exports.formatDate = formatDate; exports.validateRequiredFields = validateRequiredFields; const n8n_workflow_1 = require("n8n-workflow"); /** * Make an API request to Tiny ERP */ async function tinyErpApiRequest(method, endpoint, body = {}, qs = {}) { var _a; const baseUrl = 'https://erp.tiny.com.br/public-api/v3'; const options = { method, url: `${baseUrl}${endpoint}`, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body, qs, json: true, }; try { const response = await this.helpers.httpRequestWithAuthentication.call(this, 'tinyOAuth2Api', options); return response; } catch (error) { if ((_a = error.response) === null || _a === void 0 ? void 0 : _a.body) { const errorBody = error.response.body; if (errorBody.mensagem) { throw new n8n_workflow_1.NodeApiError(this.getNode(), error, { message: errorBody.mensagem, description: errorBody.detalhes ? JSON.stringify(errorBody.detalhes) : undefined, }); } } throw new n8n_workflow_1.NodeApiError(this.getNode(), error); } } /** * Make an API request to get all items (with pagination support) */ async function tinyErpApiRequestAllItems(method, endpoint, body = {}, qs = {}) { const returnData = []; let responseData; qs.limit = qs.limit || 100; qs.offset = qs.offset || 0; do { responseData = await tinyErpApiRequest.call(this, method, endpoint, body, qs); if (responseData.itens && Array.isArray(responseData.itens)) { returnData.push(...responseData.itens); } else if (Array.isArray(responseData)) { returnData.push(...responseData); } else { returnData.push(responseData); } // Check if there are more items to fetch if (responseData.paginacao && responseData.paginacao.total) { const currentOffset = qs.offset; const limit = qs.limit; const total = responseData.paginacao.total; if (currentOffset + limit < total) { qs.offset = currentOffset + limit; } else { break; } } else { break; } } while (responseData.paginacao && responseData.paginacao.total && qs.offset < responseData.paginacao.total); return returnData; } /** * Format date for Tiny ERP API */ function formatDate(date) { if (!date) return ''; const dateObj = typeof date === 'string' ? new Date(date) : date; return dateObj.toISOString().split('T')[0] + ' ' + dateObj.toTimeString().split(' ')[0]; } /** * Validate required fields */ function validateRequiredFields(data, requiredFields) { const missingFields = requiredFields.filter(field => !data[field]); if (missingFields.length > 0) { throw new n8n_workflow_1.NodeOperationError({}, `Missing required fields: ${missingFields.join(', ')}`); } } //# sourceMappingURL=GenericFunctions.js.map