n8n-nodes-salla
Version:
n8n node for Salla.sa e-commerce platform integration with OAuth2.0
556 lines (540 loc) • 15.6 kB
JavaScript
// Field definitions for Salla API operations
const getOrderFields = () => [
// Order ID field for get/update/delete operations
{
displayName: 'Order ID',
name: 'orderId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['orders'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The ID of the order',
},
// Mandatory fields for create order
{
displayName: 'Customer ID',
name: 'customerId',
type: 'number',
required: true,
displayOptions: {
show: {
resource: ['orders'],
operation: ['create'],
},
},
default: 0,
description: 'ID of the customer placing the order',
},
{
displayName: 'Items',
name: 'items',
type: 'collection',
typeOptions: {
multipleValues: true,
},
displayOptions: {
show: {
resource: ['orders'],
operation: ['create'],
},
},
default: {},
options: [
{
displayName: 'Product ID',
name: 'product_id',
type: 'number',
default: 0,
description: 'Product ID',
},
{
displayName: 'Quantity',
name: 'quantity',
type: 'number',
default: 1,
description: 'Quantity of the product',
},
],
description: 'Order items',
},
// Optional fields for orders
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
displayOptions: {
show: {
resource: ['orders'],
operation: ['create', 'update'],
},
},
default: {},
options: [
{
displayName: 'Payment Method',
name: 'payment_method',
type: 'string',
default: '',
description: 'Payment method for the order',
},
{
displayName: 'Shipping Method',
name: 'shipping_method',
type: 'string',
default: '',
description: 'Shipping method for the order',
},
{
displayName: 'Notes',
name: 'notes',
type: 'string',
default: '',
description: 'Order notes',
},
{
displayName: 'Currency',
name: 'currency',
type: 'string',
default: 'SAR',
description: 'Order currency',
},
],
description: 'Additional order options',
},
];
const getProductFields = () => [
// Product ID field
{
displayName: 'Product ID',
name: 'productId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['products'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The ID of the product',
},
// Mandatory fields for create product
{
displayName: 'Product Name',
name: 'name',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['products'],
operation: ['create'],
},
},
default: '',
description: 'Name of the product',
},
{
displayName: 'Price',
name: 'price',
type: 'number',
required: true,
displayOptions: {
show: {
resource: ['products'],
operation: ['create'],
},
},
default: 0,
description: 'Product price',
},
// Optional fields for products
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
displayOptions: {
show: {
resource: ['products'],
operation: ['create', 'update'],
},
},
default: {},
options: [
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Product description',
},
{
displayName: 'SKU',
name: 'sku',
type: 'string',
default: '',
description: 'Product SKU',
},
{
displayName: 'Category ID',
name: 'category_id',
type: 'number',
default: 0,
description: 'Category ID',
},
{
displayName: 'Weight',
name: 'weight',
type: 'number',
default: 0,
description: 'Product weight',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{ name: 'Active', value: 'active' },
{ name: 'Inactive', value: 'inactive' },
{ name: 'Draft', value: 'draft' },
],
default: 'active',
description: 'Product status',
},
{
displayName: 'Quantity',
name: 'quantity',
type: 'number',
default: 0,
description: 'Product quantity',
},
],
description: 'Additional product options',
},
];
const getCustomerFields = () => [
// Customer ID field
{
displayName: 'Customer ID',
name: 'customerId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['customers'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The ID of the customer',
},
// Mandatory fields for create customer
{
displayName: 'First Name',
name: 'first_name',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['customers'],
operation: ['create'],
},
},
default: '',
description: 'Customer first name',
},
{
displayName: 'Last Name',
name: 'last_name',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['customers'],
operation: ['create'],
},
},
default: '',
description: 'Customer last name',
},
{
displayName: 'Email',
name: 'email',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['customers'],
operation: ['create'],
},
},
default: '',
description: 'Customer email address',
},
// Optional fields for customers
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
displayOptions: {
show: {
resource: ['customers'],
operation: ['create', 'update'],
},
},
default: {},
options: [
{
displayName: 'Phone',
name: 'phone',
type: 'string',
default: '',
description: 'Customer phone number',
},
{
displayName: 'Date of Birth',
name: 'date_of_birth',
type: 'string',
default: '',
description: 'Customer date of birth (YYYY-MM-DD)',
},
{
displayName: 'Gender',
name: 'gender',
type: 'options',
options: [
{ name: 'Male', value: 'male' },
{ name: 'Female', value: 'female' },
],
default: 'male',
description: 'Customer gender',
},
{
displayName: 'Group ID',
name: 'group_id',
type: 'number',
default: 0,
description: 'Customer group ID',
},
],
description: 'Additional customer options',
},
];
const getCategoryFields = () => [
// Category ID field
{
displayName: 'Category ID',
name: 'categoryId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['categories'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The ID of the category',
},
// Mandatory fields for create category
{
displayName: 'Category Name',
name: 'name',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['categories'],
operation: ['create'],
},
},
default: '',
description: 'Name of the category',
},
// Optional fields for categories
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
displayOptions: {
show: {
resource: ['categories'],
operation: ['create', 'update'],
},
},
default: {},
options: [
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Category description',
},
{
displayName: 'Parent ID',
name: 'parent_id',
type: 'number',
default: 0,
description: 'Parent category ID',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{ name: 'Active', value: 'active' },
{ name: 'Inactive', value: 'inactive' },
],
default: 'active',
description: 'Category status',
},
{
displayName: 'Sort Order',
name: 'sort_order',
type: 'number',
default: 0,
description: 'Category sort order',
},
],
description: 'Additional category options',
},
];
const getCouponFields = () => [
// Coupon ID field
{
displayName: 'Coupon ID',
name: 'couponId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['coupons'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
description: 'The ID of the coupon',
},
// Mandatory fields for create coupon
{
displayName: 'Coupon Code',
name: 'code',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['coupons'],
operation: ['create'],
},
},
default: '',
description: 'Coupon code',
},
{
displayName: 'Discount Type',
name: 'discount_type',
type: 'options',
required: true,
options: [
{ name: 'Fixed Amount', value: 'fixed' },
{ name: 'Percentage', value: 'percentage' },
],
displayOptions: {
show: {
resource: ['coupons'],
operation: ['create'],
},
},
default: 'fixed',
description: 'Type of discount',
},
{
displayName: 'Discount Value',
name: 'discount_value',
type: 'number',
required: true,
displayOptions: {
show: {
resource: ['coupons'],
operation: ['create'],
},
},
default: 0,
description: 'Discount value (amount or percentage)',
},
// Optional fields for coupons
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
displayOptions: {
show: {
resource: ['coupons'],
operation: ['create', 'update'],
},
},
default: {},
options: [
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Coupon description',
},
{
displayName: 'Minimum Amount',
name: 'minimum_amount',
type: 'number',
default: 0,
description: 'Minimum order amount to use coupon',
},
{
displayName: 'Maximum Discount',
name: 'maximum_discount',
type: 'number',
default: 0,
description: 'Maximum discount amount',
},
{
displayName: 'Usage Limit',
name: 'usage_limit',
type: 'number',
default: 0,
description: 'Usage limit for the coupon',
},
{
displayName: 'Start Date',
name: 'start_date',
type: 'string',
default: '',
description: 'Coupon start date (YYYY-MM-DD)',
},
{
displayName: 'End Date',
name: 'end_date',
type: 'string',
default: '',
description: 'Coupon end date (YYYY-MM-DD)',
},
],
description: 'Additional coupon options',
},
];
module.exports = {
getOrderFields,
getProductFields,
getCustomerFields,
getCategoryFields,
getCouponFields,
};