UNPKG

n8n-nodes-late

Version:

n8n community node for LATE API - Schedule and manage social media posts across Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, and Threads

332 lines 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.postsResource = void 0; const routingHooks_1 = require("../utils/routingHooks"); const fieldBuilders_1 = require("../utils/fieldBuilders"); exports.postsResource = { operations: [ { name: "List", value: "list", action: "List posts", routing: { request: { method: "GET", url: "/posts", qs: { page: "={{ $parameter.page || 1 }}", limit: "={{ $parameter.limit || 10 }}", status: "={{ $parameter.status || undefined }}", platform: "={{ $parameter.platform || undefined }}", }, }, }, }, { name: "Get", value: "get", action: "Get post", routing: { request: { method: "GET", url: "=/posts/{{ $parameter.postId }}", }, }, }, { name: "Create", value: "create", action: "Create post", routing: { request: { method: "POST", url: "/posts", }, send: { preSend: [routingHooks_1.postsCreatePreSend], }, }, }, { name: "Update", value: "update", action: "Update post", routing: { request: { method: "PUT", url: "=/posts/{{ $parameter.postId }}", }, send: { preSend: [routingHooks_1.postsUpdatePreSend], }, }, }, { name: "Delete", value: "delete", action: "Delete post", routing: { request: { method: "DELETE", url: "=/posts/{{ $parameter.postId }}", }, }, }, { name: "Retry", value: "retry", action: "Retry failed post", routing: { request: { method: "POST", url: "=/posts/{{ $parameter.postId }}/retry", }, }, }, ], fields: [ // Common fields ...(0, fieldBuilders_1.buildCommonPostFields)(), // Platform selection (0, fieldBuilders_1.buildPlatformSelector)(), // Account selectors for all platforms ...(0, fieldBuilders_1.buildAccountSelectors)(), // Media items with proper variable handling (0, fieldBuilders_1.buildMediaItemsField)(), // Twitter Thread Fields { displayName: "Twitter Thread Items", name: "twitterThreadItems", type: "fixedCollection", default: { items: [] }, typeOptions: { multipleValues: true, sortable: true, }, displayOptions: { show: { resource: ["posts"], operation: ["create", "update"], selectedPlatforms: ["twitter"], }, }, description: "Create Twitter/X threads with multiple tweets. Each tweet supports up to 280 characters. Only the first tweet can include media.", options: [ { name: "items", displayName: "Thread Items", values: [ { displayName: "Content", name: "content", type: "string", typeOptions: { rows: 3, }, default: "", description: "Content of this tweet (280 characters max)", placeholder: "This is tweet 1 of my thread...", required: true, }, { displayName: "Media Items", name: "mediaItems", type: "fixedCollection", default: { items: [] }, typeOptions: { multipleValues: true, }, description: "Media files for this tweet. Note: Only the first tweet in a thread can have media.", options: [ { name: "items", displayName: "Media Items", values: [ { displayName: "Type", name: "type", type: "options", options: [ { name: "Image", value: "image" }, { name: "Video", value: "video" }, { name: "GIF", value: "gif" }, ], default: "image", description: "Type of media file", }, { displayName: "URL", name: "url", type: "string", default: "", noDataExpression: false, description: "URL of the uploaded media file. You can use expressions like ={{ 'https://' + $json.data.color + '.com' }}", required: true, }, { displayName: "Filename", name: "filename", type: "string", default: "", description: "Optional filename", }, ], }, ], }, ], }, ], }, // Threads Conversation Fields { displayName: "Threads Conversation Items", name: "threadsThreadItems", type: "fixedCollection", default: { items: [] }, typeOptions: { multipleValues: true, sortable: true, }, displayOptions: { show: { resource: ["posts"], operation: ["create", "update"], selectedPlatforms: ["threads"], }, }, description: "Create Threads conversations with multiple posts. Each post supports up to 500 characters. Only the first post can include media.", options: [ { name: "items", displayName: "Conversation Items", values: [ { displayName: "Content", name: "content", type: "string", typeOptions: { rows: 3, }, default: "", description: "Content of this post (500 characters max)", placeholder: "This is post 1 of my conversation...", required: true, }, { displayName: "Media Items", name: "mediaItems", type: "fixedCollection", default: { items: [] }, typeOptions: { multipleValues: true, }, description: "Media files for this post. Note: Only the first post in a conversation can have media.", options: [ { name: "items", displayName: "Media Items", values: [ { displayName: "Type", name: "type", type: "options", options: [ { name: "Image", value: "image" }, { name: "Video", value: "video" }, { name: "GIF", value: "gif" }, ], default: "image", description: "Type of media file", }, { displayName: "URL", name: "url", type: "string", default: "", noDataExpression: false, description: "URL of the uploaded media file. You can use expressions like ={{ 'https://' + $json.data.color + '.com' }}", required: true, }, { displayName: "Filename", name: "filename", type: "string", default: "", description: "Optional filename", }, ], }, ], }, ], }, ], }, // TikTok Settings { displayName: "TikTok Privacy Level", name: "tiktokPrivacyLevel", type: "options", options: [ { name: "Public to Everyone", value: "PUBLIC_TO_EVERYONE" }, { name: "Followers Only", value: "MUTUAL_FOLLOW_FRIENDS" }, { name: "Friends Only", value: "SELF_ONLY" }, ], default: "PUBLIC_TO_EVERYONE", displayOptions: { show: { resource: ["posts"], operation: ["create", "update"], selectedPlatforms: ["tiktok"], }, }, description: "Who can see your TikTok video", }, { displayName: "Allow Comments", name: "tiktokAllowComments", type: "boolean", default: true, displayOptions: { show: { resource: ["posts"], operation: ["create", "update"], selectedPlatforms: ["tiktok"], }, }, description: "Allow comments on this TikTok video", }, { displayName: "Allow Duets", name: "tiktokAllowDuet", type: "boolean", default: true, displayOptions: { show: { resource: ["posts"], operation: ["create", "update"], selectedPlatforms: ["tiktok"], }, }, description: "Allow other users to create duets with this video", }, { displayName: "Allow Stitches", name: "tiktokAllowStitch", type: "boolean", default: true, displayOptions: { show: { resource: ["posts"], operation: ["create", "update"], selectedPlatforms: ["tiktok"], }, }, description: "Allow other users to stitch this video", }, // List filters ...(0, fieldBuilders_1.buildListFields)(), ], }; //# sourceMappingURL=posts.js.map