n8n-nodes-base 1.91.1 → 1.93.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/credentials/Aws.credentials.js +0 -2
- package/dist/credentials/Aws.credentials.js.map +1 -1
- package/dist/credentials/JinaAiApi.credentials.js +61 -0
- package/dist/credentials/JinaAiApi.credentials.js.map +1 -0
- package/dist/credentials/MicrosoftAzureCosmosDbSharedKeyApi.credentials.js +1 -1
- package/dist/credentials/MicrosoftAzureCosmosDbSharedKeyApi.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +0 -9
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js +13 -0
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/Snowflake.credentials.js +46 -2
- package/dist/credentials/Snowflake.credentials.js.map +1 -1
- package/dist/known/credentials.json +18 -1
- package/dist/known/nodes.json +28 -0
- package/dist/methods/defined.json +6 -0
- package/dist/methods/referenced.json +3 -0
- package/dist/nodes/Affinity/__schema__/v1.0.0/listEntry/getAll.json +1 -4
- package/dist/nodes/Airtop/__schema__/v1.0.0/extraction/query.json +47 -0
- package/dist/nodes/Aws/Cognito/AwsCognito.node.js +102 -0
- package/dist/nodes/Aws/Cognito/AwsCognito.node.js.map +1 -0
- package/dist/nodes/Aws/Cognito/AwsCognito.node.json +18 -0
- package/dist/nodes/Aws/Cognito/cognito.svg +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/common.description.js +160 -0
- package/dist/nodes/Aws/Cognito/descriptions/common.description.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/Group.resource.js +189 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/Group.resource.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/create.operation.js +126 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/create.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/delete.operation.js +47 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/get.operation.js +54 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/get.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/getAll.operation.js +95 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/update.operation.js +120 -0
- package/dist/nodes/Aws/Cognito/descriptions/group/update.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/index.js +45 -0
- package/dist/nodes/Aws/Cognito/descriptions/index.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/User.resource.js +263 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/User.resource.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/addToGroup.operation.js +51 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/addToGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/create.operation.js +299 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/create.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/delete.operation.js +47 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/get.operation.js +54 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/get.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/getAll.operation.js +187 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/removeFromGroup.operation.js +60 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/removeFromGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/update.operation.js +189 -0
- package/dist/nodes/Aws/Cognito/descriptions/user/update.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/userPool/UserPool.resource.js +81 -0
- package/dist/nodes/Aws/Cognito/descriptions/userPool/UserPool.resource.js.map +1 -0
- package/dist/nodes/Aws/Cognito/descriptions/userPool/get.operation.js +50 -0
- package/dist/nodes/Aws/Cognito/descriptions/userPool/get.operation.js.map +1 -0
- package/dist/nodes/Aws/Cognito/helpers/constants.js +91 -0
- package/dist/nodes/Aws/Cognito/helpers/constants.js.map +1 -0
- package/dist/nodes/Aws/Cognito/helpers/errorHandler.js +109 -0
- package/dist/nodes/Aws/Cognito/helpers/errorHandler.js.map +1 -0
- package/dist/nodes/Aws/Cognito/helpers/interfaces.js +17 -0
- package/dist/nodes/Aws/Cognito/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Aws/Cognito/helpers/utils.js +318 -0
- package/dist/nodes/Aws/Cognito/helpers/utils.js.map +1 -0
- package/dist/nodes/Aws/Cognito/methods/index.js +39 -0
- package/dist/nodes/Aws/Cognito/methods/index.js.map +1 -0
- package/dist/nodes/Aws/Cognito/methods/listSearch.js +157 -0
- package/dist/nodes/Aws/Cognito/methods/listSearch.js.map +1 -0
- package/dist/nodes/Aws/Cognito/transport/index.js +72 -0
- package/dist/nodes/Aws/Cognito/transport/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.js +95 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.js.map +1 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.json +18 -0
- package/dist/nodes/Aws/IAM/AwsIam.svg +18 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js +188 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js +175 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js +50 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js +70 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js +42 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js +231 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js +118 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js +74 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js +68 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js +47 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js +90 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/types.js +17 -0
- package/dist/nodes/Aws/IAM/helpers/types.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js +279 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/index.js +39 -0
- package/dist/nodes/Aws/IAM/methods/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js +132 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js.map +1 -0
- package/dist/nodes/Aws/IAM/transport/index.js +64 -0
- package/dist/nodes/Aws/IAM/transport/index.js.map +1 -0
- package/dist/nodes/Aws/S3/__schema__/v2.0.0/file/getAll.json +1 -7
- package/dist/nodes/BambooHr/__schema__/v1.0.0/employee/get.json +10 -1
- package/dist/nodes/Cron/Cron.node.js +1 -1
- package/dist/nodes/Cron/Cron.node.js.map +1 -1
- package/dist/nodes/Dropcontact/__schema__/v1.0.0/contact/enrich.json +7 -15
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js +2 -2
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js +2 -2
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js.map +1 -1
- package/dist/nodes/EmailSend/__schema__/v2.1.0/email/send.json +7 -1
- package/dist/nodes/Evaluation/Evaluation/Description.node.js +146 -0
- package/dist/nodes/Evaluation/Evaluation/Description.node.js.map +1 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js +117 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +187 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/methods/index.js +42 -0
- package/dist/nodes/Evaluation/methods/index.js.map +1 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js +40 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js +119 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js +171 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js.map +1 -0
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +4 -3
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js.map +1 -1
- package/dist/nodes/Form/common.descriptions.js +2 -2
- package/dist/nodes/Form/common.descriptions.js.map +1 -1
- package/dist/nodes/Github/__schema__/v1.1.0/file/list.json +44 -0
- package/dist/nodes/Gitlab/__schema__/v1.0.0/file/get.json +1 -4
- package/dist/nodes/Google/BusinessProfile/__schema__/v1.0.0/review/getAll.json +1 -12
- package/dist/nodes/Google/Calendar/__schema__/v1.3.0/event/getAll.json +4 -7
- package/dist/nodes/Google/Contacts/__schema__/v1.0.0/contact/getAll.json +1 -12
- package/dist/nodes/Google/Drive/__schema__/v3.0.0/file/download.json +9 -0
- package/dist/nodes/Google/Firebase/CloudFirestore/__schema__/v1.1.0/document/query.json +7 -1
- package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/addLabels.json +1 -13
- package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/get.json +7 -1
- package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/getAll.json +29 -113
- package/dist/nodes/Google/Gmail/__schema__/v2.1.0/thread/get.json +1 -60
- package/dist/nodes/Google/Sheet/GoogleSheets.node.js +3 -2
- package/dist/nodes/Google/Sheet/GoogleSheets.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +113 -107
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js +52 -105
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js +97 -0
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js.map +1 -0
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +21 -18
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/helpers/GoogleSheet.js +4 -0
- package/dist/nodes/Google/Sheet/v2/helpers/GoogleSheet.js.map +1 -1
- package/dist/nodes/Google/Task/__schema__/v1.0.0/task/getAll.json +1 -4
- package/dist/nodes/Google/YouTube/YouTube.node.js +4 -2
- package/dist/nodes/Google/YouTube/YouTube.node.js.map +1 -1
- package/dist/nodes/Google/YouTube/__schema__/v1.0.0/video/get.json +35 -1
- package/dist/nodes/Hubspot/__schema__/v2.1.0/company/getAll.json +4 -1
- package/dist/nodes/Hubspot/__schema__/v2.1.0/contact/search.json +1 -4
- package/dist/nodes/Hubspot/__schema__/v2.1.0/deal/getAll.json +45 -11
- package/dist/nodes/Hubspot/__schema__/v2.1.0/deal/search.json +2 -5
- package/dist/nodes/Hubspot/__schema__/v2.1.0/ticket/get.json +4 -4
- package/dist/nodes/Interval/Interval.node.js +1 -1
- package/dist/nodes/Interval/Interval.node.js.map +1 -1
- package/dist/nodes/ItemLists/__schema__/v3.0.0/itemList/limit.json +4 -1
- package/dist/nodes/JinaAI/JinaAi.node.js +486 -0
- package/dist/nodes/JinaAI/JinaAi.node.js.map +1 -0
- package/dist/nodes/JinaAI/JinaAi.node.json +18 -0
- package/dist/nodes/JinaAI/jinaAi.dark.svg +6 -0
- package/dist/nodes/JinaAI/jinaAi.svg +6 -0
- package/dist/nodes/Jira/__schema__/v1.0.0/issue/get.json +259 -1
- package/dist/nodes/Jira/__schema__/v1.0.0/issue/getAll.json +57 -37
- package/dist/nodes/Linear/__schema__/v1.0.0/issue/getAll.json +1 -12
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js +2 -2
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
- package/dist/nodes/MQTT/MqttTrigger.node.js +2 -2
- package/dist/nodes/MQTT/MqttTrigger.node.js.map +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js.map +1 -1
- package/dist/nodes/Microsoft/AzureCosmosDb/AzureCosmosDb.node.json +2 -2
- package/dist/nodes/Microsoft/Entra/MicrosoftEntra.node.js +2 -2
- package/dist/nodes/Microsoft/Entra/MicrosoftEntra.node.js.map +1 -1
- package/dist/nodes/Microsoft/Entra/__schema__/v1.0.0/user/getAll.json +1 -7
- package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/event/getAll.json +4 -1
- package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/folderMessage/getAll.json +8 -47
- package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/message/get.json +124 -1
- package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/message/getAll.json +40 -20
- package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/message/sendAndWait.json +12 -11
- package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/messageAttachment/get.json +13 -1
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js +93 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharepoint.node.json +18 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js +190 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js +108 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js +129 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js +77 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js +45 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js +175 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js +83 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js +203 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js +99 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js +65 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js +105 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js +17 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js +252 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js +42 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js +222 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js +104 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js +54 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js +46 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js.map +1 -0
- package/dist/nodes/Microsoft/Storage/__schema__/v1.0.0/blob/getAll.json +44 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js +387 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.json +18 -0
- package/dist/nodes/Microsoft/Teams/__schema__/v2.0.0/channel/getAll.json +1 -4
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js +17 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js +147 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/transport/index.js.map +1 -1
- package/dist/nodes/Microsoft/ToDo/__schema__/v1.0.0/task/getAll.json +21 -5
- package/dist/nodes/Notion/__schema__/v2.2.0/database/get.json +149 -2
- package/dist/nodes/Odoo/__schema__/v1.0.0/contact/getAll.json +10 -1
- package/dist/nodes/Odoo/__schema__/v1.0.0/custom/getAll.json +1 -4
- package/dist/nodes/Odoo/__schema__/v1.0.0/opportunity/getAll.json +49 -1
- package/dist/nodes/OpenAi/__schema__/v1.1.0/chat/complete.json +1 -29
- package/dist/nodes/Pipedrive/__schema__/v1.0.0/organization/search.json +20 -25
- package/dist/nodes/Pipedrive/__schema__/v1.0.0/person/search.json +1 -18
- package/dist/nodes/Plivo/__schema__/v1.0.0/call/make.json +15 -0
- package/dist/nodes/PostBin/BinDescription.js +1 -1
- package/dist/nodes/PostBin/BinDescription.js.map +1 -1
- package/dist/nodes/PostBin/GenericFunctions.js +5 -5
- package/dist/nodes/PostBin/GenericFunctions.js.map +1 -1
- package/dist/nodes/PostBin/PostBin.node.js +1 -1
- package/dist/nodes/PostBin/PostBin.node.js.map +1 -1
- package/dist/nodes/PostBin/RequestDescription.js +2 -2
- package/dist/nodes/PostBin/RequestDescription.js.map +1 -1
- package/dist/nodes/Postgres/PostgresTrigger.node.js +2 -2
- package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -1
- package/dist/nodes/QuickBooks/__schema__/v1.0.0/transaction/getReport.json +1 -4
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js +2 -2
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +8 -3
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/utils.js +43 -0
- package/dist/nodes/RespondToWebhook/utils.js.map +1 -0
- package/dist/nodes/Salesforce/__schema__/v1.0.0/customObject/getAll.json +2 -2
- package/dist/nodes/Salesforce/__schema__/v1.0.0/opportunity/getAll.json +5 -2
- package/dist/nodes/Salesforce/__schema__/v1.0.0/task/getAll.json +4 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js +1 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
- package/dist/nodes/SeaTable/__schema__/v2.0.0/row/list.json +30 -0
- package/dist/nodes/ServiceNow/__schema__/v1.0.0/tableRecord/getAll.json +1 -4
- package/dist/nodes/Slack/__schema__/v2.3.0/channel/history.json +49 -3
- package/dist/nodes/Slack/__schema__/v2.3.0/message/post.json +4 -1
- package/dist/nodes/Snowflake/GenericFunctions.js +34 -2
- package/dist/nodes/Snowflake/GenericFunctions.js.map +1 -1
- package/dist/nodes/Snowflake/Snowflake.node.js +5 -7
- package/dist/nodes/Snowflake/Snowflake.node.js.map +1 -1
- package/dist/nodes/SseTrigger/SseTrigger.node.js +2 -2
- package/dist/nodes/SseTrigger/SseTrigger.node.js.map +1 -1
- package/dist/nodes/Ssh/__schema__/v1.0.0/command/execute.json +4 -1
- package/dist/nodes/Strapi/__schema__/v1.0.0/entry/get.json +32 -0
- package/dist/nodes/Strapi/__schema__/v1.0.0/entry/getAll.json +1 -4
- package/dist/nodes/Telegram/__schema__/v1.2.0/chat/get.json +27 -1
- package/dist/nodes/Telegram/__schema__/v1.2.0/chat/member.json +7 -1
- package/dist/nodes/Telegram/__schema__/v1.2.0/message/sendMessage.json +1 -4
- package/dist/nodes/Telegram/__schema__/v1.2.0/message/sendPhoto.json +4 -1
- package/dist/nodes/Trello/__schema__/v1.0.0/list/getAll.json +7 -1
- package/dist/nodes/Trello/__schema__/v1.0.0/list/getCards.json +13 -1
- package/dist/nodes/Wordpress/PageDescription.js +0 -17
- package/dist/nodes/Wordpress/PageDescription.js.map +1 -1
- package/dist/nodes/Wordpress/__schema__/v1.0.0/post/get.json +7 -1
- package/dist/nodes/Zoho/__schema__/v1.0.0/contact/getAll.json +15 -16
- package/dist/nodes/Zoho/__schema__/v1.0.0/lead/getAll.json +1 -122
- package/dist/nodes/Zoom/__schema__/v1.0.0/meeting/getAll.json +1 -4
- package/dist/types/credentials.json +8 -7
- package/dist/types/nodes.json +29 -22
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +12 -2
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
- package/package.json +16 -9
- /package/dist/{credentials/icons/SharePoint.svg → nodes/Microsoft/SharePoint/microsoftSharePoint.svg} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../nodes/Google/YouTube/YouTube.node.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, BINARY_ENCODING, NodeOperationError } from 'n8n-workflow';\nimport type { Readable } from 'stream';\n\nimport { isoCountryCodes } from '@utils/ISOCountryCodes';\n\nimport { channelFields, channelOperations } from './ChannelDescription';\nimport { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions';\nimport { playlistFields, playlistOperations } from './PlaylistDescription';\nimport { playlistItemFields, playlistItemOperations } from './PlaylistItemDescription';\nimport { videoCategoryFields, videoCategoryOperations } from './VideoCategoryDescription';\nimport { videoFields, videoOperations } from './VideoDescription';\nimport { validateAndSetDate } from '../GenericFunctions';\n\nconst UPLOAD_CHUNK_SIZE = 1024 * 1024;\n\nexport class YouTube implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'YouTube',\n\t\tname: 'youTube',\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg\n\t\ticon: 'file:youTube.png',\n\t\tgroup: ['input'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume YouTube API',\n\t\tdefaults: {\n\t\t\tname: 'YouTube',\n\t\t},\n\t\tusableAsTool: true,\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'youTubeOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Channel',\n\t\t\t\t\t\tvalue: 'channel',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist',\n\t\t\t\t\t\tvalue: 'playlist',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist Item',\n\t\t\t\t\t\tvalue: 'playlistItem',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video',\n\t\t\t\t\t\tvalue: 'video',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video Category',\n\t\t\t\t\t\tvalue: 'videoCategory',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'channel',\n\t\t\t},\n\t\t\t...channelOperations,\n\t\t\t...channelFields,\n\n\t\t\t...playlistOperations,\n\t\t\t...playlistFields,\n\n\t\t\t...playlistItemOperations,\n\t\t\t...playlistItemFields,\n\n\t\t\t...videoOperations,\n\t\t\t...videoFields,\n\n\t\t\t...videoCategoryOperations,\n\t\t\t...videoCategoryFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\t// Get all the languages to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLanguages(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst languages = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/i18nLanguages',\n\t\t\t\t);\n\t\t\t\tfor (const language of languages) {\n\t\t\t\t\tconst languageName = language.id.toUpperCase();\n\t\t\t\t\tconst languageId = language.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: languageName,\n\t\t\t\t\t\tvalue: languageId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the countries codes to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCountriesCodes(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tfor (const countryCode of isoCountryCodes) {\n\t\t\t\t\tconst countryCodeName = `${countryCode.name} - ${countryCode.alpha2}`;\n\t\t\t\t\tconst countryCodeId = countryCode.alpha2;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: countryCodeName,\n\t\t\t\t\t\tvalue: countryCodeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the video categories to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getVideoCategories(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst countryCode = this.getCurrentNodeParameter('regionCode') as string;\n\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.regionCode = countryCode;\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tconst categories = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const category of categories) {\n\t\t\t\t\tconst categoryName = category.snippet.title;\n\t\t\t\t\tconst categoryId = category.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: categoryName,\n\t\t\t\t\t\tvalue: categoryId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the playlists to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPlaylists(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tqs.mine = true;\n\t\t\t\tconst playlists = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const playlist of playlists) {\n\t\t\t\t\tconst playlistName = playlist.snippet.title;\n\t\t\t\t\tconst playlistId = playlist.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: playlistName,\n\t\t\t\t\t\tvalue: playlistId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tconst qs: IDataObject = {};\n\t\tlet responseData;\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\ttry {\n\t\t\t\tif (resource === 'channel') {\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = channelId;\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/channels', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.categoryId || qs.forUsername || qs.id || qs.managedByMe) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\tchannel: {},\n\t\t\t\t\t\t\t\timage: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.brandingSettingsUi) {\n\t\t\t\t\t\t\tconst channelSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.channelSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst channelSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (channelSettingsValues?.channel) {\n\t\t\t\t\t\t\t\tconst channelSettingsOptions = channelSettingsValues.channel as IDataObject;\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.country) {\n\t\t\t\t\t\t\t\t\tchannelSettings.country = channelSettingsOptions.country;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.description) {\n\t\t\t\t\t\t\t\t\tchannelSettings.description = channelSettingsOptions.description;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultLanguage) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultLanguage = channelSettingsOptions.defaultLanguage;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultTab) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultTab = channelSettingsOptions.defaultTab;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsTitle) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsTitle =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsTitle;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsUrls) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsUrls =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsUrls;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.keywords) {\n\t\t\t\t\t\t\t\t\tchannelSettings.keywords = channelSettingsOptions.keywords;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.moderateComments) {\n\t\t\t\t\t\t\t\t\tchannelSettings.moderateComments =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.moderateComments as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showRelatedChannels) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showRelatedChannels =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.showRelatedChannels as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showBrowseView) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showBrowseView = channelSettingsOptions.showBrowseView as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.trackingAnalyticsAccountId) {\n\t\t\t\t\t\t\t\t\tchannelSettings.trackingAnalyticsAccountId =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.trackingAnalyticsAccountId as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.unsubscribedTrailer) {\n\t\t\t\t\t\t\t\t\tchannelSettings.unsubscribedTrailer =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.unsubscribedTrailer as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst imageSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.imageSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst imageSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (imageSettingsValues?.image) {\n\t\t\t\t\t\t\t\tconst imageSettingsOptions = imageSettings.image as IDataObject;\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.bannerExternalUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.bannerExternalUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.bannerExternalUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.trackingImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.trackingImageUrl = imageSettingsOptions.trackingImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.watchIconImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.watchIconImageUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.watchIconImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.channel = channelSettings;\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.image = imageSettings;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channelBanners/insert\n\t\t\t\t\tif (operation === 'uploadBanner') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\t\t\t\t\t\tconst body = await this.helpers.getBinaryDataBuffer(i, binaryProperty);\n\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t...(binaryData.mimeType ? { 'Content-Type': binaryData.mimeType } : {}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjson: false,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst response = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/channelBanners/insert',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\trequestOptions,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst { url } = JSON.parse(response as string);\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\t\timage: {\n\t\t\t\t\t\t\t\t\t\tbannerExternalUrl: url,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlist') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.channelId || qs.id) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/insert\n\t\t\t\t\tif (operation === 'create') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (options.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.privacyStatus = options.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = options.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwnerChannel) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwnerChannel = options.onBehalfOfContentOwnerChannel as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlistItem') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistItemId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\t//const filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.playlistId = playlistId;\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/insert\n\t\t\t\t\tif (operation === 'add') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, contentDetails';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\tplaylistId,\n\t\t\t\t\t\t\t\tresourceId: {\n\t\t\t\t\t\t\t\t\tkind: 'youtube#video',\n\t\t\t\t\t\t\t\t\tvideoId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontentDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.position) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.position = options.position as number;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.note) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.note = options.note as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.startAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.startAt = options.startAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.endAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.endAt = options.endAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistItemId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'video') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/search/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tqs.type = 'video';\n\n\t\t\t\t\t\tqs.forMine = true;\n\n\t\t\t\t\t\tif (filters.publishedAfter) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedAfter', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (filters.publishedBefore) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedBefore', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tif (Object.keys(filters).length > 0) {\n\t\t\t\t\t\t\tdelete qs.forMine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (qs.relatedToVideoId && qs.forDeveloper !== undefined) {\n\t\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\t\"When using the parameter 'related to video' the parameter 'for developer' cannot be set\",\n\t\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/search',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/search', {}, qs);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/list?hl=en\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'liveStreamingDetails',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'player',\n\t\t\t\t\t\t\t\t'recordingDetails',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = videoId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/videos', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/guides/uploading_a_video?hl=en\n\t\t\t\t\tif (operation === 'upload') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\n\t\t\t\t\t\tlet mimeType: string;\n\t\t\t\t\t\tlet contentLength: number;\n\t\t\t\t\t\tlet fileContent: Buffer | Readable;\n\n\t\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\t\t// Stream data in 256KB chunks, and upload the via the resumable upload api\n\t\t\t\t\t\t\tfileContent = await this.helpers.getBinaryStream(binaryData.id, UPLOAD_CHUNK_SIZE);\n\t\t\t\t\t\t\tconst metadata = await this.helpers.getBinaryMetadata(binaryData.id);\n\t\t\t\t\t\t\tcontentLength = metadata.fileSize;\n\t\t\t\t\t\t\tmimeType = metadata.mimeType ?? binaryData.mimeType;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfileContent = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t\t\tcontentLength = fileContent.length;\n\t\t\t\t\t\t\tmimeType = binaryData.mimeType;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst payload = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t\tdescription: options.description,\n\t\t\t\t\t\t\t\ttags: (options.tags as string)?.split(','),\n\t\t\t\t\t\t\t\tdefaultLanguage: options.defaultLanguage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\t\tprivacyStatus: options.privacyStatus,\n\t\t\t\t\t\t\t\tembeddable: options.embeddable,\n\t\t\t\t\t\t\t\tpublicStatsViewable: options.publicStatsViewable,\n\t\t\t\t\t\t\t\tpublishAt: options.publishAt,\n\t\t\t\t\t\t\t\tselfDeclaredMadeForKids: options.selfDeclaredMadeForKids,\n\t\t\t\t\t\t\t\tlicense: options.license,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trecordingDetails: {\n\t\t\t\t\t\t\t\trecordingDate: options.recordingDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst resumableUpload = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/videos',\n\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuploadType: 'resumable',\n\t\t\t\t\t\t\t\tpart: 'snippet,status,recordingDetails',\n\t\t\t\t\t\t\t\tnotifySubscribers: options.notifySubscribers ?? false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Length': contentLength,\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Type': mimeType,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\t\t\tresolveWithFullResponse: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst uploadUrl = resumableUpload.headers.location;\n\n\t\t\t\t\t\tlet uploadId;\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor await (const chunk of fileContent) {\n\t\t\t\t\t\t\tconst nextOffset = offset + Number(chunk.length);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await this.helpers.httpRequest({\n\t\t\t\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\t'Content-Length': chunk.length,\n\t\t\t\t\t\t\t\t\t\t'Content-Range': `bytes ${offset}-${nextOffset - 1}/${contentLength}`,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbody: chunk,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tuploadId = response.id;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tif (error.response?.status !== 308) throw error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toffset = nextOffset;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = { uploadId, ...resumableUpload.body };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst id = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status, recordingDetails';\n\n\t\t\t\t\t\tconst body = {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t\trecordingDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.embeddable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.embeddable = updateFields.embeddable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publicStatsViewable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publicStatsViewable = updateFields.publicStatsViewable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publishAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publishAt = updateFields.publishAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.selfDeclaredMadeForKids) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.selfDeclaredMadeForKids = updateFields.selfDeclaredMadeForKids as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.recordingDate) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.recordingDetails.recordingDate = updateFields.recordingDate as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.license) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.license = updateFields.license as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'PUT', '/youtube/v3/videos', body, qs);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/delete?hl=en\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'DELETE', '/youtube/v3/videos', body);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/rate?hl=en\n\t\t\t\t\tif (operation === 'rate') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst rating = this.getNodeParameter('rating', i) as string;\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t\trating,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/videos/rate',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'videoCategory') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videoCategories/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst regionCode = this.getNodeParameter('regionCode', i) as string;\n\n\t\t\t\t\t\tqs.regionCode = regionCode;\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.items;\n\n\t\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = responseData.splice(0, limit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\tconst executionErrorData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.message }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionErrorData);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t{ itemData: { item: i } },\n\t\t\t);\n\n\t\t\treturnData.push(...executionData);\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["import_GenericFunctions"]}
|
|
1
|
+
{"version":3,"sources":["../../../../nodes/Google/YouTube/YouTube.node.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, BINARY_ENCODING, NodeOperationError } from 'n8n-workflow';\nimport { Readable } from 'stream';\n\nimport { isoCountryCodes } from '@utils/ISOCountryCodes';\n\nimport { channelFields, channelOperations } from './ChannelDescription';\nimport { googleApiRequest, googleApiRequestAllItems } from './GenericFunctions';\nimport { playlistFields, playlistOperations } from './PlaylistDescription';\nimport { playlistItemFields, playlistItemOperations } from './PlaylistItemDescription';\nimport { videoCategoryFields, videoCategoryOperations } from './VideoCategoryDescription';\nimport { videoFields, videoOperations } from './VideoDescription';\nimport { validateAndSetDate } from '../GenericFunctions';\n\nconst UPLOAD_CHUNK_SIZE = 1024 * 1024;\n\nexport class YouTube implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'YouTube',\n\t\tname: 'youTube',\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg\n\t\ticon: 'file:youTube.png',\n\t\tgroup: ['input'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume YouTube API',\n\t\tdefaults: {\n\t\t\tname: 'YouTube',\n\t\t},\n\t\tusableAsTool: true,\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'youTubeOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Channel',\n\t\t\t\t\t\tvalue: 'channel',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist',\n\t\t\t\t\t\tvalue: 'playlist',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Playlist Item',\n\t\t\t\t\t\tvalue: 'playlistItem',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video',\n\t\t\t\t\t\tvalue: 'video',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Video Category',\n\t\t\t\t\t\tvalue: 'videoCategory',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'channel',\n\t\t\t},\n\t\t\t...channelOperations,\n\t\t\t...channelFields,\n\n\t\t\t...playlistOperations,\n\t\t\t...playlistFields,\n\n\t\t\t...playlistItemOperations,\n\t\t\t...playlistItemFields,\n\n\t\t\t...videoOperations,\n\t\t\t...videoFields,\n\n\t\t\t...videoCategoryOperations,\n\t\t\t...videoCategoryFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\t// Get all the languages to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLanguages(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst languages = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/i18nLanguages',\n\t\t\t\t);\n\t\t\t\tfor (const language of languages) {\n\t\t\t\t\tconst languageName = language.id.toUpperCase();\n\t\t\t\t\tconst languageId = language.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: languageName,\n\t\t\t\t\t\tvalue: languageId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the countries codes to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCountriesCodes(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tfor (const countryCode of isoCountryCodes) {\n\t\t\t\t\tconst countryCodeName = `${countryCode.name} - ${countryCode.alpha2}`;\n\t\t\t\t\tconst countryCodeId = countryCode.alpha2;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: countryCodeName,\n\t\t\t\t\t\tvalue: countryCodeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the video categories to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getVideoCategories(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst countryCode = this.getCurrentNodeParameter('regionCode') as string;\n\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.regionCode = countryCode;\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tconst categories = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const category of categories) {\n\t\t\t\t\tconst categoryName = category.snippet.title;\n\t\t\t\t\tconst categoryId = category.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: categoryName,\n\t\t\t\t\t\tvalue: categoryId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t\t// Get all the playlists to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPlaylists(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\t\t\t\tconst qs: IDataObject = {};\n\t\t\t\tqs.part = 'snippet';\n\t\t\t\tqs.mine = true;\n\t\t\t\tconst playlists = await googleApiRequestAllItems.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t'items',\n\t\t\t\t\t'GET',\n\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t{},\n\t\t\t\t\tqs,\n\t\t\t\t);\n\t\t\t\tfor (const playlist of playlists) {\n\t\t\t\t\tconst playlistName = playlist.snippet.title;\n\t\t\t\t\tconst playlistId = playlist.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: playlistName,\n\t\t\t\t\t\tvalue: playlistId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tconst qs: IDataObject = {};\n\t\tlet responseData;\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\ttry {\n\t\t\t\tif (resource === 'channel') {\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = channelId;\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/channels', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'brandingSettings',\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'contentOwnerDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.categoryId || qs.forUsername || qs.id || qs.managedByMe) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channels/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\tchannel: {},\n\t\t\t\t\t\t\t\timage: {},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.brandingSettingsUi) {\n\t\t\t\t\t\t\tconst channelSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.channelSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst channelSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (channelSettingsValues?.channel) {\n\t\t\t\t\t\t\t\tconst channelSettingsOptions = channelSettingsValues.channel as IDataObject;\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.country) {\n\t\t\t\t\t\t\t\t\tchannelSettings.country = channelSettingsOptions.country;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.description) {\n\t\t\t\t\t\t\t\t\tchannelSettings.description = channelSettingsOptions.description;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultLanguage) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultLanguage = channelSettingsOptions.defaultLanguage;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.defaultTab) {\n\t\t\t\t\t\t\t\t\tchannelSettings.defaultTab = channelSettingsOptions.defaultTab;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsTitle) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsTitle =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsTitle;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.featuredChannelsUrls) {\n\t\t\t\t\t\t\t\t\tchannelSettings.featuredChannelsUrls =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.featuredChannelsUrls;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.keywords) {\n\t\t\t\t\t\t\t\t\tchannelSettings.keywords = channelSettingsOptions.keywords;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.moderateComments) {\n\t\t\t\t\t\t\t\t\tchannelSettings.moderateComments =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.moderateComments as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.profileColor) {\n\t\t\t\t\t\t\t\t\tchannelSettings.profileColor = channelSettingsOptions.profileColor as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showRelatedChannels) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showRelatedChannels =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.showRelatedChannels as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.showBrowseView) {\n\t\t\t\t\t\t\t\t\tchannelSettings.showBrowseView = channelSettingsOptions.showBrowseView as boolean;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.trackingAnalyticsAccountId) {\n\t\t\t\t\t\t\t\t\tchannelSettings.trackingAnalyticsAccountId =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.trackingAnalyticsAccountId as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (channelSettingsOptions.unsubscribedTrailer) {\n\t\t\t\t\t\t\t\t\tchannelSettings.unsubscribedTrailer =\n\t\t\t\t\t\t\t\t\t\tchannelSettingsOptions.unsubscribedTrailer as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst imageSettingsValues = (updateFields.brandingSettingsUi as IDataObject)\n\t\t\t\t\t\t\t\t.imageSettingsValues as IDataObject | undefined;\n\t\t\t\t\t\t\tconst imageSettings: IDataObject = {};\n\t\t\t\t\t\t\tif (imageSettingsValues?.image) {\n\t\t\t\t\t\t\t\tconst imageSettingsOptions = imageSettings.image as IDataObject;\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.bannerExternalUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.bannerExternalUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.bannerExternalUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.trackingImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.trackingImageUrl = imageSettingsOptions.trackingImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (imageSettingsOptions.watchIconImageUrl) {\n\t\t\t\t\t\t\t\t\timageSettings.watchIconImageUrl =\n\t\t\t\t\t\t\t\t\t\timageSettingsOptions.watchIconImageUrl as string;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.channel = channelSettings;\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.brandingSettings.image = imageSettings;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/channelBanners/insert\n\t\t\t\t\tif (operation === 'uploadBanner') {\n\t\t\t\t\t\tconst channelId = this.getNodeParameter('channelId', i) as string;\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\t\t\t\t\t\tconst body = await this.helpers.getBinaryDataBuffer(i, binaryProperty);\n\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t...(binaryData.mimeType ? { 'Content-Type': binaryData.mimeType } : {}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tjson: false,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst response = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/channelBanners/insert',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\trequestOptions,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst { url } = JSON.parse(response as string);\n\n\t\t\t\t\t\tqs.part = 'brandingSettings';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/channels',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: channelId,\n\t\t\t\t\t\t\t\tbrandingSettings: {\n\t\t\t\t\t\t\t\t\timage: {\n\t\t\t\t\t\t\t\t\t\tbannerExternalUrl: url,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlist') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'localizations', 'player', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tqs.mine = true;\n\n\t\t\t\t\t\tif (qs.channelId || qs.id) {\n\t\t\t\t\t\t\tdelete qs.mine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/insert\n\t\t\t\t\tif (operation === 'create') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (options.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.privacyStatus = options.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = options.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwnerChannel) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwnerChannel = options.onBehalfOfContentOwnerChannel as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = updateFields.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlists',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'playlistItem') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = playlistItemId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\t//const filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = ['contentDetails', 'id', 'snippet', 'status'];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.playlistId = playlistId;\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/insert\n\t\t\t\t\tif (operation === 'add') {\n\t\t\t\t\t\tconst playlistId = this.getNodeParameter('playlistId', i) as string;\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, contentDetails';\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\tplaylistId,\n\t\t\t\t\t\t\t\tresourceId: {\n\t\t\t\t\t\t\t\t\tkind: 'youtube#video',\n\t\t\t\t\t\t\t\t\tvideoId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcontentDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.position) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.position = options.position as number;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.note) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.note = options.note as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.startAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.startAt = options.startAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.endAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.contentDetails.endAt = options.endAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlistItems/delete\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst playlistItemId = this.getNodeParameter('playlistItemId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: playlistItemId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t\t'/youtube/v3/playlistItems',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'video') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/search/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst filters = this.getNodeParameter('filters', i);\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tqs.type = 'video';\n\n\t\t\t\t\t\tqs.forMine = true;\n\n\t\t\t\t\t\tif (filters.publishedAfter) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedAfter', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (filters.publishedBefore) {\n\t\t\t\t\t\t\tvalidateAndSetDate(filters, 'publishedBefore', this.getTimezone(), this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(qs, options, filters);\n\n\t\t\t\t\t\tif (Object.keys(filters).length > 0) {\n\t\t\t\t\t\t\tdelete qs.forMine;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (qs.relatedToVideoId && qs.forDeveloper !== undefined) {\n\t\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t\t\"When using the parameter 'related to video' the parameter 'for developer' cannot be set\",\n\t\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\t\tresponseData = await googleApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'items',\n\t\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t\t'/youtube/v3/search',\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/search', {}, qs);\n\t\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/list?hl=en\n\t\t\t\t\tif (operation === 'get') {\n\t\t\t\t\t\tlet part = this.getNodeParameter('part', i) as string[];\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tif (part.includes('*')) {\n\t\t\t\t\t\t\tpart = [\n\t\t\t\t\t\t\t\t'contentDetails',\n\t\t\t\t\t\t\t\t'id',\n\t\t\t\t\t\t\t\t'liveStreamingDetails',\n\t\t\t\t\t\t\t\t'localizations',\n\t\t\t\t\t\t\t\t'player',\n\t\t\t\t\t\t\t\t'recordingDetails',\n\t\t\t\t\t\t\t\t'snippet',\n\t\t\t\t\t\t\t\t'statistics',\n\t\t\t\t\t\t\t\t'status',\n\t\t\t\t\t\t\t\t'topicDetails',\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tqs.part = part.join(',');\n\n\t\t\t\t\t\tqs.id = videoId;\n\n\t\t\t\t\t\tObject.assign(qs, options);\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'GET', '/youtube/v3/videos', {}, qs);\n\n\t\t\t\t\t\tresponseData = responseData.items;\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/guides/uploading_a_video?hl=en\n\t\t\t\t\tif (operation === 'upload') {\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\t\tconst binaryProperty = this.getNodeParameter('binaryProperty', i);\n\n\t\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryProperty);\n\n\t\t\t\t\t\tlet mimeType: string;\n\t\t\t\t\t\tlet contentLength: number;\n\t\t\t\t\t\tlet fileContent: Readable;\n\n\t\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\t\t// Stream data in 256KB chunks, and upload the via the resumable upload api\n\t\t\t\t\t\t\tfileContent = await this.helpers.getBinaryStream(binaryData.id, UPLOAD_CHUNK_SIZE);\n\t\t\t\t\t\t\tconst metadata = await this.helpers.getBinaryMetadata(binaryData.id);\n\t\t\t\t\t\t\tcontentLength = metadata.fileSize;\n\t\t\t\t\t\t\tmimeType = metadata.mimeType ?? binaryData.mimeType;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst buffer = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t\t\tfileContent = Readable.from(buffer);\n\t\t\t\t\t\t\tcontentLength = buffer.length;\n\t\t\t\t\t\t\tmimeType = binaryData.mimeType;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst payload = {\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t\tdescription: options.description,\n\t\t\t\t\t\t\t\ttags: (options.tags as string)?.split(','),\n\t\t\t\t\t\t\t\tdefaultLanguage: options.defaultLanguage,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\t\tprivacyStatus: options.privacyStatus,\n\t\t\t\t\t\t\t\tembeddable: options.embeddable,\n\t\t\t\t\t\t\t\tpublicStatsViewable: options.publicStatsViewable,\n\t\t\t\t\t\t\t\tpublishAt: options.publishAt,\n\t\t\t\t\t\t\t\tselfDeclaredMadeForKids: options.selfDeclaredMadeForKids,\n\t\t\t\t\t\t\t\tlicense: options.license,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trecordingDetails: {\n\t\t\t\t\t\t\t\trecordingDate: options.recordingDate,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst resumableUpload = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/upload/youtube/v3/videos',\n\t\t\t\t\t\t\tpayload,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tuploadType: 'resumable',\n\t\t\t\t\t\t\t\tpart: 'snippet,status,recordingDetails',\n\t\t\t\t\t\t\t\tnotifySubscribers: options.notifySubscribers ?? false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Length': contentLength,\n\t\t\t\t\t\t\t\t\t'X-Upload-Content-Type': mimeType,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\t\t\tresolveWithFullResponse: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst uploadUrl = resumableUpload.headers.location;\n\n\t\t\t\t\t\tlet uploadId;\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor await (const chunk of fileContent) {\n\t\t\t\t\t\t\tconst nextOffset = offset + Number(chunk.length);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst response = await this.helpers.httpRequest({\n\t\t\t\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\t'Content-Length': chunk.length,\n\t\t\t\t\t\t\t\t\t\t'Content-Range': `bytes ${offset}-${nextOffset - 1}/${contentLength}`,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbody: chunk,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tuploadId = response.id;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tif (error.response?.status !== 308) throw error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toffset = nextOffset;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = { uploadId, ...resumableUpload.body };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/playlists/update\n\t\t\t\t\tif (operation === 'update') {\n\t\t\t\t\t\tconst id = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst title = this.getNodeParameter('title', i) as string;\n\t\t\t\t\t\tconst categoryId = this.getNodeParameter('categoryId', i) as string;\n\t\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\t\tqs.part = 'snippet, status, recordingDetails';\n\n\t\t\t\t\t\tconst body = {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tsnippet: {\n\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstatus: {},\n\t\t\t\t\t\t\trecordingDetails: {},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.description = updateFields.description as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.privacyStatus) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.privacyStatus = updateFields.privacyStatus as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.tags) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.tags = (updateFields.tags as string).split(',');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.embeddable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.embeddable = updateFields.embeddable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publicStatsViewable) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publicStatsViewable = updateFields.publicStatsViewable as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.publishAt) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.publishAt = updateFields.publishAt as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.selfDeclaredMadeForKids) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.selfDeclaredMadeForKids = updateFields.selfDeclaredMadeForKids as boolean;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.recordingDate) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.recordingDetails.recordingDate = updateFields.recordingDate as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.license) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.status.license = updateFields.license as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (updateFields.defaultLanguage) {\n\t\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\t\tbody.snippet.defaultLanguage = updateFields.defaultLanguage as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'PUT', '/youtube/v3/videos', body, qs);\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/delete?hl=en\n\t\t\t\t\tif (operation === 'delete') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (options.onBehalfOfContentOwner) {\n\t\t\t\t\t\t\tqs.onBehalfOfContentOwner = options.onBehalfOfContentOwner as string;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(this, 'DELETE', '/youtube/v3/videos', body);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videos/rate?hl=en\n\t\t\t\t\tif (operation === 'rate') {\n\t\t\t\t\t\tconst videoId = this.getNodeParameter('videoId', i) as string;\n\t\t\t\t\t\tconst rating = this.getNodeParameter('rating', i) as string;\n\n\t\t\t\t\t\tconst body: IDataObject = {\n\t\t\t\t\t\t\tid: videoId,\n\t\t\t\t\t\t\trating,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t'/youtube/v3/videos/rate',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tresponseData = { success: true };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (resource === 'videoCategory') {\n\t\t\t\t\t//https://developers.google.com/youtube/v3/docs/videoCategories/list\n\t\t\t\t\tif (operation === 'getAll') {\n\t\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\t\tconst regionCode = this.getNodeParameter('regionCode', i) as string;\n\n\t\t\t\t\t\tqs.regionCode = regionCode;\n\n\t\t\t\t\t\tqs.part = 'snippet';\n\n\t\t\t\t\t\tresponseData = await googleApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t'/youtube/v3/videoCategories',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.items;\n\n\t\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\t\tresponseData = responseData.splice(0, limit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\tconst executionErrorData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ error: error.message }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\t\t\t\t\treturnData.push(...executionErrorData);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t{ itemData: { item: i } },\n\t\t\t);\n\n\t\t\treturnData.push(...executionData);\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["import_GenericFunctions"]}
|
|
@@ -178,7 +178,41 @@
|
|
|
178
178
|
"type": "string"
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
|
+
},
|
|
182
|
+
"status": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"properties": {
|
|
185
|
+
"embeddable": {
|
|
186
|
+
"type": "boolean"
|
|
187
|
+
},
|
|
188
|
+
"license": {
|
|
189
|
+
"type": "string"
|
|
190
|
+
},
|
|
191
|
+
"madeForKids": {
|
|
192
|
+
"type": "boolean"
|
|
193
|
+
},
|
|
194
|
+
"privacyStatus": {
|
|
195
|
+
"type": "string"
|
|
196
|
+
},
|
|
197
|
+
"publicStatsViewable": {
|
|
198
|
+
"type": "boolean"
|
|
199
|
+
},
|
|
200
|
+
"uploadStatus": {
|
|
201
|
+
"type": "string"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"topicDetails": {
|
|
206
|
+
"type": "object",
|
|
207
|
+
"properties": {
|
|
208
|
+
"topicCategories": {
|
|
209
|
+
"type": "array",
|
|
210
|
+
"items": {
|
|
211
|
+
"type": "string"
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
181
215
|
}
|
|
182
216
|
},
|
|
183
|
-
"version":
|
|
217
|
+
"version": 3
|
|
184
218
|
}
|
|
@@ -10,20 +10,54 @@
|
|
|
10
10
|
"portalId": {
|
|
11
11
|
"type": "integer"
|
|
12
12
|
},
|
|
13
|
-
"
|
|
14
|
-
"type": "
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
13
|
+
"properties": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"properties": {
|
|
16
|
+
"dealname": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"properties": {
|
|
19
|
+
"source": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"sourceId": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
},
|
|
25
|
+
"timestamp": {
|
|
26
|
+
"type": "integer"
|
|
27
|
+
},
|
|
28
|
+
"value": {
|
|
29
|
+
"type": "string"
|
|
30
|
+
},
|
|
31
|
+
"versions": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"properties": {
|
|
36
|
+
"name": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"source": {
|
|
40
|
+
"type": "string"
|
|
41
|
+
},
|
|
42
|
+
"sourceId": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
},
|
|
45
|
+
"timestamp": {
|
|
46
|
+
"type": "integer"
|
|
47
|
+
},
|
|
48
|
+
"updatedByUserId": {
|
|
49
|
+
"type": "integer"
|
|
50
|
+
},
|
|
51
|
+
"value": {
|
|
52
|
+
"type": "string"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
23
57
|
}
|
|
24
58
|
}
|
|
25
59
|
}
|
|
26
60
|
}
|
|
27
61
|
},
|
|
28
|
-
"version":
|
|
62
|
+
"version": 3
|
|
29
63
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"createdate": {
|
|
17
17
|
"type": "string"
|
|
18
18
|
},
|
|
19
|
-
"
|
|
19
|
+
"dealname": {
|
|
20
20
|
"type": "string"
|
|
21
21
|
},
|
|
22
22
|
"hs_lastmodifieddate": {
|
|
@@ -24,9 +24,6 @@
|
|
|
24
24
|
},
|
|
25
25
|
"hs_object_id": {
|
|
26
26
|
"type": "string"
|
|
27
|
-
},
|
|
28
|
-
"pipeline": {
|
|
29
|
-
"type": "string"
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
29
|
},
|
|
@@ -34,5 +31,5 @@
|
|
|
34
31
|
"type": "string"
|
|
35
32
|
}
|
|
36
33
|
},
|
|
37
|
-
"version":
|
|
34
|
+
"version": 3
|
|
38
35
|
}
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"persistenceTimestamp": {
|
|
46
46
|
"type": "integer"
|
|
47
47
|
},
|
|
48
|
-
"
|
|
48
|
+
"requestId": {
|
|
49
49
|
"type": "string"
|
|
50
50
|
},
|
|
51
|
-
"
|
|
51
|
+
"source": {
|
|
52
52
|
"type": "string"
|
|
53
53
|
},
|
|
54
|
-
"
|
|
54
|
+
"sourceId": {
|
|
55
55
|
"type": "string"
|
|
56
56
|
},
|
|
57
57
|
"sourceVid": {
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
|
-
"version":
|
|
77
|
+
"version": 3
|
|
78
78
|
}
|
|
@@ -42,7 +42,7 @@ class Interval {
|
|
|
42
42
|
outputs: [import_n8n_workflow.NodeConnectionTypes.Main],
|
|
43
43
|
properties: [
|
|
44
44
|
{
|
|
45
|
-
displayName: `This workflow will run on the schedule you define here once you <a data-key="activate">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking '
|
|
45
|
+
displayName: `This workflow will run on the schedule you define here once you <a data-key="activate">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking 'execute workflow'`,
|
|
46
46
|
name: "notice",
|
|
47
47
|
type: "notice",
|
|
48
48
|
default: ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/Interval/Interval.node.ts"],"sourcesContent":["import type {\n\tITriggerFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nexport class Interval implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Interval',\n\t\tname: 'interval',\n\t\ticon: 'fa:hourglass',\n\t\tgroup: ['trigger', 'schedule'],\n\t\tversion: 1,\n\t\thidden: true,\n\t\tdescription: 'Triggers the workflow in a given interval',\n\t\teventTriggerDescription: '',\n\t\tactivationMessage:\n\t\t\t'Your interval trigger will now trigger executions on the schedule you have defined.',\n\t\tdefaults: {\n\t\t\tname: 'Interval',\n\t\t\tcolor: '#00FF00',\n\t\t},\n\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'This workflow will run on the schedule you define here once you <a data-key=\"activate\">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking \\'
|
|
1
|
+
{"version":3,"sources":["../../../nodes/Interval/Interval.node.ts"],"sourcesContent":["import type {\n\tITriggerFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nexport class Interval implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Interval',\n\t\tname: 'interval',\n\t\ticon: 'fa:hourglass',\n\t\tgroup: ['trigger', 'schedule'],\n\t\tversion: 1,\n\t\thidden: true,\n\t\tdescription: 'Triggers the workflow in a given interval',\n\t\teventTriggerDescription: '',\n\t\tactivationMessage:\n\t\t\t'Your interval trigger will now trigger executions on the schedule you have defined.',\n\t\tdefaults: {\n\t\t\tname: 'Interval',\n\t\t\tcolor: '#00FF00',\n\t\t},\n\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'This workflow will run on the schedule you define here once you <a data-key=\"activate\">activate</a> it.<br><br>For testing, you can also trigger it manually: by going back to the canvas and clicking \\'execute workflow\\'',\n\t\t\t\tname: 'notice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Interval',\n\t\t\t\tname: 'interval',\n\t\t\t\ttype: 'number',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 1,\n\t\t\t\t},\n\t\t\t\tdefault: 1,\n\t\t\t\tdescription: 'Interval value',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Unit',\n\t\t\t\tname: 'unit',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Seconds',\n\t\t\t\t\t\tvalue: 'seconds',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Minutes',\n\t\t\t\t\t\tvalue: 'minutes',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Hours',\n\t\t\t\t\t\tvalue: 'hours',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'seconds',\n\t\t\t\tdescription: 'Unit of the interval value',\n\t\t\t},\n\t\t],\n\t};\n\n\tasync trigger(this: ITriggerFunctions): Promise<ITriggerResponse> {\n\t\tconst interval = this.getNodeParameter('interval') as number;\n\t\tconst unit = this.getNodeParameter('unit') as string;\n\n\t\tif (interval <= 0) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tthis.getNode(),\n\t\t\t\t'The interval has to be set to at least 1 or higher!',\n\t\t\t);\n\t\t}\n\n\t\tlet intervalValue = interval;\n\t\tif (unit === 'minutes') {\n\t\t\tintervalValue *= 60;\n\t\t}\n\t\tif (unit === 'hours') {\n\t\t\tintervalValue *= 60 * 60;\n\t\t}\n\n\t\tconst executeTrigger = () => {\n\t\t\tthis.emit([this.helpers.returnJsonArray([{}])]);\n\t\t};\n\n\t\tintervalValue *= 1000;\n\n\t\t// Reference: https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args\n\t\tif (intervalValue > 2147483647) {\n\t\t\tthrow new NodeOperationError(this.getNode(), 'The interval value is too large.');\n\t\t}\n\n\t\tconst intervalObj = setInterval(executeTrigger, intervalValue);\n\n\t\tasync function closeFunction() {\n\t\t\tclearInterval(intervalObj);\n\t\t}\n\n\t\tasync function manualTriggerFunction() {\n\t\t\texecuteTrigger();\n\t\t}\n\n\t\treturn {\n\t\t\tcloseFunction,\n\t\t\tmanualTriggerFunction,\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAAwD;AAEjD,MAAM,SAA8B;AAAA,EAApC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,yBAAyB;AAAA,MACzB,mBACC;AAAA,MACD,UAAU;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,MAEA,QAAQ,CAAC;AAAA,MACT,SAAS,CAAC,wCAAoB,IAAI;AAAA,MAClC,YAAY;AAAA,QACX;AAAA,UACC,aACC;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,aAAa;AAAA,YACZ,UAAU;AAAA,UACX;AAAA,UACA,SAAS;AAAA,UACT,aAAa;AAAA,QACd;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,YACR;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,YACA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,YACR;AAAA,UACD;AAAA,UACA,SAAS;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,UAA4D;AACjE,UAAM,WAAW,KAAK,iBAAiB,UAAU;AACjD,UAAM,OAAO,KAAK,iBAAiB,MAAM;AAEzC,QAAI,YAAY,GAAG;AAClB,YAAM,IAAI;AAAA,QACT,KAAK,QAAQ;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAEA,QAAI,gBAAgB;AACpB,QAAI,SAAS,WAAW;AACvB,uBAAiB;AAAA,IAClB;AACA,QAAI,SAAS,SAAS;AACrB,uBAAiB,KAAK;AAAA,IACvB;AAEA,UAAM,iBAAiB,MAAM;AAC5B,WAAK,KAAK,CAAC,KAAK,QAAQ,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IAC/C;AAEA,qBAAiB;AAGjB,QAAI,gBAAgB,YAAY;AAC/B,YAAM,IAAI,uCAAmB,KAAK,QAAQ,GAAG,kCAAkC;AAAA,IAChF;AAEA,UAAM,cAAc,YAAY,gBAAgB,aAAa;AAE7D,mBAAe,gBAAgB;AAC9B,oBAAc,WAAW;AAAA,IAC1B;AAEA,mBAAe,wBAAwB;AACtC,qBAAe;AAAA,IAChB;AAEA,WAAO;AAAA,MACN;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
|