n8n-nodes-runninghub-client 0.1.3
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/README.md +287 -0
- package/dist/credentials/RunninghubApiApi.credentials.d.ts +10 -0
- package/dist/credentials/RunninghubApiApi.credentials.js +41 -0
- package/dist/credentials/RunninghubApiApi.credentials.js.map +1 -0
- package/dist/icons/runninghub-dark.svg +24 -0
- package/dist/icons/runninghub-light.svg +24 -0
- package/dist/nodes/RunninghubApi/RunninghubApi.node.d.ts +5 -0
- package/dist/nodes/RunninghubApi/RunninghubApi.node.js +185 -0
- package/dist/nodes/RunninghubApi/RunninghubApi.node.js.map +1 -0
- package/dist/nodes/RunninghubApi/RunninghubApi.node.json +18 -0
- package/dist/nodes/RunninghubApi/requestRouting.d.ts +24 -0
- package/dist/nodes/RunninghubApi/requestRouting.js +507 -0
- package/dist/nodes/RunninghubApi/requestRouting.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/account/create.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/account/create.js +27 -0
- package/dist/nodes/RunninghubApi/resources/account/create.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/account/get.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/account/get.js +18 -0
- package/dist/nodes/RunninghubApi/resources/account/get.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/account/getApiKeyList.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/account/getApiKeyList.js +18 -0
- package/dist/nodes/RunninghubApi/resources/account/getApiKeyList.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/account/getQueueStatus.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/account/getQueueStatus.js +18 -0
- package/dist/nodes/RunninghubApi/resources/account/getQueueStatus.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/account/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/account/index.js +45 -0
- package/dist/nodes/RunninghubApi/resources/account/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/getApiCallDemo.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/getApiCallDemo.js +21 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/getApiCallDemo.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/index.js +45 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/listPublicModels.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/listPublicModels.js +83 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/listPublicModels.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/runAiApp.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/runAiApp.js +52 -0
- package/dist/nodes/RunninghubApi/resources/aiApp/runAiApp.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/file/getLoraUploadUrl.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/file/getLoraUploadUrl.js +32 -0
- package/dist/nodes/RunninghubApi/resources/file/getLoraUploadUrl.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/file/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/file/index.js +45 -0
- package/dist/nodes/RunninghubApi/resources/file/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/file/uploadDeprecatedFile.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/file/uploadDeprecatedFile.js +61 -0
- package/dist/nodes/RunninghubApi/resources/file/uploadDeprecatedFile.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/file/uploadFile.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/file/uploadFile.js +32 -0
- package/dist/nodes/RunninghubApi/resources/file/uploadFile.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/mediaTools/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/mediaTools/index.js +41 -0
- package/dist/nodes/RunninghubApi/resources/mediaTools/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/mediaTools/request.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/mediaTools/request.js +242 -0
- package/dist/nodes/RunninghubApi/resources/mediaTools/request.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/index.js +37 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/previewModelApiPrice.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/previewModelApiPrice.js +32 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/previewModelApiPrice.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/runModelApi.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/runModelApi.js +32 -0
- package/dist/nodes/RunninghubApi/resources/modelApi/runModelApi.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/nativeComfy/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/nativeComfy/index.js +53 -0
- package/dist/nodes/RunninghubApi/resources/nativeComfy/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/nativeComfy/request.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/nativeComfy/request.js +200 -0
- package/dist/nodes/RunninghubApi/resources/nativeComfy/request.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/getModelParams.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/getModelParams.js +32 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/getModelParams.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/index.js +37 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/runQuickCreate.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/runQuickCreate.js +43 -0
- package/dist/nodes/RunninghubApi/resources/quickCreate/runQuickCreate.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/task/cancelTask.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/task/cancelTask.js +21 -0
- package/dist/nodes/RunninghubApi/resources/task/cancelTask.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/task/createTask.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/task/createTask.js +241 -0
- package/dist/nodes/RunninghubApi/resources/task/createTask.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/task/getTask.d.ts +3 -0
- package/dist/nodes/RunninghubApi/resources/task/getTask.js +79 -0
- package/dist/nodes/RunninghubApi/resources/task/getTask.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/task/getTaskOutput.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/task/getTaskOutput.js +21 -0
- package/dist/nodes/RunninghubApi/resources/task/getTaskOutput.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/task/getWorkflowInfo.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/task/getWorkflowInfo.js +31 -0
- package/dist/nodes/RunninghubApi/resources/task/getWorkflowInfo.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/task/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/task/index.js +71 -0
- package/dist/nodes/RunninghubApi/resources/task/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/webhook/getWebhookDetail.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/webhook/getWebhookDetail.js +21 -0
- package/dist/nodes/RunninghubApi/resources/webhook/getWebhookDetail.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/webhook/index.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/webhook/index.js +37 -0
- package/dist/nodes/RunninghubApi/resources/webhook/index.js.map +1 -0
- package/dist/nodes/RunninghubApi/resources/webhook/retryWebhook.d.ts +2 -0
- package/dist/nodes/RunninghubApi/resources/webhook/retryWebhook.js +32 -0
- package/dist/nodes/RunninghubApi/resources/webhook/retryWebhook.js.map +1 -0
- package/dist/package.json +67 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +134 -0
package/README.md
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
|
|
2
|
+
# @difyz9/n8n-nodes-runninghub-api
|
|
3
|
+
|
|
4
|
+
[](https://www.npmjs.com/package/@difyz9/n8n-nodes-runninghub-api)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
7
|
+
English | [简体中文](README-ZH.md)
|
|
8
|
+
|
|
9
|
+
This is an n8n community node that lets you use [Runninghub](https://www.runninghub.cn) in your n8n workflows.
|
|
10
|
+
|
|
11
|
+
Runninghub is a cloud-based ComfyUI task execution platform that provides powerful AI image/video generation capabilities through an easy-to-use API.
|
|
12
|
+
|
|
13
|
+
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
|
|
14
|
+
|
|
15
|
+
## Table of Contents
|
|
16
|
+
|
|
17
|
+
- [Installation](#installation)
|
|
18
|
+
- [Operations](#operations)
|
|
19
|
+
- [Credentials](#credentials)
|
|
20
|
+
- [Compatibility](#compatibility)
|
|
21
|
+
- [Usage](#usage)
|
|
22
|
+
- [Resources](#resources)
|
|
23
|
+
- [Version History](#version-history)
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
|
|
28
|
+
|
|
29
|
+
### Community Node Installation
|
|
30
|
+
|
|
31
|
+
1. Go to **Settings > Community Nodes** in your n8n instance
|
|
32
|
+
2. Select **Install**
|
|
33
|
+
|
|
34
|
+
3. Enter `@difyz9/n8n-nodes-runninghub-api` in the **Enter npm package name** field
|
|
35
|
+
4. Agree to the risks and select **Install**
|
|
36
|
+
|
|
37
|
+
After installation, the **Runninghub Api** node will be available in your workflow editor.
|
|
38
|
+
|
|
39
|
+
## Operations
|
|
40
|
+
|
|
41
|
+
This node supports **30 operations** across **9 resources**, covering the original workflow APIs plus key v2 account/model/media endpoints, a native ComfyUI proxy resource, and dedicated structured media tools for common video/audio jobs:
|
|
42
|
+
|
|
43
|
+
### 📋 Account
|
|
44
|
+
- **Get Account Info** - Retrieve account status including RH coins, running tasks, wallet balance, and API type
|
|
45
|
+
- **Get API Key List** - List API keys under the current account
|
|
46
|
+
- **Get Queue Status** - Check queue status for the current API key
|
|
47
|
+
|
|
48
|
+
### 🚀 Task
|
|
49
|
+
- **Create Task Simple** - Run a workflow directly without overriding node parameters
|
|
50
|
+
- **Create Task** - Create a ComfyUI task based on a workflow template
|
|
51
|
+
- **Get Task Info** - Query task status (QUEUED, RUNNING, SUCCESS, FAILED)
|
|
52
|
+
- **Get Task Output** - Retrieve task results (images, videos, etc.)
|
|
53
|
+
- **Get Task Output V2** - Retrieve task results from the v2 query endpoint
|
|
54
|
+
- **Get Workflow Info** - Get workflow JSON configuration
|
|
55
|
+
- **Cancel Task** - Cancel a running or queued task
|
|
56
|
+
|
|
57
|
+
### ⚡ Quick Create
|
|
58
|
+
- **Get Model Params** - Retrieve quick creation model library style parameters
|
|
59
|
+
- **Run Quick Create** - Initiate a quick creation task
|
|
60
|
+
|
|
61
|
+
### 🤖 AI App
|
|
62
|
+
- **Run AI App** - Initiate an AI application task
|
|
63
|
+
- **Get API Call Demo** - Get API call example for AI applications
|
|
64
|
+
- **List Public Models** - Query public model resources from the RunningHub model library
|
|
65
|
+
|
|
66
|
+
### 🧠 Model API
|
|
67
|
+
- **Run Model API** - Call any standard model endpoint under `/openapi/v2/...` by providing the endpoint path and JSON body
|
|
68
|
+
- **Preview Model API Price** - Preview pricing for any standard model API request using `/openapi/v2/price-preview/...`
|
|
69
|
+
|
|
70
|
+
### 🎬 Media Tools
|
|
71
|
+
- **Upscale Video** - Call `POST /openapi/v2/rhart-video/video-upscaler` with structured `videoUrl` and `targetResolution`
|
|
72
|
+
- **Increase Video FPS** - Call `POST /openapi/v2/rhart-video/video-fps-increaser` with a structured `videoUrl`
|
|
73
|
+
- **Text To Audio Speech 2.8 Turbo** - Call `POST /openapi/v2/rhart-audio/text-to-audio/speech-2.8-turbo` with structured TTS parameters such as `voice_id`, `emotion`, `speed`, `volume`, and `pitch`
|
|
74
|
+
|
|
75
|
+
### 🔌 ComfyUI Proxy
|
|
76
|
+
- **Get Object Info** - Call `GET /object_info` on the native ComfyUI proxy
|
|
77
|
+
- **Get Queue** - Call `GET /queue` on the native ComfyUI proxy
|
|
78
|
+
- **Get History** - Call `GET /history` or `GET /history/{promptId}` on the native ComfyUI proxy
|
|
79
|
+
- **Submit Prompt** - Call `POST /prompt` on the native ComfyUI proxy
|
|
80
|
+
- **Request Proxy API** - Call the RunningHub native ComfyUI proxy exposed at `/proxy/{apiKey}` or `/proxy-plus/{apiKey}` for endpoints like `/object_info`, `/queue`, `/history/<promptId>`, and `/prompt`
|
|
81
|
+
|
|
82
|
+
### 📁 File
|
|
83
|
+
- **Upload File** - Upload images, videos, audio, or ZIP files through `/openapi/v2/media/upload/binary` (max 30MB)
|
|
84
|
+
- Response includes both `download_url` for standard model APIs and `fileName` for ComfyUI workflow nodes
|
|
85
|
+
|
|
86
|
+
- **Upload Resource (Deprecated)** - Upload files through the legacy deprecated `/task/openapi/upload` endpoint
|
|
87
|
+
- Supported formats: JPG, PNG, JPEG, WEBP (images), MP4, AVI, MOV, MKV (videos), MP3, WAV, FLAC (audio), ZIP (archives)
|
|
88
|
+
- **Get Lora Upload URL** - Get upload URL for Lora model files
|
|
89
|
+
|
|
90
|
+
### 🔔 Webhook
|
|
91
|
+
- **Get Webhook Detail** - Get webhook event details for debugging
|
|
92
|
+
- **Retry Webhook** - Resend a specific webhook event
|
|
93
|
+
|
|
94
|
+
## Credentials
|
|
95
|
+
|
|
96
|
+
### Prerequisites
|
|
97
|
+
|
|
98
|
+
1. Sign up for a Runninghub account at [https://www.runninghub.cn](https://www.runninghub.cn)
|
|
99
|
+
2. Navigate to your account settings to generate an API key
|
|
100
|
+
|
|
101
|
+
### Setting up credentials in n8n
|
|
102
|
+
|
|
103
|
+
1. In n8n, go to **Credentials > New**
|
|
104
|
+
2. Search for **Runninghub Api**
|
|
105
|
+
3. Enter your **API Key** from Runninghub
|
|
106
|
+
4. Click **Save**
|
|
107
|
+
|
|
108
|
+
### Testing credentials
|
|
109
|
+
|
|
110
|
+
The credentials include a built-in test that verifies your API key by calling the account status endpoint.
|
|
111
|
+
|
|
112
|
+
## Compatibility
|
|
113
|
+
|
|
114
|
+
- **Minimum n8n version**: 1.0.0
|
|
115
|
+
- **Tested against**: n8n 1.0.0+
|
|
116
|
+
- **Node API Version**: 1
|
|
117
|
+
|
|
118
|
+
This node has been tested and is compatible with the latest versions of n8n.
|
|
119
|
+
|
|
120
|
+
## Usage
|
|
121
|
+
|
|
122
|
+
### Basic Workflow Example
|
|
123
|
+
|
|
124
|
+
Here's a simple workflow to create a ComfyUI task and retrieve the results:
|
|
125
|
+
|
|
126
|
+
1. **Add Runninghub Api node** to your workflow
|
|
127
|
+
2. **Select Resource**: Task
|
|
128
|
+
3. **Select Operation**: Create Task
|
|
129
|
+
4. **Enter Workflow ID**: Your ComfyUI workflow template ID
|
|
130
|
+
5. **Optionally customize node parameters** by enabling "Send NodeInfo List"
|
|
131
|
+
6. **Add another Runninghub Api node** to poll for task completion
|
|
132
|
+
7. **Select Operation**: Get Task Output
|
|
133
|
+
8. **Use the Task ID** from the previous node
|
|
134
|
+
|
|
135
|
+
### Working with Node Parameters
|
|
136
|
+
|
|
137
|
+
When creating tasks, you can customize node parameters using the `nodeInfoList` field:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
[
|
|
141
|
+
{
|
|
142
|
+
"nodeId": "6",
|
|
143
|
+
"fieldName": "text",
|
|
144
|
+
"fieldValue": "A beautiful sunset over mountains"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"nodeId": "3",
|
|
148
|
+
"fieldName": "seed",
|
|
149
|
+
"fieldValue": "12345"
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Simple and Advanced ComfyUI Tasks
|
|
155
|
+
|
|
156
|
+
Use `Create Task Simple` when you want the documented "run as-is" behavior from RunningHub's simple task API. It only sends `workflowId` plus optional `addMetadata` and `accessPassword`.
|
|
157
|
+
|
|
158
|
+
### Advanced ComfyUI Task Options
|
|
159
|
+
|
|
160
|
+
The `Create Task` operation also exposes the current advanced workflow options from the RunningHub docs, including `accessPassword`, `addMetadata`, `webhookUrl`, `workflow` JSON override, `instanceType`, `usePersonalQueue`, and `retainSeconds`.
|
|
161
|
+
|
|
162
|
+
### Structured ComfyUI Workflow Editing
|
|
163
|
+
|
|
164
|
+
ComfyUI workflow tasks now support two ways to provide `nodeInfoList`:
|
|
165
|
+
|
|
166
|
+
1. `JSON` mode for pasting the full `nodeInfoList` array manually
|
|
167
|
+
2. `Structured Items` mode for adding `nodeId`, `fieldName`, and typed `fieldValue` entries one by one
|
|
168
|
+
|
|
169
|
+
The `Get Workflow Info` operation can also parse the returned workflow prompt and add a `nodeInfoListPreview` array to the output, which makes it easier to identify editable workflow fields before calling `Create Task`.
|
|
170
|
+
|
|
171
|
+
### Generic Standard Model Calls
|
|
172
|
+
|
|
173
|
+
Use the `Model API` resource when the online documentation exposes a model endpoint that does not have a dedicated n8n operation yet.
|
|
174
|
+
|
|
175
|
+
1. Select **Resource**: Model API
|
|
176
|
+
2. Select **Operation**: Run Model API or Preview Model API Price
|
|
177
|
+
3. Enter the endpoint path relative to `/openapi/v2`, such as `kling-video-o3-std/video-edit`
|
|
178
|
+
4. Paste the request body JSON from the RunningHub API docs
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
### Structured Media Tool
|
|
182
|
+
|
|
183
|
+
Use the `Media Tool` resource when you want dedicated forms for a few high-frequency standard model APIs instead of manually building JSON bodies.
|
|
184
|
+
|
|
185
|
+
1. Select **Resource**: Media Tool
|
|
186
|
+
2. Choose **Upscale Video**, **Increase Video FPS**, or **Text To Audio Speech 2.8 Turbo**
|
|
187
|
+
3. For video jobs, pass a public video URL or the `download_url` returned by `Upload File`
|
|
188
|
+
4. For TTS jobs, fill the structured voice, emotion, and pronunciation settings instead of building raw JSON by hand
|
|
189
|
+
|
|
190
|
+
### Native ComfyUI Proxy Calls
|
|
191
|
+
|
|
192
|
+
Use the `ComfyUI Proxy` resource when you want RunningHub to behave like a native ComfyUI server.
|
|
193
|
+
|
|
194
|
+
1. Select **Resource**: ComfyUI Proxy
|
|
195
|
+
2. Use a preset operation like **Get Object Info**, **Get Queue**, **Get History**, or **Submit Prompt** for common flows
|
|
196
|
+
3. Or choose **Request Proxy API** when you need a custom ComfyUI path
|
|
197
|
+
4. Select **Default (24GB)** or **Plus (48GB)** and provide the request body for `POST` calls when needed
|
|
198
|
+
|
|
199
|
+
For `Submit Prompt`, the node now supports both a full request body mode and a structured mode where you provide `prompt`, optional `client_id`, and optional `extra_data` separately.
|
|
200
|
+
|
|
201
|
+
### File Upload Example
|
|
202
|
+
|
|
203
|
+
To upload an image for use in a workflow:
|
|
204
|
+
|
|
205
|
+
1. **Add Runninghub Api node**
|
|
206
|
+
2. **Select Resource**: File
|
|
207
|
+
3. **Select Operation**: Upload File
|
|
208
|
+
4. **Enter file path** or reference from previous node
|
|
209
|
+
5. **Use the returned fileName** in your task's nodeInfoList, or `download_url` in standard model API requests
|
|
210
|
+
|
|
211
|
+
Use `Upload Resource (Deprecated)` only when you need compatibility with older workflows that still expect the legacy `/task/openapi/upload` behavior.
|
|
212
|
+
|
|
213
|
+
### Webhook Integration
|
|
214
|
+
|
|
215
|
+
For long-running tasks, use webhooks to get notified when tasks complete:
|
|
216
|
+
|
|
217
|
+
1. Set up a webhook endpoint in your n8n workflow
|
|
218
|
+
2. When creating a task, add the `webhookUrl` parameter
|
|
219
|
+
3. Runninghub will POST results to your webhook when the task finishes
|
|
220
|
+
|
|
221
|
+
## Resources
|
|
222
|
+
|
|
223
|
+
- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
|
|
224
|
+
- [Runninghub Official Website](https://www.runninghub.cn)
|
|
225
|
+
- [Runninghub API Documentation](https://www.runninghub.cn/runninghub-api-doc-cn/)
|
|
226
|
+
- [ComfyUI Documentation](https://github.com/comfyanonymous/ComfyUI)
|
|
227
|
+
- [Project Structure](docs/PROJECT_STRUCTURE.md)
|
|
228
|
+
- [Development Guide](docs/DEVELOPMENT_GUIDE.md)
|
|
229
|
+
- [Implementation Summary](docs/IMPLEMENTATION_SUMMARY.md)
|
|
230
|
+
|
|
231
|
+
## Version History
|
|
232
|
+
|
|
233
|
+
### 0.1.1 (Current)
|
|
234
|
+
- ✅ Complete implementation of all 14 Runninghub API endpoints
|
|
235
|
+
- ✅ Added Quick Create resource with 2 operations
|
|
236
|
+
- ✅ Added AI App resource with 2 operations
|
|
237
|
+
- ✅ Added File resource with 2 operations
|
|
238
|
+
- ✅ Added Webhook resource with 2 operations
|
|
239
|
+
- ✅ Enhanced all operations with detailed descriptions
|
|
240
|
+
- ✅ Fixed cancelTask export naming
|
|
241
|
+
- ✅ Improved parameter validation and error handling
|
|
242
|
+
|
|
243
|
+
### Unreleased
|
|
244
|
+
- ✅ Added v2 account operations for API key list and queue status
|
|
245
|
+
- ✅ Added `Get Task Output V2`
|
|
246
|
+
- ✅ Added AI App public model listing
|
|
247
|
+
- ✅ Added `Create Task Simple` for the documented simple ComfyUI task entrypoint
|
|
248
|
+
- ✅ Switched `Upload File` to the current `/openapi/v2/media/upload/binary` API
|
|
249
|
+
- ✅ Added `Upload Resource (Deprecated)` for the legacy `/task/openapi/upload` API
|
|
250
|
+
|
|
251
|
+
- ✅ Added `Media Tool` resource with structured video upscaling, video FPS enhancement, and Speech 2.8 Turbo TTS operations
|
|
252
|
+
- ✅ Added a generic `Model API` resource for `/openapi/v2/...` endpoints and price previews
|
|
253
|
+
- ✅ Added a native `ComfyUI Proxy` resource for `/proxy/{apiKey}` and `/proxy-plus/{apiKey}`
|
|
254
|
+
- ✅ Exposed advanced ComfyUI task parameters such as `retainSeconds`, `instanceType`, and `webhookUrl`
|
|
255
|
+
|
|
256
|
+
### 0.1.0
|
|
257
|
+
- Initial release
|
|
258
|
+
- Basic Task and Account operations
|
|
259
|
+
- API Key authentication
|
|
260
|
+
|
|
261
|
+
## Contributing
|
|
262
|
+
|
|
263
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
264
|
+
|
|
265
|
+
## License
|
|
266
|
+
|
|
267
|
+
[MIT](LICENSE.md)
|
|
268
|
+
|
|
269
|
+
## Support
|
|
270
|
+
|
|
271
|
+
If you encounter any issues or have questions:
|
|
272
|
+
|
|
273
|
+
1. Check the [Runninghub API Documentation](https://www.runninghub.cn/runninghub-api-doc)
|
|
274
|
+
|
|
275
|
+
2. Open an issue on [GitHub](https://github.com/difyz9/n8n-nodes-runninghub-api/issues)
|
|
276
|
+
|
|
277
|
+
3. Contact the Runninghub support team
|
|
278
|
+
|
|
279
|
+
## Acknowledgments
|
|
280
|
+
|
|
281
|
+
- Built with [n8n-node-dev](https://github.com/n8n-io/n8n/tree/master/packages/node-dev)
|
|
282
|
+
- Integrates with [Runninghub](https://www.runninghub.cn) ComfyUI cloud platform
|
|
283
|
+
- Maintained in [difyz9/n8n-nodes-runninghub-api](https://github.com/difyz9/n8n-nodes-runninghub-api)
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
**Made with ❤️ for the n8n community**
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, Icon, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class RunninghubApiApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: Icon;
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
properties: INodeProperties[];
|
|
8
|
+
authenticate: IAuthenticateGeneric;
|
|
9
|
+
test: ICredentialTestRequest;
|
|
10
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunninghubApiApi = void 0;
|
|
4
|
+
class RunninghubApiApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'runninghubApiApi';
|
|
7
|
+
this.displayName = 'Runninghub Api API';
|
|
8
|
+
this.icon = {
|
|
9
|
+
light: 'file:../icons/runninghub-light.svg',
|
|
10
|
+
dark: 'file:../icons/runninghub-dark.svg',
|
|
11
|
+
};
|
|
12
|
+
this.documentationUrl = 'https://github.com/difyz9/n8n-nodes-runninghub-api?tab=readme-ov-file#credentials';
|
|
13
|
+
this.properties = [
|
|
14
|
+
{
|
|
15
|
+
displayName: 'API Key',
|
|
16
|
+
name: 'apiKey',
|
|
17
|
+
type: 'string',
|
|
18
|
+
typeOptions: { password: true },
|
|
19
|
+
required: true,
|
|
20
|
+
default: '',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
this.authenticate = {
|
|
24
|
+
type: 'generic',
|
|
25
|
+
properties: {
|
|
26
|
+
body: {
|
|
27
|
+
apikey: '={{$credentials.apiKey}}',
|
|
28
|
+
extension: 'all'
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
this.test = {
|
|
33
|
+
request: {
|
|
34
|
+
baseURL: 'https://www.runninghub.cn',
|
|
35
|
+
url: '/uc/openapi/accountStatus',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.RunninghubApiApi = RunninghubApiApi;
|
|
41
|
+
//# sourceMappingURL=RunninghubApiApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunninghubApiApi.credentials.js","sourceRoot":"","sources":["../../credentials/RunninghubApiApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAE1B,gBAAW,GAAG,oBAAoB,CAAC;QAEnC,SAAI,GAAS;YACZ,KAAK,EAAE,oCAAoC;YAC3C,IAAI,EAAE,mCAAmC;SACzC,CAAC;QAEF,qBAAgB,GAAG,mFAAmF,CAAC;QACvG,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,IAAI,EAAE;oBACL,MAAM,EAAE,0BAA0B;oBAClC,SAAS,EAAE,KAAK;iBAChB;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,2BAA2B;aAChC;SACD,CAAC;IACH,CAAC;CAAA;AAtCD,4CAsCC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
+
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill:#02DBA3;}
|
|
7
|
+
.st1{fill-rule:evenodd;clip-rule:evenodd;}
|
|
8
|
+
</style>
|
|
9
|
+
<g>
|
|
10
|
+
<path class="st0" d="M3.3,0h13.3C18.5,0,20,1.5,20,3.3v13.3c0,1.8-1.5,3.3-3.3,3.3H3.3C1.5,20,0,18.5,0,16.7V3.3C0,1.5,1.5,0,3.3,0
|
|
11
|
+
z"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g>
|
|
14
|
+
<g>
|
|
15
|
+
<path class="st1" d="M6.7,13.3h4.2c2.8,0,5-2.2,5-5s-2.2-5-5-5H6.7c2.8,0,5,2.2,5,5S9.4,13.3,6.7,13.3z"/>
|
|
16
|
+
</g>
|
|
17
|
+
<g>
|
|
18
|
+
<rect x="5" y="3.3" width="3.3" height="13.3"/>
|
|
19
|
+
</g>
|
|
20
|
+
<g transform="matrix(1,0,0,-1,0,33.33260440826416)">
|
|
21
|
+
<path d="M10.8,16.7v4.2h0.8c2.3,0,4.2-1.9,4.2-4.2H10.8z"/>
|
|
22
|
+
</g>
|
|
23
|
+
</g>
|
|
24
|
+
</svg>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
+
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill:#02DBA3;}
|
|
7
|
+
.st1{fill-rule:evenodd;clip-rule:evenodd;}
|
|
8
|
+
</style>
|
|
9
|
+
<g>
|
|
10
|
+
<path class="st0" d="M3.3,0h13.3C18.5,0,20,1.5,20,3.3v13.3c0,1.8-1.5,3.3-3.3,3.3H3.3C1.5,20,0,18.5,0,16.7V3.3C0,1.5,1.5,0,3.3,0
|
|
11
|
+
z"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g>
|
|
14
|
+
<g>
|
|
15
|
+
<path class="st1" d="M6.7,13.3h4.2c2.8,0,5-2.2,5-5s-2.2-5-5-5H6.7c2.8,0,5,2.2,5,5S9.4,13.3,6.7,13.3z"/>
|
|
16
|
+
</g>
|
|
17
|
+
<g>
|
|
18
|
+
<rect x="5" y="3.3" width="3.3" height="13.3"/>
|
|
19
|
+
</g>
|
|
20
|
+
<g transform="matrix(1,0,0,-1,0,33.33260440826416)">
|
|
21
|
+
<path d="M10.8,16.7v4.2h0.8c2.3,0,4.2-1.9,4.2-4.2H10.8z"/>
|
|
22
|
+
</g>
|
|
23
|
+
</g>
|
|
24
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IExecuteFunctions, INodeExecutionData, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class RunninghubApi implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunninghubApi = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const account_1 = require("./resources/account");
|
|
6
|
+
const task_1 = require("./resources/task");
|
|
7
|
+
const quickCreate_1 = require("./resources/quickCreate");
|
|
8
|
+
const aiApp_1 = require("./resources/aiApp");
|
|
9
|
+
const file_1 = require("./resources/file");
|
|
10
|
+
const webhook_1 = require("./resources/webhook");
|
|
11
|
+
const modelApi_1 = require("./resources/modelApi");
|
|
12
|
+
const nativeComfy_1 = require("./resources/nativeComfy");
|
|
13
|
+
const mediaTools_1 = require("./resources/mediaTools");
|
|
14
|
+
const requestRouting_1 = require("./requestRouting");
|
|
15
|
+
class RunninghubApi {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.description = {
|
|
18
|
+
displayName: 'Runninghub Api',
|
|
19
|
+
name: 'runninghubApi',
|
|
20
|
+
icon: {
|
|
21
|
+
light: 'file:../../icons/runninghub-light.svg',
|
|
22
|
+
dark: 'file:../../icons/runninghub-dark.svg',
|
|
23
|
+
},
|
|
24
|
+
group: ['transform'],
|
|
25
|
+
version: 1,
|
|
26
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
27
|
+
description: 'Interact with the Runninghub Api API',
|
|
28
|
+
defaults: {
|
|
29
|
+
name: 'Runninghub Api',
|
|
30
|
+
},
|
|
31
|
+
usableAsTool: true,
|
|
32
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
33
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
34
|
+
credentials: [{ name: 'runninghubApiApi', required: true }],
|
|
35
|
+
requestDefaults: {
|
|
36
|
+
baseURL: 'https://www.runninghub.cn',
|
|
37
|
+
headers: {
|
|
38
|
+
Accept: 'application/json',
|
|
39
|
+
'Content-Type': 'application/json',
|
|
40
|
+
Host: 'www.runninghub.cn',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
properties: [
|
|
44
|
+
{
|
|
45
|
+
displayName: 'Resource',
|
|
46
|
+
name: 'resource',
|
|
47
|
+
type: 'options',
|
|
48
|
+
noDataExpression: true,
|
|
49
|
+
options: [
|
|
50
|
+
{
|
|
51
|
+
name: 'Account',
|
|
52
|
+
value: 'account',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'AI App',
|
|
56
|
+
value: 'aiApp',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'ComfyUI Proxy',
|
|
60
|
+
value: 'nativeComfy',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'File',
|
|
64
|
+
value: 'file',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'Media Tool',
|
|
68
|
+
value: 'mediaTools',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Model API',
|
|
72
|
+
value: 'modelApi',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Quick Create',
|
|
76
|
+
value: 'quickCreate',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'Task',
|
|
80
|
+
value: 'task',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'Webhook',
|
|
84
|
+
value: 'webhook',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
default: 'task',
|
|
88
|
+
},
|
|
89
|
+
...account_1.accountDescription,
|
|
90
|
+
...task_1.taskDescription,
|
|
91
|
+
...quickCreate_1.quickCreateDescription,
|
|
92
|
+
...aiApp_1.aiAppDescription,
|
|
93
|
+
...file_1.fileDescription,
|
|
94
|
+
...modelApi_1.modelApiDescription,
|
|
95
|
+
...mediaTools_1.mediaToolsDescription,
|
|
96
|
+
...nativeComfy_1.nativeComfyDescription,
|
|
97
|
+
...webhook_1.webhookDescription,
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async execute() {
|
|
102
|
+
const items = this.getInputData();
|
|
103
|
+
const returnData = [];
|
|
104
|
+
const credentials = await this.getCredentials('runninghubApiApi');
|
|
105
|
+
if (!(credentials === null || credentials === void 0 ? void 0 : credentials.apiKey)) {
|
|
106
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No valid API key provided');
|
|
107
|
+
}
|
|
108
|
+
const resource = this.getNodeParameter('resource', 0);
|
|
109
|
+
const operation = this.getNodeParameter('operation', 0);
|
|
110
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
111
|
+
try {
|
|
112
|
+
const requestBody = {
|
|
113
|
+
apiKey: `${credentials.apiKey}`,
|
|
114
|
+
};
|
|
115
|
+
const requestContext = {
|
|
116
|
+
executeFunctions: this,
|
|
117
|
+
itemIndex,
|
|
118
|
+
resource,
|
|
119
|
+
operation,
|
|
120
|
+
credentials,
|
|
121
|
+
requestBody,
|
|
122
|
+
};
|
|
123
|
+
const multipartResponse = await (0, requestRouting_1.tryExecuteMultipartUpload)(requestContext);
|
|
124
|
+
if (multipartResponse !== undefined) {
|
|
125
|
+
returnData.push({
|
|
126
|
+
json: multipartResponse,
|
|
127
|
+
});
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const requestConfig = (0, requestRouting_1.buildRequestExecutionConfig)(requestContext);
|
|
131
|
+
if (!requestConfig.url) {
|
|
132
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unsupported operation "${operation}" for resource "${resource}"`, { itemIndex });
|
|
133
|
+
}
|
|
134
|
+
if (!requestConfig.includeApiKeyInBody) {
|
|
135
|
+
delete requestBody.apiKey;
|
|
136
|
+
}
|
|
137
|
+
const options = {
|
|
138
|
+
baseURL: 'https://www.runninghub.cn',
|
|
139
|
+
url: requestConfig.url,
|
|
140
|
+
headers: {
|
|
141
|
+
Host: 'www.runninghub.cn',
|
|
142
|
+
'Content-Type': 'application/json',
|
|
143
|
+
},
|
|
144
|
+
method: requestConfig.method,
|
|
145
|
+
};
|
|
146
|
+
if (requestConfig.includeAuthorizationHeader) {
|
|
147
|
+
options.headers = {
|
|
148
|
+
...options.headers,
|
|
149
|
+
Authorization: `Bearer ${credentials.apiKey}`,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (requestConfig.includeBody) {
|
|
153
|
+
options.body = requestBody;
|
|
154
|
+
}
|
|
155
|
+
const responseData = await this.helpers.httpRequest.call(this, options);
|
|
156
|
+
const finalResponseData = (0, requestRouting_1.postProcessResponse)(requestContext, responseData);
|
|
157
|
+
returnData.push({
|
|
158
|
+
json: finalResponseData,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (this.continueOnFail()) {
|
|
163
|
+
returnData.push({
|
|
164
|
+
json: this.getInputData(itemIndex)[0].json,
|
|
165
|
+
error,
|
|
166
|
+
pairedItem: itemIndex,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
const nodeError = error;
|
|
171
|
+
if (nodeError.context) {
|
|
172
|
+
nodeError.context.itemIndex = itemIndex;
|
|
173
|
+
throw nodeError;
|
|
174
|
+
}
|
|
175
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
|
|
176
|
+
itemIndex,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return [this.helpers.returnJsonArray(returnData)];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.RunninghubApi = RunninghubApi;
|
|
185
|
+
//# sourceMappingURL=RunninghubApi.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunninghubApi.node.js","sourceRoot":"","sources":["../../../nodes/RunninghubApi/RunninghubApi.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "@difyz9/n8n-nodes-runninghub-api",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Development", "Developer Tools"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://github.com/difyz9/n8n-nodes-runninghub-api?tab=readme-ov-file#credentials"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://github.com/difyz9/n8n-nodes-runninghub-api?tab=readme-ov-file"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type IDataObject, type IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
type RunninghubCredentials = {
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
};
|
|
5
|
+
export type RequestRoutingContext = {
|
|
6
|
+
executeFunctions: IExecuteFunctions;
|
|
7
|
+
itemIndex: number;
|
|
8
|
+
resource: string;
|
|
9
|
+
operation: string;
|
|
10
|
+
credentials: RunninghubCredentials;
|
|
11
|
+
requestBody: Record<string, unknown>;
|
|
12
|
+
};
|
|
13
|
+
export type RequestExecutionConfig = {
|
|
14
|
+
url: string;
|
|
15
|
+
method: 'GET' | 'POST';
|
|
16
|
+
includeBody: boolean;
|
|
17
|
+
includeApiKeyInBody: boolean;
|
|
18
|
+
includeAuthorizationHeader: boolean;
|
|
19
|
+
requestBody: Record<string, unknown>;
|
|
20
|
+
};
|
|
21
|
+
export declare function buildRequestExecutionConfig(context: RequestRoutingContext): RequestExecutionConfig;
|
|
22
|
+
export declare function tryExecuteMultipartUpload(context: RequestRoutingContext): Promise<IDataObject | undefined>;
|
|
23
|
+
export declare function postProcessResponse(context: RequestRoutingContext, responseData: IDataObject): IDataObject;
|
|
24
|
+
export {};
|