# nodes

node_type: @presentations-ai/n8n-nodes-presentations-ai.presentationsAi
package_name: @presentations-ai/n8n-nodes-presentations-ai
display_name: Presentations.AI
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: pankaj_pai
author_github_url: https://github.com/slidecraft-in/n8n-nodes-presentations-ai.git
npm_package_name: @presentations-ai/n8n-nodes-presentations-ai
npm_version: 0.2.0
community_fetched_at: 2026-07-14T14:40:34.419Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Generate, transform, and export AI-powered slide decks from a topic, raw text, or document file via the Presentations.AI REST API.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "presentation",
      "options": [
        {
          "name": "Job",
          "value": "job"
        },
        {
          "name": "Presentation",
          "value": "presentation"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createFromTopic",
      "options": [
        {
          "name": "Create From Topic",
          "value": "createFromTopic",
          "action": "Create a presentation from a topic",
          "routing": {
            "request": {
              "url": "/api/v1/topic/document",
              "method": "POST"
            }
          },
          "description": "Generate a full deck from a single topic or brief"
        },
        {
          "name": "Create Single Slide",
          "value": "createSingleSlide",
          "action": "Create a single slide",
          "routing": {
            "request": {
              "url": "/api/v1/topic/singleslide",
              "method": "POST"
            }
          },
          "description": "Generate one AI-designed slide from a topic"
        },
        {
          "name": "Create From Content",
          "value": "createFromContent",
          "action": "Create a presentation from raw text",
          "routing": {
            "request": {
              "url": "/api/v1/document/content",
              "method": "POST"
            }
          },
          "description": "Convert raw text (articles, notes, meeting transcripts) into a slide deck"
        },
        {
          "name": "Create From File",
          "value": "createFromFile",
          "action": "Create a presentation from a document file",
          "description": "Convert an uploaded PDF, DOCX, PPTX, TXT, MD, or RTF file (max 5 MB) into a deck. Routed via a multipart upload handler."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "presentation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "checkStatus",
      "options": [
        {
          "name": "Check Status",
          "value": "checkStatus",
          "action": "Check the status of an async job",
          "description": "Poll for the result of an async presentation job. Accepts either a bare job_id or the full pollUrl returned by a previous async operation."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create From Topic",
      "value": "createFromTopic",
      "action": "Create a presentation from a topic",
      "routing": {
        "request": {
          "url": "/api/v1/topic/document",
          "method": "POST"
        }
      },
      "description": "Generate a full deck from a single topic or brief",
      "resource": "presentation"
    },
    {
      "name": "Create Single Slide",
      "value": "createSingleSlide",
      "action": "Create a single slide",
      "routing": {
        "request": {
          "url": "/api/v1/topic/singleslide",
          "method": "POST"
        }
      },
      "description": "Generate one AI-designed slide from a topic",
      "resource": "presentation"
    },
    {
      "name": "Create From Content",
      "value": "createFromContent",
      "action": "Create a presentation from raw text",
      "routing": {
        "request": {
          "url": "/api/v1/document/content",
          "method": "POST"
        }
      },
      "description": "Convert raw text (articles, notes, meeting transcripts) into a slide deck",
      "resource": "presentation"
    },
    {
      "name": "Create From File",
      "value": "createFromFile",
      "action": "Create a presentation from a document file",
      "description": "Convert an uploaded PDF, DOCX, PPTX, TXT, MD, or RTF file (max 5 MB) into a deck. Routed via a multipart upload handler.",
      "resource": "presentation"
    },
    {
      "name": "Check Status",
      "value": "checkStatus",
      "action": "Check the status of an async job",
      "description": "Poll for the result of an async presentation job. Accepts either a bare job_id or the full pollUrl returned by a previous async operation.",
      "resource": "job"
    }
  ]

npm_readme:
  # @presentations-ai/n8n-nodes-presentations-ai

  Official [n8n](https://n8n.io) community node for [Presentations.AI](https://presentations.ai) — generate, transform, and export AI-powered slide decks from your workflows.

  ## Installation

  In n8n: **Settings → Community Nodes → Install** and enter `@presentations-ai/n8n-nodes-presentations-ai`.

  For self-hosted installations, see [n8n's community node docs](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Credentials

  1. In Presentations.AI, go to [console.presentations.ai](https://console.presentations.ai) and create an API key.
  2. In n8n, create a new **Presentations.AI API** credential and paste the key (starts with `pai_`).
  3. The default base URL is `https://api.presentations.ai`. Change it only if you're on a staging or self-hosted endpoint.

  Click **Test** on the credential to verify it works before saving.

  ## Operations

  ### Presentation

  - **Create From Topic** — generate a full deck from a single topic or brief. The most common starting point.
  - **Create Single Slide** — generate one AI-designed slide. Good for title cards, summary slides, or one-off visuals.
  - **Create From Content** — convert raw text (articles, notes, meeting transcripts) into a deck. Choose how aggressively to rewrite via *Preservation Mode*.
  - **Create From File** — convert a PDF, DOCX, PPTX, TXT, MD, or RTF file (max 5 MB) into a deck. Pulls binary data from the previous node (defaults to the `data` property).

  All creation ops export to PPTX, PPT, PDF, image, render (HTML preview), or share link.

  ### Job

  - **Check Status** — poll an async generation. Accepts either the bare `job_id` returned by a previous async op, or the full `pollUrl` (the trailing path segment is used as the job id). Returns `pending`, `completed`, or `failed`.

  ## Preservation Mode (Content / File ops)

  Controls how the input is treated:

  - **Enhance** — expand short input into full slides
  - **Summarize** — condense long input into key slides
  - **Preserve** — keep the input structure as-is (slide count auto-derived)
  - **Instruction** — use the *Topic* field as a custom transformation prompt

  ## Async generation

  Long decks can take more than a minute. Two patterns:

  - **Webhook callback** — set *Callback URL* on the creation op. The op returns immediately with a `job_id` and Presentations.AI POSTs the finished deck to your URL when ready.
  - **Polling** — set *Return Job ID Immediately* to `true`. Then use **Job → Check Status** in a loop (with a `Wait` node) until the status is `completed`.

  ## Common workflows

  **Generate from a topic (simplest)**

  ```
  Manual Trigger  →  Presentations.AI: Create From Topic  →  Set { document_url }
  ```

  **Notes → deck**

  ```
  Chat Trigger / Form Trigger  →  Presentations.AI: Create From Content  →  Reply with the URL
  ```

  **PDF / DOCX → deck**

  ```
  Webhook (file upload)  →  Presentations.AI: Create From File  →  Reply with the URL
  ```

  **Bulk generation with async + polling**

  ```
  Read rows from Google Sheets  →  Presentations.AI: Create From Topic (Return Job ID Immediately = true)  →  Save job_id to sheet

  — separate scheduled workflow —
  Read rows where status='pending'  →  Presentations.AI: Check Status  →  Update sheet when completed
  ```

  ## AI agent / tool use

  This node has `usableAsTool: true`, so it's available to n8n's AI agents. An agent can call any of the operations directly when configured as a tool.

  ## Resources

  - [Presentations.AI developer docs](https://console.presentations.ai/apiref/docs/)
  - [n8n community node guide](https://docs.n8n.io/integrations/community-nodes/)
  - [Report an issue](https://github.com/slidecraft-in/n8n-nodes-presentations-ai/issues)

  ## License

  [MIT](./LICENSE.md)

ai_documentation_summary:
  {"purpose":"Generates, transforms, and exports AI-powered slide decks in n8n using the Presentations.AI REST API. It can create decks from topics, raw content, or files, and can also check asynchronous generation jobs.","capabilities":["Create a full presentation from a topic or brief","Create a single AI-designed slide","Create a presentation from raw text content with Preservation Mode controls","Create a presentation from uploaded files (PDF, DOCX, PPTX, TXT, MD, RTF) up to 5 MB","Export created presentations to PPTX, PPT, PDF, image, HTML preview, or share link","Check the status of asynchronous generation jobs using job_id or pollUrl","Support webhook callback for async completion notifications","Support polling-based async workflows with immediate job ID return"],"authentication":"API key required (Presentations.AI API key starting with 'pai_')","commonUseCases":["Generate a slide deck from a simple topic prompt","Turn meeting notes, transcripts, or articles into a presentation","Convert uploaded documents such as PDFs or DOCX files into decks","Run long-running deck generation jobs asynchronously and track completion","Use the node as a tool for n8n AI agents to create presentations"],"limitations":["File input is limited to 5 MB","Supported file types are limited to PDF, DOCX, PPTX, TXT, MD, and RTF","Async workflows require either a callback URL or polling with a separate Check Status step","The base URL should only be changed for staging or self-hosted endpoints"],"relatedNodes":["Wait","Webhook","Manual Trigger","Chat Trigger","Form Trigger"]}


node_type: n8n-nodes-palatine-speech.palatineSpeech
package_name: n8n-nodes-palatine-speech
display_name: Palatine Speech
category: Community
development_style: declarative
version: 3
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: palatine_zealot
author_github_url: https://github.com/PalatineVision/
npm_package_name: n8n-nodes-palatine-speech
npm_version: 1.1.1
community_fetched_at: 2026-07-14T14:40:34.420Z
ai_summary_generated_at: 2026-06-26 10:27:23
description:
  Transcribe audio, diarize speakers, analyze sentiment, generate AI summaries, or use OpenAI-compatible LLM Chat Completions via Palatine. Keywords: n8n-community-node-package, n8n, palatine, speech-to-text, transcribe, transcription, stt, audio, ai, automation, voice-to-text, speech-recognition, audio-transcription, audio2text, audio-processing, diarization, speaker-diarization, speaker-segmentation, summarization, audio-summarization, sentiment-analysis, emotion-detection, tone-analysis, llm, chat-completions, openai-compatible, structured-output, json-schema

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "audio",
      "options": [
        {
          "name": "Audio",
          "value": "audio"
        },
        {
          "name": "LLM",
          "value": "llm"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "transcribe",
      "options": [
        {
          "name": "Transcribe",
          "value": "transcribe",
          "action": "Transcribe audio",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/api/v1/transcribe/do_transcribe",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true
            }
          },
          "description": "Convert speech in an audio file to text"
        },
        {
          "name": "Diarize",
          "value": "diarize",
          "action": "Diarize speakers",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/api/v1/diarization/do_diarize",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true
            }
          },
          "description": "Split audio by speakers and return timestamps"
        },
        {
          "name": "Sentiment Analysis",
          "value": "sentiment",
          "action": "Analyze sentiment",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/api/v1/sentiment_analysis/analyze_file",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true
            }
          },
          "description": "Detect sentiment/emotion in audio"
        },
        {
          "name": "Summarize File",
          "value": "summarizeFile",
          "action": "Summarize a file",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "task": "={{$parameter[\"summarizeTask\"]}}",
                "prompt": "={{ $parameter[\"summarizeTask\"] === \"meeting_summary\" ? \"*\" : ($parameter[\"prompt\"] || \"*\") }}",
                "thinking": "={{$parameter[\"thinking\"]}}"
              },
              "url": "/api/v1/ai_service/summarize_file",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true
            }
          },
          "description": "Generate an AI summary of an uploaded file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audio"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "chatCompletions",
      "options": [
        {
          "name": "Message a Model",
          "value": "chatCompletions",
          "action": "Message a model",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/api/llm/v1/chat/completions",
              "method": "POST",
              "returnFullResponse": true
            }
          },
          "description": "Get a response from the model using LLM Palatine Speech"
        },
        {
          "name": "Summarize Text",
          "value": "summarizeText",
          "action": "Summarize text",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "task": "={{$parameter[\"summarizeTask\"]}}",
                "prompt": "={{ $parameter[\"summarizeTask\"] === \"meeting_summary\" ? \"*\" : ($parameter[\"prompt\"] || \"*\") }}",
                "thinking": "={{$parameter[\"thinking\"]}}"
              },
              "url": "/api/v1/ai_service/summarize_text",
              "method": "POST",
              "headers": {
                "Content-Type": "text/plain; charset=utf-8"
              },
              "returnFullResponse": true
            }
          },
          "description": "Generate an AI summary of provided text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "llm"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Transcribe",
      "value": "transcribe",
      "action": "Transcribe audio",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/api/v1/transcribe/do_transcribe",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true
        }
      },
      "description": "Convert speech in an audio file to text",
      "resource": "audio"
    },
    {
      "name": "Diarize",
      "value": "diarize",
      "action": "Diarize speakers",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/api/v1/diarization/do_diarize",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true
        }
      },
      "description": "Split audio by speakers and return timestamps",
      "resource": "audio"
    },
    {
      "name": "Sentiment Analysis",
      "value": "sentiment",
      "action": "Analyze sentiment",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/api/v1/sentiment_analysis/analyze_file",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true
        }
      },
      "description": "Detect sentiment/emotion in audio",
      "resource": "audio"
    },
    {
      "name": "Summarize File",
      "value": "summarizeFile",
      "action": "Summarize a file",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "task": "={{$parameter[\"summarizeTask\"]}}",
            "prompt": "={{ $parameter[\"summarizeTask\"] === \"meeting_summary\" ? \"*\" : ($parameter[\"prompt\"] || \"*\") }}",
            "thinking": "={{$parameter[\"thinking\"]}}"
          },
          "url": "/api/v1/ai_service/summarize_file",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true
        }
      },
      "description": "Generate an AI summary of an uploaded file",
      "resource": "audio"
    },
    {
      "name": "Message a Model",
      "value": "chatCompletions",
      "action": "Message a model",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/api/llm/v1/chat/completions",
          "method": "POST",
          "returnFullResponse": true
        }
      },
      "description": "Get a response from the model using LLM Palatine Speech",
      "resource": "llm"
    },
    {
      "name": "Summarize Text",
      "value": "summarizeText",
      "action": "Summarize text",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "task": "={{$parameter[\"summarizeTask\"]}}",
            "prompt": "={{ $parameter[\"summarizeTask\"] === \"meeting_summary\" ? \"*\" : ($parameter[\"prompt\"] || \"*\") }}",
            "thinking": "={{$parameter[\"thinking\"]}}"
          },
          "url": "/api/v1/ai_service/summarize_text",
          "method": "POST",
          "headers": {
            "Content-Type": "text/plain; charset=utf-8"
          },
          "returnFullResponse": true
        }
      },
      "description": "Generate an AI summary of provided text",
      "resource": "llm"
    }
  ]

npm_readme:
  ![README banner](https://github.com/palatine-vision/n8n-nodes-palatine-speech/blob/main/docs/assets/Header.png)

  # n8n-nodes-palatine-speech

  > Designed for seamless integration of **Palatine Speech API** into n8n workflows.

  This is an n8n community node that integrates [Palatine Speech](https://speech.palatine.ru/) into your workflows and enables audio processing capabilities such as transcription, diarization, sentiment analysis, and summarization.

  ## Navigation

  [Supported Operations](#supported-operations)\
  [Installation](#installation)\
  [Credentials](#credentials)\
  [Workflow Example](#workflow-example)\
  [Use Cases](#use-cases)\
  [Compatibility](#compatibility)\
  [Useful Resources](#useful-resources)\
  [Keywords](#keywords)\
  [License](#license)\
  [Support](#support)

  > Looking for a Russian version? [Here](https://gist.github.com/Valeronich/b5d116fd4ca251ff672eda7d2a530a61)

  ## Supported Operations

  For details on each operation, see the Palatine Speech [documentation](https://docs.speech.palatine.ru/documentation/quick_start/transcription).

  - [Full list of supported file types](https://docs.speech.palatine.ru/documentation/technical_information/supported_files)
  - [Full list of supported languages](https://docs.speech.palatine.ru/documentation/technical_information/supported_languages)

  ### [Transcribe - speech transcription](https://docs.speech.palatine.ru/api-reference/transcribe-polling-api/transcribe)

  Speech-to-Text (STT) converts audio/video into a written transcript.  
  It supports multiple languages and can automatically detect the language spoken in the recording.  
  It is well-suited for calls, interviews, lectures, and any other recordings where an accurate transcript is required.

  ### [Diarize - speaker diarization](https://docs.speech.palatine.ru/api-reference/diarization-polling-api/diarize)

  Speaker diarization segments audio by speaker and labels speaker turns.  
  This is useful for meetings and interviews, where maintaining conversation structure matters.

  ### [Sentiment Analysis - sentiment analysis](https://docs.speech.palatine.ru/api-reference/sentiment-analysis-polling-api/sentiment-analysis)

  Determines the emotional tone of speech in audio/video (and can also analyze text).  
  The result is a ranked list of sentiment classes with probabilities, where the first item is the most likely:  
  `Very Negative`, `Negative`, `Neutral`, `Positive`, `Very Positive`.

  ### [Summarize - audio summarization](https://docs.speech.palatine.ru/api-reference/ai-service/summarize-file)

  Generates a structured summary from audio/video or pre-existing text.  
  In addition to built-in scenarios such as `meeting_summary`, it supports `user_prompt`, allowing you to define custom output structures (bullet points, decisions, action items, risks, Q&A, etc.).

  ### [Message to model - OpenAI-compatible chat](https://docs.speech.palatine.ru/api-reference/chat-completions/chat-completions)

  Generate a response from the Palatine Speech LLM using a list of messages (`system`, `user`, `assistant`).  
  You can select the model, tune generation parameters (`temperature`, `max_tokens`), and optionally enable `thinking` for deeper reasoning.

  Supported response formats:
  - `Text`
  - `JSON Object`
  - `JSON Schema`

  ## Installation

  1. In your n8n instance, go to **Settings > Community Nodes -> Install**
  2. Enter: `n8n-nodes-palatine-speech`
  3. Click **Install**

  > Make sure the environment variable `N8N_COMMUNITY_PACKAGES_ENABLED=true` is set.

  ## Credentials

  1. Go to **Credentials -> + Create**
  2. Find **Palatine Speech API**
  3. Fill in the fields:
     - **API Key** - available in your Palatine Speech dashboard
     - **Base URL** - default is `https://api.palatine.ru`

  ## Workflow Example

  1. `Webhook` -> Receive an audio file
  2. `Config` -> Configure parameters
  3. `Palatine Speech` -> Transcribe the file
  4. `Create record` -> Create a table record
  5. `Telegram` -> Send the result to a chat

  ![workflow example](https://github.com/palatine-vision/n8n-nodes-palatine-speech/blob/main/docs/assets/WorkflowExample.png)

  ## Use Cases

  - **Meeting summaries**  
  Use `Summarize` (`meeting_summary`) to generate summaries, decisions, and action items grouped by owner and due date.  
  Custom prompts can be used for additional structure.

  - **Lecture/webinar notes**  
  Recording -> `Transcribe` -> full transcript saved alongside materials.

  - **Automatic subtitles for video**  
  Extract audio -> `Transcribe` + `Diarize` -> convert to SRT/VTT.

  - **Customer support assistant**  
  Use `Sentiment Analysis` to determine tone and assign ticket priority.

  - **Action items extraction**  
  Use **Message to model** with **JSON Schema** to extract structured tasks (title, owner, due date, priority) and associated risks.  
  Results can be sent to Jira / Notion / Asana or team chat.

  ## Compatibility

  Tested with n8n v1.39.1 and later.

  ## Useful Resources

  - [Palatine Speech documentation](https://docs.speech.palatine.ru/documentation/quick_start/transcription)
  - [n8n Community Nodes guide](https://docs.n8n.io/integrations/community-nodes/)
  - [Official n8n GitHub](https://github.com/n8n-io/n8n)

  ## Keywords

  `n8n-community-node-package`, `n8n`, `palatine`, `speech-to-text`, `transcribe`, `transcription`, `stt`, `audio`, `ai`, `automation`, `voice-to-text`, `speech-recognition`, `audio-transcription`, `audio2text`, `audio-processing`, `diarization`, `speaker-diarization`, `speaker-segmentation`, `summarization`, `audio-summarization`, `sentiment-analysis`, `emotion-detection`, `tone-analysis`, `llm`, `chat-completions`, `openai-compatible`, `structured-output`, `json-schema`

  ## License
  MIT

  ## Support
  Need help? Contact our Telegram support bot: [@Speech_Palatine_Support_Bot](https://t.me/Speech_Palatine_Support_Bot)

ai_documentation_summary:
  {"purpose":"Integrates Palatine Speech API into n8n workflows for audio/video transcription, speaker diarization, sentiment analysis, summarization, and OpenAI-compatible chat completions. It can also process text for sentiment analysis and generate structured AI outputs.","capabilities":["Transcribe audio/video to text with automatic language detection","Perform speaker diarization and label speaker turns","Run sentiment analysis on audio/video or text with ranked sentiment classes","Generate structured summaries from audio/video or text, including custom prompt-based outputs","Call OpenAI-compatible chat completions with system/user/assistant messages","Support response formats: Text, JSON Object, and JSON Schema","Configure model selection, temperature, max_tokens, and optional thinking mode"],"authentication":"API key required (Palatine Speech API Key) with configurable Base URL (default: https://api.palatine.ru)","commonUseCases":["Meeting summaries with decisions and action items","Lecture or webinar transcription and note-taking","Automatic subtitles for videos using transcription and diarization","Customer support tone analysis and ticket prioritization","Structured task extraction for tools like Jira, Notion, or Asana"],"limitations":["Tested with n8n v1.39.1 and later","Supported file types and languages depend on Palatine Speech API documentation","Requires N8N_COMMUNITY_PACKAGES_ENABLED=true to install community node packages"],"relatedNodes":["Webhook","Telegram","Jira","Notion","Asana"]}


node_type: n8n-nodes-rentman.rentman
package_name: n8n-nodes-rentman
display_name: Rentman
description: Interact with the Rentman rental management API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: huelse
author_github_url: https://github.com/huelsevoort/
npm_package_name: n8n-nodes-rentman
npm_version: 26.5.0-1.13.0
community_fetched_at: 2026-07-14T14:40:34.422Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Accessory",
          "value": "accessory",
          "description": "Equipment accessories"
        },
        {
          "name": "Actual Content",
          "value": "actualContent",
          "description": "Actual content of equipment sets"
        },
        {
          "name": "Alternative",
          "value": "alternative",
          "description": "Equipment alternatives"
        },
        {
          "name": "Appointment",
          "value": "appointment",
          "description": "Calendar appointments"
        },
        {
          "name": "Appointment Crew",
          "value": "appointmentCrew",
          "description": "Crew on appointments"
        },
        {
          "name": "Contact",
          "value": "contact",
          "description": "Customers, suppliers and other contacts"
        },
        {
          "name": "Contact Person",
          "value": "contactPerson",
          "description": "Persons linked to a contact"
        },
        {
          "name": "Contract",
          "value": "contract",
          "description": "Project contracts"
        },
        {
          "name": "Cost",
          "value": "cost",
          "description": "Project costs"
        },
        {
          "name": "Crew",
          "value": "crew",
          "description": "Crew members"
        },
        {
          "name": "Crew Availability",
          "value": "crewAvailability",
          "description": "Crew availability entries"
        },
        {
          "name": "Crew Rate",
          "value": "crewRate",
          "description": "Crew rate definitions"
        },
        {
          "name": "Equipment",
          "value": "equipment",
          "description": "Equipment inventory"
        },
        {
          "name": "Equipment Assigned Serial",
          "value": "equipmentAssignedSerial",
          "description": "Assigned serial numbers"
        },
        {
          "name": "Equipment Sets Content",
          "value": "equipmentSetsContent",
          "description": "Default content of equipment sets"
        },
        {
          "name": "Extra Input Field",
          "value": "extraInputField",
          "description": "Custom field configurations"
        },
        {
          "name": "Factor",
          "value": "factor",
          "description": "Price factors"
        },
        {
          "name": "Factor Group",
          "value": "factorGroup",
          "description": "Price factor groups"
        },
        {
          "name": "File",
          "value": "file",
          "description": "Attached files"
        },
        {
          "name": "File Folder",
          "value": "fileFolder",
          "description": "File folder structure"
        },
        {
          "name": "Folder",
          "value": "folder",
          "description": "General folder structure"
        },
        {
          "name": "Invitation",
          "value": "invitation",
          "description": "Crew invitations"
        },
        {
          "name": "Invoice",
          "value": "invoice",
          "description": "Invoices"
        },
        {
          "name": "Invoice Line",
          "value": "invoiceLine",
          "description": "Individual invoice lines"
        },
        {
          "name": "Leave Mutation",
          "value": "leaveMutation",
          "description": "Leave balance mutations"
        },
        {
          "name": "Leave Request",
          "value": "leaveRequest",
          "description": "Crew leave requests"
        },
        {
          "name": "Leave Type",
          "value": "leaveType",
          "description": "Leave type definitions"
        },
        {
          "name": "Ledger Code",
          "value": "ledgerCode",
          "description": "Accounting ledger codes"
        },
        {
          "name": "Payment",
          "value": "payment",
          "description": "Invoice payments"
        },
        {
          "name": "Project",
          "value": "project",
          "description": "Rental projects"
        },
        {
          "name": "Project Crew",
          "value": "projectCrew",
          "description": "Crew assigned to project functions"
        },
        {
          "name": "Project Equipment",
          "value": "projectEquipment",
          "description": "Equipment on a project"
        },
        {
          "name": "Project Equipment Group",
          "value": "projectEquipmentGroup",
          "description": "Equipment groups on subprojects"
        },
        {
          "name": "Project Function",
          "value": "projectFunction",
          "description": "Crew functions on subprojects"
        },
        {
          "name": "Project Function Group",
          "value": "projectFunctionGroup",
          "description": "Function groups on subprojects"
        },
        {
          "name": "Project Request",
          "value": "projectRequest",
          "description": "Incoming project requests"
        },
        {
          "name": "Project Request Equipment",
          "value": "projectRequestEquipment",
          "description": "Equipment on project requests"
        },
        {
          "name": "Project Type",
          "value": "projectType",
          "description": "Project type definitions"
        },
        {
          "name": "Project Vehicle",
          "value": "projectVehicle",
          "description": "Vehicles on projects"
        },
        {
          "name": "Purchase Order",
          "value": "purchaseOrder",
          "description": "Purchase orders to suppliers"
        },
        {
          "name": "Purchase Order Cost",
          "value": "purchaseOrderCost",
          "description": "Costs on purchase orders"
        },
        {
          "name": "Purchase Order Global Cost",
          "value": "purchaseOrderGlobalCost",
          "description": "Global costs on purchase orders"
        },
        {
          "name": "Quote",
          "value": "quote",
          "description": "Project quotes"
        },
        {
          "name": "Rate",
          "value": "rate",
          "description": "Rate definitions"
        },
        {
          "name": "Rate Factor",
          "value": "rateFactor",
          "description": "Rate factor combinations"
        },
        {
          "name": "Repair",
          "value": "repair",
          "description": "Equipment repair records"
        },
        {
          "name": "Serial Number",
          "value": "serialNumber",
          "description": "Serial number records"
        },
        {
          "name": "Status",
          "value": "status",
          "description": "Project status definitions"
        },
        {
          "name": "Stock Location",
          "value": "stockLocation",
          "description": "Physical stock locations"
        },
        {
          "name": "Stock Movement",
          "value": "stockMovement",
          "description": "Stock movement records"
        },
        {
          "name": "Sub Rental",
          "value": "subRental",
          "description": "Sub-rental orders"
        },
        {
          "name": "Sub Rental Equipment",
          "value": "subRentalEquipment",
          "description": "Equipment on sub-rentals"
        },
        {
          "name": "Sub Rental Equipment Group",
          "value": "subRentalEquipmentGroup",
          "description": "Equipment groups on sub-rentals"
        },
        {
          "name": "Subproject",
          "value": "subproject",
          "description": "Project planning periods"
        },
        {
          "name": "Subtask",
          "value": "subtask",
          "description": "Subtasks of a task"
        },
        {
          "name": "Supplier",
          "value": "supplier",
          "description": "Equipment supplier relationships"
        },
        {
          "name": "Task",
          "value": "task",
          "description": "Tasks linked to projects, equipment, crew, etc"
        },
        {
          "name": "Task Assignment",
          "value": "taskAssignment",
          "description": "Crew assignments to tasks"
        },
        {
          "name": "Task Status",
          "value": "taskStatus",
          "description": "Task status definitions"
        },
        {
          "name": "Tax Class",
          "value": "taxClass",
          "description": "Tax class definitions"
        },
        {
          "name": "Time Registration",
          "value": "timeRegistration",
          "description": "Crew time registrations"
        },
        {
          "name": "Time Registration Activity",
          "value": "timeRegistrationActivity",
          "description": "Time registration activity categories"
        },
        {
          "name": "Vehicle",
          "value": "vehicle",
          "description": "Vehicles"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/contacts",
              "method": "POST"
            }
          },
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a contact by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single contact by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of contacts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/contacts",
              "method": "GET"
            }
          },
          "description": "Get a list of contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact person",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a contact person by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact person",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single contact person by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of contact persons",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/contactpersons",
              "method": "GET"
            }
          },
          "description": "Get a list of contact persons"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact person",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing contact person"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactPerson"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projects",
              "method": "POST"
            }
          },
          "description": "Create a new project"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of projects",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projects",
              "method": "GET"
            }
          },
          "description": "Get a list of projects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a subproject",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single subproject by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of subprojects",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/subprojects",
              "method": "GET"
            }
          },
          "description": "Get a list of subprojects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subproject"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project crew",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project crew by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project crews",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectcrew",
              "method": "GET"
            }
          },
          "description": "Get a list of project crews"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectCrew"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project equipment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project equipment by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project equipments",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectequipment",
              "method": "GET"
            }
          },
          "description": "Get a list of project equipments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectEquipment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project equipment group",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project equipment group by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project equipment groups",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectequipmentgroup",
              "method": "GET"
            }
          },
          "description": "Get a list of project equipment groups"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectEquipmentGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project function",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project function by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project functions",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectfunctions",
              "method": "GET"
            }
          },
          "description": "Get a list of project functions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectFunction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project function group",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project function group by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project function groups",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectfunctiongroups",
              "method": "GET"
            }
          },
          "description": "Get a list of project function groups"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectFunctionGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectrequests",
              "method": "POST"
            }
          },
          "description": "Create a new project request"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a project request by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project request by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project requests",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectrequests",
              "method": "GET"
            }
          },
          "description": "Get a list of project requests"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing project request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectRequest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project request equipment entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a project request equipment entry by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project request equipment entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project request equipment entry by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project request equipment entries",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectrequestequipment",
              "method": "GET"
            }
          },
          "description": "Get a list of project request equipment entries"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project request equipment entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing project request equipment entry"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectRequestEquipment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project type",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project type by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project types",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projecttypes",
              "method": "GET"
            }
          },
          "description": "Get a list of project types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project vehicle",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single project vehicle by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of project vehicles",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/projectvehicles",
              "method": "GET"
            }
          },
          "description": "Get a list of project vehicles"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectVehicle"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contract",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single contract by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of contracts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/contracts",
              "method": "GET"
            }
          },
          "description": "Get a list of contracts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a quote",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single quote by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of quotes",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/quotes",
              "method": "GET"
            }
          },
          "description": "Get a list of quotes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "quote"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a crew member",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single crew member by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of crew members",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/crew",
              "method": "GET"
            }
          },
          "description": "Get a list of crew members"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crew"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a crew availability entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/crewavailability",
              "method": "POST"
            }
          },
          "description": "Create a new crew availability entry"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a crew availability entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a crew availability entry by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a crew availability entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single crew availability entry by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of crew availability entries",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/crewavailability",
              "method": "GET"
            }
          },
          "description": "Get a list of crew availability entries"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a crew availability entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing crew availability entry"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crewAvailability"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a crew rate",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single crew rate by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of crew rates",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/crewrates",
              "method": "GET"
            }
          },
          "description": "Get a list of crew rates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crewRate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an appointment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/appointments",
              "method": "POST"
            }
          },
          "description": "Create a new appointment"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an appointment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete an appointment by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an appointment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single appointment by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of appointments",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/appointments",
              "method": "GET"
            }
          },
          "description": "Get a list of appointments"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an appointment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing appointment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appointment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an appointment crew entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete an appointment crew entry by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an appointment crew entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single appointment crew entry by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of appointment crew entries",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/appointmentcrew",
              "method": "GET"
            }
          },
          "description": "Get a list of appointment crew entries"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an appointment crew entry",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing appointment crew entry"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appointmentCrew"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a invitation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single invitation by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of invitations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/invitations",
              "method": "GET"
            }
          },
          "description": "Get a list of invitations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invitation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a leave mutation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leavemutation",
              "method": "POST"
            }
          },
          "description": "Create a new leave balance mutation"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a leave mutation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single leave mutation by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of leave mutations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leavemutation",
              "method": "GET"
            }
          },
          "description": "Get a list of leave mutations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "leaveMutation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a leave request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leaverequest",
              "method": "POST"
            }
          },
          "description": "Create a new leave request"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a leave request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single leave request by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of leave requests",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leaverequest",
              "method": "GET"
            }
          },
          "description": "Get a list of leave requests"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a leave request",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing leave request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "leaveRequest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a leave type",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single leave type by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of leave types",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/leavetypes",
              "method": "GET"
            }
          },
          "description": "Get a list of leave types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "leaveType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a time registration",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/timeregistration",
              "method": "POST"
            }
          },
          "description": "Create a new time registration entry"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a time registration",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a time registration by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a time registration",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single time registration by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of time registrations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/timeregistration",
              "method": "GET"
            }
          },
          "description": "Get a list of time registrations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a time registration",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing time registration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "timeRegistration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a time registration activity",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single time registration activity by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of time registration activitys",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/timeregistrationactivities",
              "method": "GET"
            }
          },
          "description": "Get a list of time registration activitys"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "timeRegistrationActivity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a piece of equipment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/equipment",
              "method": "POST"
            }
          },
          "description": "Create a new equipment item"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a piece of equipment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single equipment item by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of equipment items",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/equipment",
              "method": "GET"
            }
          },
          "description": "Get a list of equipment"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a piece of equipment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing equipment item"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "equipment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a accessory",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a new accessory for an equipment item"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a accessory",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a accessory by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a accessory",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single accessory by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of accessorys",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/accessories",
              "method": "GET"
            }
          },
          "description": "Get a list of accessorys"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a accessory",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing accessory"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accessory"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a actual content",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single actual content by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of actual contents",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/actualcontent",
              "method": "GET"
            }
          },
          "description": "Get a list of actual contents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "actualContent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an alternative",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create an equipment alternative (alternative for an equipment item)"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an alternative",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete an alternative by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an alternative",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single alternative by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of alternatives",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/alternatives",
              "method": "GET"
            }
          },
          "description": "Get a list of alternatives"
        },
        {
          "name": "Get For Equipment",
          "value": "getForEquipment",
          "action": "Get alternatives for an equipment item",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get all alternatives linked to a specific equipment item"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an alternative",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing alternative"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "alternative"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a equipment assigned serial",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single equipment assigned serial by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of equipment assigned serials",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/equipmentassignedserials",
              "method": "GET"
            }
          },
          "description": "Get a list of equipment assigned serials"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "equipmentAssignedSerial"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a equipment sets content",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a new equipment sets content for an equipment item"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a equipment sets content",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a equipment sets content by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a equipment sets content",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single equipment sets content by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of equipment sets contents",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/equipmentsetscontent",
              "method": "GET"
            }
          },
          "description": "Get a list of equipment sets contents"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a equipment sets content",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing equipment sets content"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "equipmentSetsContent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a repair",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single repair by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of repairs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/repairs",
              "method": "GET"
            }
          },
          "description": "Get a list of repairs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "repair"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a serial number",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a new serial number for an equipment item"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a serial number",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a serial number by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a serial number",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single serial number by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of serial numbers",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/serialnumbers",
              "method": "GET"
            }
          },
          "description": "Get a list of serial numbers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a serial number",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing serial number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serialNumber"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a stock location",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single stock location by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of stock locations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/stocklocations",
              "method": "GET"
            }
          },
          "description": "Get a list of stock locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stockLocation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a stock movement",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a stock movement by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a stock movement",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single stock movement by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of stock movements",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/stockmovements",
              "method": "GET"
            }
          },
          "description": "Get a list of stock movements"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a stock movement",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing stock movement"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stockMovement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a supplier",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a supplier relationship between a contact and an equipment item"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a supplier",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a supplier by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a supplier",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single supplier by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of suppliers",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/suppliers",
              "method": "GET"
            }
          },
          "description": "Get a list of suppliers"
        },
        {
          "name": "Get File Folders",
          "value": "getFileFolders",
          "action": "Get supplier file folders",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get the file folders attached to a supplier"
        },
        {
          "name": "Get Files",
          "value": "getFiles",
          "action": "Get supplier files",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get the files attached to a supplier"
        },
        {
          "name": "Get For Equipment",
          "value": "getForEquipment",
          "action": "Get suppliers for an equipment item",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get all supplier links for a specific equipment item"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a supplier",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing supplier"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "supplier"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a cost",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a cost by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a cost",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single cost by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of costs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/costs",
              "method": "GET"
            }
          },
          "description": "Get a list of costs"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a cost",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing cost"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "cost"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an invoice",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single invoice by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of invoices",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/invoices",
              "method": "GET"
            }
          },
          "description": "Get a list of invoices"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an invoice line",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single invoice line by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of invoice lines",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/invoicelines",
              "method": "GET"
            }
          },
          "description": "Get a list of invoice lines. Lines are generated based on tax rates and ledgers and sum up to the invoice total."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoiceLine"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a payment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single payment by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of payments",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/payments",
              "method": "GET"
            }
          },
          "description": "Get a list of payments"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a payment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing payment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a purchase order",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single purchase order by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of purchase orders",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/purchaseorders",
              "method": "GET"
            }
          },
          "description": "Get a list of purchase orders"
        },
        {
          "name": "Get File Folders",
          "value": "getFileFolders",
          "action": "Get purchase order file folders",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get file folders attached to a purchase order"
        },
        {
          "name": "Get Files",
          "value": "getFiles",
          "action": "Get purchase order files",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get files attached to a purchase order"
        },
        {
          "name": "Get Global Costs",
          "value": "getGlobalCosts",
          "action": "Get purchase order global costs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get global costs linked to a purchase order"
        },
        {
          "name": "Get Invoice Lines",
          "value": "getInvoiceLines",
          "action": "Get purchase order invoice lines",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get invoice lines linked to a purchase order"
        },
        {
          "name": "Get Order Costs",
          "value": "getOrderCosts",
          "action": "Get purchase order costs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get costs linked to a purchase order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseOrder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a purchase order cost",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single purchase order cost by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of purchase order costs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/purchaseordercosts",
              "method": "GET"
            }
          },
          "description": "Get a list of purchase order costs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseOrderCost"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a purchase order global cost",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single purchase order global cost by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of purchase order global costs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/purchaseorderglobalcosts",
              "method": "GET"
            }
          },
          "description": "Get a list of purchase order global costs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseOrderGlobalCost"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/tasks",
              "method": "POST"
            }
          },
          "description": "Create a new task"
        },
        {
          "name": "Create For Parent",
          "value": "createForParent",
          "action": "Create a task linked to a parent resource",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a task under a parent resource (POST /{parent}/{ID}/tasks)"
        },
        {
          "name": "Create Subtask",
          "value": "createSubtask",
          "action": "Create a subtask",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a subtask under a parent task"
        },
        {
          "name": "Create Task Assignment",
          "value": "createTaskAssignment",
          "action": "Create a task assignment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a task assignment under a parent task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a task by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single task by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of tasks",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/tasks",
              "method": "GET"
            }
          },
          "description": "Get a list of tasks"
        },
        {
          "name": "Get File Folders",
          "value": "getFileFolders",
          "action": "Get task file folders",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get file folders attached to a task"
        },
        {
          "name": "Get Files",
          "value": "getFiles",
          "action": "Get task files",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get files attached to a task"
        },
        {
          "name": "Get For Parent",
          "value": "getForParent",
          "action": "Get tasks for a parent resource",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get tasks linked to a parent resource (GET /{parent}/{ID}/tasks)"
        },
        {
          "name": "Get Subtasks",
          "value": "getSubtasks",
          "action": "Get subtasks",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get all subtasks of a task"
        },
        {
          "name": "Get Task Assignments",
          "value": "getTaskAssignments",
          "action": "Get task assignments",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get all task assignments of a task"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/taskstatuses",
              "method": "POST"
            }
          },
          "description": "Create a new task status"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a task status by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single task status by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of task statuses",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/taskstatuses",
              "method": "GET"
            }
          },
          "description": "Get a list of task statuses"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing task status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "taskStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a subtask",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a subtask by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a subtask",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single subtask by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of subtasks",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/subtasks",
              "method": "GET"
            }
          },
          "description": "Get a list of subtasks (use Task → Create Subtask to create new ones)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a subtask",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing subtask"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subtask"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task assignment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a task assignment by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task assignment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single task assignment by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of task assignments",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/taskassignments",
              "method": "GET"
            }
          },
          "description": "Get a list of task assignments (use Task → Create Task Assignment to create new ones)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task assignment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing task assignment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "taskAssignment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a sub rental",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single sub rental by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of sub rentals",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/subrentals",
              "method": "GET"
            }
          },
          "description": "Get a list of sub rentals"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subRental"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a sub rental equipment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single sub rental equipment by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of sub rental equipments",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/subrentalequipment",
              "method": "GET"
            }
          },
          "description": "Get a list of sub rental equipments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subRentalEquipment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a sub rental equipment group",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single sub rental equipment group by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of sub rental equipment groups",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/subrentalequipmentgroup",
              "method": "GET"
            }
          },
          "description": "Get a list of sub rental equipment groups"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subRentalEquipmentGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single file by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of files",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/files",
              "method": "GET"
            }
          },
          "description": "Get a list of files"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file folder",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single file folder by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of file folders",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/file_folders",
              "method": "GET"
            }
          },
          "description": "Get a list of file folders"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fileFolder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a folder",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/folders",
              "method": "POST"
            }
          },
          "description": "Create a new folder"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a folder",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single folder by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of folders",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/folders",
              "method": "GET"
            }
          },
          "description": "Get a list of folders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a folder",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing folder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a factor",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single factor by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of factors",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/factors",
              "method": "GET"
            }
          },
          "description": "Get a list of factors"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "factor"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a factor group",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single factor group by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of factor groups",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/factorgroups",
              "method": "GET"
            }
          },
          "description": "Get a list of factor groups"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "factorGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a rate",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single rate by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of rates",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/rates",
              "method": "GET"
            }
          },
          "description": "Get a list of rates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a rate factor",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single rate factor by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of rate factors",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/ratefactors",
              "method": "GET"
            }
          },
          "description": "Get a list of rate factors"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rateFactor"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a tax class",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single tax class by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of tax classs",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/taxclasses",
              "method": "GET"
            }
          },
          "description": "Get a list of tax classs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "taxClass"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a ledger code",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single ledger code by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of ledger codes",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/ledgercodes",
              "method": "GET"
            }
          },
          "description": "Get a list of ledger codes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ledgerCode"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an extra input field",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single extra input field (custom field configuration) by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of extra input fields",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/extrainputfields",
              "method": "GET"
            }
          },
          "description": "Get many custom field configurations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "extraInputField"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a status",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single status by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of statuss",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/statuses",
              "method": "GET"
            }
          },
          "description": "Get a list of statuss"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "status"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a vehicle",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/vehicles",
              "method": "POST"
            }
          },
          "description": "Create a new vehicle"
        },
        {
          "name": "Create For Stock Location",
          "value": "createForStockLocation",
          "action": "Create a vehicle for a stock location",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Create a vehicle linked to a specific stock location"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a vehicle",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "method": "DELETE"
            }
          },
          "description": "Delete a vehicle by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a vehicle",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a single vehicle by ID"
        },
        {
          "name": "Get Collection",
          "value": "getAll",
          "action": "Get collection of vehicles",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/vehicles",
              "method": "GET"
            }
          },
          "description": "Get a list of vehicles"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a vehicle",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "method": "PUT"
            }
          },
          "description": "Update an existing vehicle"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vehicle"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/contacts",
          "method": "POST"
        }
      },
      "description": "Create a new contact",
      "resource": "contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a contact by ID",
      "resource": "contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single contact by ID",
      "resource": "contact"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of contacts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/contacts",
          "method": "GET"
        }
      },
      "description": "Get a list of contacts",
      "resource": "contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing contact",
      "resource": "contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact person",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a contact person by ID",
      "resource": "contactPerson"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact person",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single contact person by ID",
      "resource": "contactPerson"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of contact persons",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/contactpersons",
          "method": "GET"
        }
      },
      "description": "Get a list of contact persons",
      "resource": "contactPerson"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact person",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing contact person",
      "resource": "contactPerson"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projects",
          "method": "POST"
        }
      },
      "description": "Create a new project",
      "resource": "project"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project by ID",
      "resource": "project"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of projects",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projects",
          "method": "GET"
        }
      },
      "description": "Get a list of projects",
      "resource": "project"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a subproject",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single subproject by ID",
      "resource": "subproject"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of subprojects",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/subprojects",
          "method": "GET"
        }
      },
      "description": "Get a list of subprojects",
      "resource": "subproject"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project crew",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project crew by ID",
      "resource": "projectCrew"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project crews",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectcrew",
          "method": "GET"
        }
      },
      "description": "Get a list of project crews",
      "resource": "projectCrew"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project equipment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project equipment by ID",
      "resource": "projectEquipment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project equipments",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectequipment",
          "method": "GET"
        }
      },
      "description": "Get a list of project equipments",
      "resource": "projectEquipment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project equipment group",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project equipment group by ID",
      "resource": "projectEquipmentGroup"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project equipment groups",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectequipmentgroup",
          "method": "GET"
        }
      },
      "description": "Get a list of project equipment groups",
      "resource": "projectEquipmentGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project function",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project function by ID",
      "resource": "projectFunction"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project functions",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectfunctions",
          "method": "GET"
        }
      },
      "description": "Get a list of project functions",
      "resource": "projectFunction"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project function group",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project function group by ID",
      "resource": "projectFunctionGroup"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project function groups",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectfunctiongroups",
          "method": "GET"
        }
      },
      "description": "Get a list of project function groups",
      "resource": "projectFunctionGroup"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectrequests",
          "method": "POST"
        }
      },
      "description": "Create a new project request",
      "resource": "projectRequest"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a project request by ID",
      "resource": "projectRequest"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project request by ID",
      "resource": "projectRequest"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project requests",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectrequests",
          "method": "GET"
        }
      },
      "description": "Get a list of project requests",
      "resource": "projectRequest"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing project request",
      "resource": "projectRequest"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project request equipment entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a project request equipment entry by ID",
      "resource": "projectRequestEquipment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project request equipment entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project request equipment entry by ID",
      "resource": "projectRequestEquipment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project request equipment entries",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectrequestequipment",
          "method": "GET"
        }
      },
      "description": "Get a list of project request equipment entries",
      "resource": "projectRequestEquipment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project request equipment entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing project request equipment entry",
      "resource": "projectRequestEquipment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project type",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project type by ID",
      "resource": "projectType"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project types",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projecttypes",
          "method": "GET"
        }
      },
      "description": "Get a list of project types",
      "resource": "projectType"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project vehicle",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single project vehicle by ID",
      "resource": "projectVehicle"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of project vehicles",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/projectvehicles",
          "method": "GET"
        }
      },
      "description": "Get a list of project vehicles",
      "resource": "projectVehicle"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contract",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single contract by ID",
      "resource": "contract"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of contracts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/contracts",
          "method": "GET"
        }
      },
      "description": "Get a list of contracts",
      "resource": "contract"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a quote",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single quote by ID",
      "resource": "quote"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of quotes",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/quotes",
          "method": "GET"
        }
      },
      "description": "Get a list of quotes",
      "resource": "quote"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a crew member",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single crew member by ID",
      "resource": "crew"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of crew members",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/crew",
          "method": "GET"
        }
      },
      "description": "Get a list of crew members",
      "resource": "crew"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a crew availability entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/crewavailability",
          "method": "POST"
        }
      },
      "description": "Create a new crew availability entry",
      "resource": "crewAvailability"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a crew availability entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a crew availability entry by ID",
      "resource": "crewAvailability"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a crew availability entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single crew availability entry by ID",
      "resource": "crewAvailability"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of crew availability entries",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/crewavailability",
          "method": "GET"
        }
      },
      "description": "Get a list of crew availability entries",
      "resource": "crewAvailability"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a crew availability entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing crew availability entry",
      "resource": "crewAvailability"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a crew rate",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single crew rate by ID",
      "resource": "crewRate"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of crew rates",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/crewrates",
          "method": "GET"
        }
      },
      "description": "Get a list of crew rates",
      "resource": "crewRate"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an appointment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/appointments",
          "method": "POST"
        }
      },
      "description": "Create a new appointment",
      "resource": "appointment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an appointment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete an appointment by ID",
      "resource": "appointment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an appointment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single appointment by ID",
      "resource": "appointment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of appointments",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/appointments",
          "method": "GET"
        }
      },
      "description": "Get a list of appointments",
      "resource": "appointment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an appointment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing appointment",
      "resource": "appointment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an appointment crew entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete an appointment crew entry by ID",
      "resource": "appointmentCrew"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an appointment crew entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single appointment crew entry by ID",
      "resource": "appointmentCrew"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of appointment crew entries",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/appointmentcrew",
          "method": "GET"
        }
      },
      "description": "Get a list of appointment crew entries",
      "resource": "appointmentCrew"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an appointment crew entry",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing appointment crew entry",
      "resource": "appointmentCrew"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a invitation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single invitation by ID",
      "resource": "invitation"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of invitations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/invitations",
          "method": "GET"
        }
      },
      "description": "Get a list of invitations",
      "resource": "invitation"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a leave mutation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leavemutation",
          "method": "POST"
        }
      },
      "description": "Create a new leave balance mutation",
      "resource": "leaveMutation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a leave mutation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single leave mutation by ID",
      "resource": "leaveMutation"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of leave mutations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leavemutation",
          "method": "GET"
        }
      },
      "description": "Get a list of leave mutations",
      "resource": "leaveMutation"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a leave request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leaverequest",
          "method": "POST"
        }
      },
      "description": "Create a new leave request",
      "resource": "leaveRequest"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a leave request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single leave request by ID",
      "resource": "leaveRequest"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of leave requests",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leaverequest",
          "method": "GET"
        }
      },
      "description": "Get a list of leave requests",
      "resource": "leaveRequest"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a leave request",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing leave request",
      "resource": "leaveRequest"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a leave type",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single leave type by ID",
      "resource": "leaveType"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of leave types",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/leavetypes",
          "method": "GET"
        }
      },
      "description": "Get a list of leave types",
      "resource": "leaveType"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a time registration",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/timeregistration",
          "method": "POST"
        }
      },
      "description": "Create a new time registration entry",
      "resource": "timeRegistration"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a time registration",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a time registration by ID",
      "resource": "timeRegistration"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a time registration",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single time registration by ID",
      "resource": "timeRegistration"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of time registrations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/timeregistration",
          "method": "GET"
        }
      },
      "description": "Get a list of time registrations",
      "resource": "timeRegistration"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a time registration",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing time registration",
      "resource": "timeRegistration"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a time registration activity",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single time registration activity by ID",
      "resource": "timeRegistrationActivity"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of time registration activitys",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/timeregistrationactivities",
          "method": "GET"
        }
      },
      "description": "Get a list of time registration activitys",
      "resource": "timeRegistrationActivity"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a piece of equipment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/equipment",
          "method": "POST"
        }
      },
      "description": "Create a new equipment item",
      "resource": "equipment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a piece of equipment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single equipment item by ID",
      "resource": "equipment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of equipment items",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/equipment",
          "method": "GET"
        }
      },
      "description": "Get a list of equipment",
      "resource": "equipment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a piece of equipment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing equipment item",
      "resource": "equipment"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a accessory",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a new accessory for an equipment item",
      "resource": "accessory"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a accessory",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a accessory by ID",
      "resource": "accessory"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a accessory",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single accessory by ID",
      "resource": "accessory"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of accessorys",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/accessories",
          "method": "GET"
        }
      },
      "description": "Get a list of accessorys",
      "resource": "accessory"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a accessory",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing accessory",
      "resource": "accessory"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a actual content",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single actual content by ID",
      "resource": "actualContent"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of actual contents",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/actualcontent",
          "method": "GET"
        }
      },
      "description": "Get a list of actual contents",
      "resource": "actualContent"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an alternative",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create an equipment alternative (alternative for an equipment item)",
      "resource": "alternative"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an alternative",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete an alternative by ID",
      "resource": "alternative"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an alternative",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single alternative by ID",
      "resource": "alternative"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of alternatives",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/alternatives",
          "method": "GET"
        }
      },
      "description": "Get a list of alternatives",
      "resource": "alternative"
    },
    {
      "name": "Get For Equipment",
      "value": "getForEquipment",
      "action": "Get alternatives for an equipment item",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get all alternatives linked to a specific equipment item",
      "resource": "alternative"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an alternative",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing alternative",
      "resource": "alternative"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a equipment assigned serial",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single equipment assigned serial by ID",
      "resource": "equipmentAssignedSerial"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of equipment assigned serials",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/equipmentassignedserials",
          "method": "GET"
        }
      },
      "description": "Get a list of equipment assigned serials",
      "resource": "equipmentAssignedSerial"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a equipment sets content",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a new equipment sets content for an equipment item",
      "resource": "equipmentSetsContent"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a equipment sets content",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a equipment sets content by ID",
      "resource": "equipmentSetsContent"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a equipment sets content",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single equipment sets content by ID",
      "resource": "equipmentSetsContent"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of equipment sets contents",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/equipmentsetscontent",
          "method": "GET"
        }
      },
      "description": "Get a list of equipment sets contents",
      "resource": "equipmentSetsContent"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a equipment sets content",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing equipment sets content",
      "resource": "equipmentSetsContent"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a repair",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single repair by ID",
      "resource": "repair"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of repairs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/repairs",
          "method": "GET"
        }
      },
      "description": "Get a list of repairs",
      "resource": "repair"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a serial number",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a new serial number for an equipment item",
      "resource": "serialNumber"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a serial number",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a serial number by ID",
      "resource": "serialNumber"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a serial number",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single serial number by ID",
      "resource": "serialNumber"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of serial numbers",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/serialnumbers",
          "method": "GET"
        }
      },
      "description": "Get a list of serial numbers",
      "resource": "serialNumber"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a serial number",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing serial number",
      "resource": "serialNumber"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a stock location",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single stock location by ID",
      "resource": "stockLocation"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of stock locations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/stocklocations",
          "method": "GET"
        }
      },
      "description": "Get a list of stock locations",
      "resource": "stockLocation"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a stock movement",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a stock movement by ID",
      "resource": "stockMovement"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a stock movement",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single stock movement by ID",
      "resource": "stockMovement"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of stock movements",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/stockmovements",
          "method": "GET"
        }
      },
      "description": "Get a list of stock movements",
      "resource": "stockMovement"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a stock movement",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing stock movement",
      "resource": "stockMovement"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a supplier",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a supplier relationship between a contact and an equipment item",
      "resource": "supplier"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a supplier",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a supplier by ID",
      "resource": "supplier"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a supplier",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single supplier by ID",
      "resource": "supplier"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of suppliers",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/suppliers",
          "method": "GET"
        }
      },
      "description": "Get a list of suppliers",
      "resource": "supplier"
    },
    {
      "name": "Get File Folders",
      "value": "getFileFolders",
      "action": "Get supplier file folders",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get the file folders attached to a supplier",
      "resource": "supplier"
    },
    {
      "name": "Get Files",
      "value": "getFiles",
      "action": "Get supplier files",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get the files attached to a supplier",
      "resource": "supplier"
    },
    {
      "name": "Get For Equipment",
      "value": "getForEquipment",
      "action": "Get suppliers for an equipment item",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get all supplier links for a specific equipment item",
      "resource": "supplier"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a supplier",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing supplier",
      "resource": "supplier"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a cost",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a cost by ID",
      "resource": "cost"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a cost",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single cost by ID",
      "resource": "cost"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of costs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/costs",
          "method": "GET"
        }
      },
      "description": "Get a list of costs",
      "resource": "cost"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a cost",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing cost",
      "resource": "cost"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an invoice",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single invoice by ID",
      "resource": "invoice"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of invoices",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/invoices",
          "method": "GET"
        }
      },
      "description": "Get a list of invoices",
      "resource": "invoice"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an invoice line",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single invoice line by ID",
      "resource": "invoiceLine"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of invoice lines",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/invoicelines",
          "method": "GET"
        }
      },
      "description": "Get a list of invoice lines. Lines are generated based on tax rates and ledgers and sum up to the invoice total.",
      "resource": "invoiceLine"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a payment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single payment by ID",
      "resource": "payment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of payments",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/payments",
          "method": "GET"
        }
      },
      "description": "Get a list of payments",
      "resource": "payment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a payment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing payment",
      "resource": "payment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a purchase order",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single purchase order by ID",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of purchase orders",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/purchaseorders",
          "method": "GET"
        }
      },
      "description": "Get a list of purchase orders",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get File Folders",
      "value": "getFileFolders",
      "action": "Get purchase order file folders",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get file folders attached to a purchase order",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get Files",
      "value": "getFiles",
      "action": "Get purchase order files",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get files attached to a purchase order",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get Global Costs",
      "value": "getGlobalCosts",
      "action": "Get purchase order global costs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get global costs linked to a purchase order",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get Invoice Lines",
      "value": "getInvoiceLines",
      "action": "Get purchase order invoice lines",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get invoice lines linked to a purchase order",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get Order Costs",
      "value": "getOrderCosts",
      "action": "Get purchase order costs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get costs linked to a purchase order",
      "resource": "purchaseOrder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a purchase order cost",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single purchase order cost by ID",
      "resource": "purchaseOrderCost"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of purchase order costs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/purchaseordercosts",
          "method": "GET"
        }
      },
      "description": "Get a list of purchase order costs",
      "resource": "purchaseOrderCost"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a purchase order global cost",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single purchase order global cost by ID",
      "resource": "purchaseOrderGlobalCost"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of purchase order global costs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/purchaseorderglobalcosts",
          "method": "GET"
        }
      },
      "description": "Get a list of purchase order global costs",
      "resource": "purchaseOrderGlobalCost"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/tasks",
          "method": "POST"
        }
      },
      "description": "Create a new task",
      "resource": "task"
    },
    {
      "name": "Create For Parent",
      "value": "createForParent",
      "action": "Create a task linked to a parent resource",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a task under a parent resource (POST /{parent}/{ID}/tasks)",
      "resource": "task"
    },
    {
      "name": "Create Subtask",
      "value": "createSubtask",
      "action": "Create a subtask",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a subtask under a parent task",
      "resource": "task"
    },
    {
      "name": "Create Task Assignment",
      "value": "createTaskAssignment",
      "action": "Create a task assignment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a task assignment under a parent task",
      "resource": "task"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a task by ID",
      "resource": "task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single task by ID",
      "resource": "task"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of tasks",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/tasks",
          "method": "GET"
        }
      },
      "description": "Get a list of tasks",
      "resource": "task"
    },
    {
      "name": "Get File Folders",
      "value": "getFileFolders",
      "action": "Get task file folders",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get file folders attached to a task",
      "resource": "task"
    },
    {
      "name": "Get Files",
      "value": "getFiles",
      "action": "Get task files",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get files attached to a task",
      "resource": "task"
    },
    {
      "name": "Get For Parent",
      "value": "getForParent",
      "action": "Get tasks for a parent resource",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get tasks linked to a parent resource (GET /{parent}/{ID}/tasks)",
      "resource": "task"
    },
    {
      "name": "Get Subtasks",
      "value": "getSubtasks",
      "action": "Get subtasks",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get all subtasks of a task",
      "resource": "task"
    },
    {
      "name": "Get Task Assignments",
      "value": "getTaskAssignments",
      "action": "Get task assignments",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get all task assignments of a task",
      "resource": "task"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing task",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/taskstatuses",
          "method": "POST"
        }
      },
      "description": "Create a new task status",
      "resource": "taskStatus"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a task status by ID",
      "resource": "taskStatus"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single task status by ID",
      "resource": "taskStatus"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of task statuses",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/taskstatuses",
          "method": "GET"
        }
      },
      "description": "Get a list of task statuses",
      "resource": "taskStatus"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing task status",
      "resource": "taskStatus"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a subtask",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a subtask by ID",
      "resource": "subtask"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a subtask",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single subtask by ID",
      "resource": "subtask"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of subtasks",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/subtasks",
          "method": "GET"
        }
      },
      "description": "Get a list of subtasks (use Task → Create Subtask to create new ones)",
      "resource": "subtask"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a subtask",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing subtask",
      "resource": "subtask"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task assignment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a task assignment by ID",
      "resource": "taskAssignment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task assignment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single task assignment by ID",
      "resource": "taskAssignment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of task assignments",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/taskassignments",
          "method": "GET"
        }
      },
      "description": "Get a list of task assignments (use Task → Create Task Assignment to create new ones)",
      "resource": "taskAssignment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task assignment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing task assignment",
      "resource": "taskAssignment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a sub rental",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single sub rental by ID",
      "resource": "subRental"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of sub rentals",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/subrentals",
          "method": "GET"
        }
      },
      "description": "Get a list of sub rentals",
      "resource": "subRental"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a sub rental equipment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single sub rental equipment by ID",
      "resource": "subRentalEquipment"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of sub rental equipments",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/subrentalequipment",
          "method": "GET"
        }
      },
      "description": "Get a list of sub rental equipments",
      "resource": "subRentalEquipment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a sub rental equipment group",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single sub rental equipment group by ID",
      "resource": "subRentalEquipmentGroup"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of sub rental equipment groups",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/subrentalequipmentgroup",
          "method": "GET"
        }
      },
      "description": "Get a list of sub rental equipment groups",
      "resource": "subRentalEquipmentGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a file",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single file by ID",
      "resource": "file"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of files",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/files",
          "method": "GET"
        }
      },
      "description": "Get a list of files",
      "resource": "file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a file folder",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single file folder by ID",
      "resource": "fileFolder"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of file folders",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/file_folders",
          "method": "GET"
        }
      },
      "description": "Get a list of file folders",
      "resource": "fileFolder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a folder",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/folders",
          "method": "POST"
        }
      },
      "description": "Create a new folder",
      "resource": "folder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a folder",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single folder by ID",
      "resource": "folder"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of folders",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/folders",
          "method": "GET"
        }
      },
      "description": "Get a list of folders",
      "resource": "folder"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a folder",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing folder",
      "resource": "folder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a factor",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single factor by ID",
      "resource": "factor"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of factors",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/factors",
          "method": "GET"
        }
      },
      "description": "Get a list of factors",
      "resource": "factor"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a factor group",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single factor group by ID",
      "resource": "factorGroup"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of factor groups",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/factorgroups",
          "method": "GET"
        }
      },
      "description": "Get a list of factor groups",
      "resource": "factorGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a rate",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single rate by ID",
      "resource": "rate"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of rates",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/rates",
          "method": "GET"
        }
      },
      "description": "Get a list of rates",
      "resource": "rate"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a rate factor",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single rate factor by ID",
      "resource": "rateFactor"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of rate factors",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/ratefactors",
          "method": "GET"
        }
      },
      "description": "Get a list of rate factors",
      "resource": "rateFactor"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a tax class",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single tax class by ID",
      "resource": "taxClass"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of tax classs",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/taxclasses",
          "method": "GET"
        }
      },
      "description": "Get a list of tax classs",
      "resource": "taxClass"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a ledger code",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single ledger code by ID",
      "resource": "ledgerCode"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of ledger codes",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/ledgercodes",
          "method": "GET"
        }
      },
      "description": "Get a list of ledger codes",
      "resource": "ledgerCode"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an extra input field",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single extra input field (custom field configuration) by ID",
      "resource": "extraInputField"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of extra input fields",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/extrainputfields",
          "method": "GET"
        }
      },
      "description": "Get many custom field configurations",
      "resource": "extraInputField"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a status",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single status by ID",
      "resource": "status"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of statuss",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/statuses",
          "method": "GET"
        }
      },
      "description": "Get a list of statuss",
      "resource": "status"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a vehicle",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/vehicles",
          "method": "POST"
        }
      },
      "description": "Create a new vehicle",
      "resource": "vehicle"
    },
    {
      "name": "Create For Stock Location",
      "value": "createForStockLocation",
      "action": "Create a vehicle for a stock location",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Create a vehicle linked to a specific stock location",
      "resource": "vehicle"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a vehicle",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "method": "DELETE"
        }
      },
      "description": "Delete a vehicle by ID",
      "resource": "vehicle"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a vehicle",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a single vehicle by ID",
      "resource": "vehicle"
    },
    {
      "name": "Get Collection",
      "value": "getAll",
      "action": "Get collection of vehicles",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/vehicles",
          "method": "GET"
        }
      },
      "description": "Get a list of vehicles",
      "resource": "vehicle"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a vehicle",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "method": "PUT"
        }
      },
      "description": "Update an existing vehicle",
      "resource": "vehicle"
    }
  ]

npm_readme:
  <p align="center">
    <img src="https://raw.githubusercontent.com/huelsevoort/n8n-nodes-rentman/main/nodes/Rentman/rentman.svg" width="80" alt="Rentman" />
  </p>

  # n8n-nodes-rentman

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-rentman.svg)](https://www.npmjs.com/package/n8n-nodes-rentman)
  [![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-rentman)](https://www.npmjs.com/package/n8n-nodes-rentman)
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
  [![GitHub last commit](https://img.shields.io/github/last-commit/huelsevoort/n8n-nodes-rentman)](https://github.com/huelsevoort/n8n-nodes-rentman/commits/main)
  [![GitHub issues](https://img.shields.io/github/issues/huelsevoort/n8n-nodes-rentman)](https://github.com/huelsevoort/n8n-nodes-rentman/issues)

  Community node for [n8n](https://n8n.io) that integrates with the [Rentman API](https://api.rentman.net) — the rental management software for AV, event, and crewing companies.

  > **Disclaimer:** This is an independent community integration and is not officially affiliated with or endorsed by Rentman.

  ---

  ## Versioning

  This package uses the scheme **`YY.Major.Minor-RentmanAPIVersion`**, inspired by calendar versioning:

  | Segment | Meaning | Example |
  |---|---|---|
  | `YY` | Year of release | `26` = 2026 |
  | `Major` | Breaking changes | `1` |
  | `Minor` | New features / fixes | `1` |
  | `RentmanAPIVersion` | Rentman OpenAPI spec version this node targets | `1.8.1` |

  **Example:** `26.1.1-1.8.1` — released in 2026, first major version, first minor update, built against Rentman API v1.8.1.

  When Rentman releases a new API version, the `RentmanAPIVersion` segment is bumped. When the node itself gains new features or fixes without an API change, only `YY.Major.Minor` changes.

  ---

  ## Prerequisites

  - n8n ≥ 1.0.0
  - A Rentman account with API access
  - A Rentman API token (JWT) — generated under **Configuration → Integrations**

  ---

  ## Installation

  **Via n8n UI (recommended)**
  1. Go to **Settings → Community Nodes → Install**
  2. Enter `n8n-nodes-rentman` and confirm

  **Self-hosted / manual**
  ```bash
  npm install n8n-nodes-rentman
  ```

  ---

  ## Authentication

  1. In Rentman: **Configuration → Integrations → Generate API token**
  2. In n8n: add a **Rentman API** credential and paste the token
  3. Click **Test credential** to verify

  > Only the most recently generated token is valid. Generating a new one invalidates the previous one.

  ---

  ## Supported Resources

  63 resources covering the full Rentman API. Resources marked **✏️** support write operations.

  | Category | Resource | Operations |
  |---|---|---|
  | **Contacts** | Contact ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Contact Person ✏️ | Delete, Get, Get Collection, Update |
  | **Projects** | Project ✏️ | Create, Get, Get Collection |
  | | Subproject | Get, Get Collection |
  | | Contract | Get, Get Collection |
  | | Quote | Get, Get Collection |
  | | Project Crew | Get, Get Collection |
  | | Project Equipment | Get, Get Collection |
  | | Project Equipment Group | Get, Get Collection |
  | | Project Function | Get, Get Collection |
  | | Project Function Group | Get, Get Collection |
  | | Project Request ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Project Request Equipment ✏️ | Delete, Get, Get Collection, Update |
  | | Project Type | Get, Get Collection |
  | | Project Vehicle | Get, Get Collection |
  | **Crew & HR** | Crew | Get, Get Collection |
  | | Crew Availability ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Crew Rate | Get, Get Collection |
  | | Appointment ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Appointment Crew ✏️ | Delete, Get, Get Collection, Update |
  | | Invitation | Get, Get Collection |
  | | Leave Mutation ✏️ | Create, Get, Get Collection |
  | | Leave Request ✏️ | Create, Get, Get Collection, Update |
  | | Leave Type | Get, Get Collection |
  | | Time Registration ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Time Registration Activity | Get, Get Collection |
  | **Equipment & Stock** | Equipment ✏️ | Create, Get, Get Collection, Update |
  | | Accessory ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Actual Content | Get, Get Collection |
  | | Alternative ✏️ | Create, Delete, Get, Get Collection, Get For Equipment, Update |
  | | Equipment Assigned Serial | Get, Get Collection |
  | | Equipment Sets Content ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Repair | Get, Get Collection |
  | | Serial Number ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Stock Location | Get, Get Collection |
  | | Stock Movement ✏️ | Delete, Get, Get Collection, Update |
  | | Supplier ✏️ | Create, Delete, Get, Get Collection, Get For Equipment, Get File Folders, Get Files, Update |
  | **Financial** | Invoice | Get, Get Collection |
  | | Invoice Line | Get, Get Collection |
  | | Payment ✏️ | Get, Get Collection, Update |
  | | Cost ✏️ | Delete, Get, Get Collection, Update |
  | | Purchase Order | Get, Get Collection, Get File Folders, Get Files, Get Global Costs, Get Invoice Lines, Get Order Costs |
  | | Purchase Order Cost | Get, Get Collection |
  | | Purchase Order Global Cost | Get, Get Collection |
  | **Sub-Rentals** | Sub Rental | Get, Get Collection |
  | | Sub Rental Equipment | Get, Get Collection |
  | | Sub Rental Equipment Group | Get, Get Collection |
  | **Files & Folders** | File | Get, Get Collection |
  | | File Folder | Get, Get Collection |
  | | Folder ✏️ | Create, Get, Get Collection, Update |
  | **Rates & Pricing** | Factor | Get, Get Collection |
  | | Factor Group | Get, Get Collection |
  | | Rate | Get, Get Collection |
  | | Rate Factor | Get, Get Collection |
  | | Tax Class | Get, Get Collection |
  | | Ledger Code | Get, Get Collection |
  | **Tasks** | Task ✏️ | Create, Create For Parent, Create Subtask, Create Task Assignment, Delete, Get, Get Collection, Get File Folders, Get Files, Get For Parent, Get Subtasks, Get Task Assignments, Update |
  | | Task Status ✏️ | Create, Delete, Get, Get Collection, Update |
  | | Subtask ✏️ | Delete, Get, Get Collection, Update |
  | | Task Assignment ✏️ | Delete, Get, Get Collection, Update |
  | **Misc** | Extra Input Field | Get, Get Collection |
  | | Status | Get, Get Collection |
  | | Vehicle ✏️ | Create, Create For Stock Location, Delete, Get, Get Collection, Update |

  ---

  ## Features

  All **Get Collection** operations support:

  | Feature | Details |
  |---|---|
  | **Return All** | Automatically follows `next_page_url` cursor pagination |
  | **Limit** | 1–1,500 items per page (default: 50) |
  | **Offset** | Skip N results for offset-based pagination |
  | **Sort** | `+field` ascending / `-field` descending (e.g. `+name`, `-modified`) |
  | **Filters** | Per-resource filters: name, code, status, date ranges, path references |
  | **Date filters** | `Modified After/Before`, `Created After` using Rentman's relational operators |
  | **Incremental sync** | `ID Greater Than` filter for efficient delta syncs |
  | **Field selection** | `Fields` filter to request only specific fields (reduces payload) |

  ### Expanding linked items

  All **read** operations (Get, Get Collection, and read sub-resource operations) expose an **Expand** field. By default a field that references another resource returns a path string (e.g. `"/equipment/12"`); pass one or more field names to `Expand` to inline the full linked object instead. Accepts a comma-separated list and supports dot notation for nested expansion up to 3 levels.

  ```
  Expand: equipment,equipment.creator
  ```

  Only `item`/`link` fields can be expanded. Requires Rentman API v1.13.0 or newer.

  ---

  ## API Limits

  | Limit | Value |
  |---|---|
  | Requests per day | 50,000 |
  | Requests per second | 10 |
  | Max concurrent requests | 20 |
  | Max items per page | 1,500 |

  ---

  ## Changelog

  See [CHANGELOG.md](CHANGELOG.md) for a full version history, or browse the [GitHub releases](https://github.com/huelsevoort/n8n-nodes-rentman/releases).

  ---

  ## Links

  - [Rentman API documentation](https://api.rentman.net)
  - [Report an issue](https://github.com/huelsevoort/n8n-nodes-rentman/issues)

  ---

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Integrates n8n with the Rentman rental management API to manage contacts, projects, crew, equipment, financial records, files, tasks, and other Rentman resources. It supports both read and write operations across much of the Rentman API.","capabilities":["Authenticate with a Rentman API token (JWT) stored in n8n credentials","Create, get, list, update, and delete records for supported Rentman resources","Manage contacts and contact persons","Work with projects, project requests, quotes, contracts, crew assignments, and equipment","Handle crew and HR data such as appointments, leave requests, time registrations, and availability","Manage equipment, stock movements, serial numbers, suppliers, and accessories","Access financial data including invoices, payments, costs, and purchase orders","Retrieve files and folders from Rentman","Manage tasks, task statuses, subtasks, and task assignments","Work with rates, pricing factors, tax classes, and ledger codes"],"authentication":"Rentman API token (JWT) required; add a Rentman API credential in n8n and paste the token. Only the most recently generated token is valid.","commonUseCases":["Sync Rentman contacts, projects, or equipment with other systems","Automate crew scheduling, availability, leave, and time registration workflows","Create or update project requests, tasks, appointments, and other operational records","Retrieve invoices, purchase orders, payments, and other financial information for reporting","Download or organize Rentman files and folders in automation workflows"],"limitations":["Only the most recently generated Rentman API token remains valid; generating a new token invalidates the previous one.","The README indicates 63 resources are supported, but the provided excerpt is truncated and does not show the full list."],"relatedNodes":[]}


node_type: n8n-nodes-ngram.ngram
package_name: n8n-nodes-ngram
display_name: Ngram
description: Create videos and look up video status from the Ngram public API.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ngram_eng
author_github_url: https://github.com/ngramdata/
npm_package_name: n8n-nodes-ngram
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.425Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "video",
      "options": [
        {
          "name": "Video",
          "value": "video"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a video",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/api/v1/videos",
              "method": "POST"
            }
          },
          "description": "Submit a new video job. Returns immediately; chain the \"On Video Ready\" trigger or Get Status for the final URL."
        },
        {
          "name": "Create From Text",
          "value": "createFromText",
          "action": "Create a video from text",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/api/v1/videos:fromText",
              "method": "POST"
            }
          },
          "description": "Submit a new video job from a text prompt. Returns immediately; chain the \"On Video Ready\" trigger or Get Status for the final URL."
        },
        {
          "name": "Create From URL",
          "value": "createFromUrl",
          "action": "Create a video from URL",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "/api/v1/videos:fromUrl",
              "method": "POST"
            }
          },
          "description": "Submit a new video job from a webpage, article, product page, or docs URL. Returns immediately; chain the \"On Video Ready\" trigger or Get Status for the final URL."
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get video status",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/api/v1/videos",
              "method": "GET"
            }
          },
          "description": "Look up the current status of a previously submitted video job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a video",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/api/v1/videos",
          "method": "POST"
        }
      },
      "description": "Submit a new video job. Returns immediately; chain the \"On Video Ready\" trigger or Get Status for the final URL.",
      "resource": "video"
    },
    {
      "name": "Create From Text",
      "value": "createFromText",
      "action": "Create a video from text",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/api/v1/videos:fromText",
          "method": "POST"
        }
      },
      "description": "Submit a new video job from a text prompt. Returns immediately; chain the \"On Video Ready\" trigger or Get Status for the final URL.",
      "resource": "video"
    },
    {
      "name": "Create From URL",
      "value": "createFromUrl",
      "action": "Create a video from URL",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "/api/v1/videos:fromUrl",
          "method": "POST"
        }
      },
      "description": "Submit a new video job from a webpage, article, product page, or docs URL. Returns immediately; chain the \"On Video Ready\" trigger or Get Status for the final URL.",
      "resource": "video"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get video status",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/api/v1/videos",
          "method": "GET"
        }
      },
      "description": "Look up the current status of a previously submitted video job",
      "resource": "video"
    }
  ]

npm_readme:
  # n8n-nodes-ngram

  ![n8n.io - Community Node](https://img.shields.io/badge/n8n-community-FF6D5A)
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-ngram.svg)](https://www.npmjs.com/package/n8n-nodes-ngram)
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)

  Official [Ngram](https://www.ngram.com) community node for [n8n](https://n8n.io).
  Generate polished AI videos from prompts, text, URLs, docs, and product content,
  then automate follow-up workflows when renders are ready or fail.

  This is an [n8n community node](https://docs.n8n.io/integrations/community-nodes/).
  It lets you use Ngram in your n8n workflows.

  ## Features

  - **Action - Create Video**: start an Ngram video render with optional brand context.
  - **Action - Create From Text**: turn a prompt or source text into a video.
  - **Action - Create From URL**: research a page, article, product page, or doc and create a video.
  - **Action - Get Status**: check a submitted job by id.
  - **Trigger - On Video Ready**: receive `video.completed` webhook events.
  - **Trigger - On Video Failed**: receive `video.failed` webhook events.

  ## Installation

  Follow the [n8n verified community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation-and-management/install-verified-community-nodes/).

  ### n8n Cloud

  1. Open the **nodes panel** from the canvas.
  2. Search for **Ngram**.
  3. Select the verified community node and install it for your instance.
  4. Add your **Ngram API** credential before running workflows.

  ### Self-hosted n8n

  1. Open **Settings > Community nodes > Install**.
  2. Enter `n8n-nodes-ngram` and confirm.
  3. Restart n8n. The Ngram nodes appear in the node picker.

  ### Docker or CLI

  ```bash
  docker exec -u node <your-n8n-container> sh -c "
    cd /home/node/.n8n/nodes
    npm install n8n-nodes-ngram
  "
  docker restart <your-n8n-container>
  ```

  ## Credentials

  1. Generate an API key at
     [ngram.com/app/settings/api-keys](https://www.ngram.com/app/settings/api-keys).
     The key starts with `ngs_`.
  2. In n8n, create a new **Ngram API** credential and paste the key.
  3. Leave **Base URL** as `https://www.ngram.com` for production. Override it
     only for staging or preview environments.

  Use the credential **Test** button to verify access. It calls
  `GET /api/v1/account`.

  ## Operations

  ### Ngram node

  | Operation | Required inputs | Returns |
  | --- | --- | --- |
  | `Create Video` | `prompt` | Job descriptor including `id` and status |
  | `Create From Text` | `prompt` | Job descriptor including `id` and status |
  | `Create From URL` | `website_url` | Job descriptor including `id` and status |
  | `Get Status` | `id` returned by a create operation | Current status and output URLs when ready |

  ### Trigger nodes

  | Trigger | Event subscribed | Payload |
  | --- | --- | --- |
  | `Ngram: On Video Ready` | `video.completed` | Video metadata and signed download URLs |
  | `Ngram: On Video Failed` | `video.failed` | Job id and failure reason |

  ## Trigger Behavior

  The trigger nodes register a webhook subscription with the Ngram API when
  activated and delete it when deactivated. On re-activation, they query
  `GET /api/v1/webhooks/subscriptions` and reuse any matching subscription
  instead of creating a duplicate.

  When a trigger is deleted, it also sweeps residual orphan subscriptions for the
  same `(event_type, target_url)` pair.

  ## HMAC Signature Verification

  Webhook payloads are HMAC-signed with `X-Ngram-Signature` and
  `X-Ngram-Timestamp` headers.

  This version of the node does not surface the signing secret for inline
  verification inside n8n. The secret is returned only at subscription creation
  time and is not exposed by the list endpoint. If you need signature
  verification, chain an `HTTP Request` or `Function` node downstream and validate
  the headers against your stored secret.

  ## Compatibility

  - n8n: `>= 1.82.0`
  - Node.js: `>= 24`

  ## Usage

  Ready-to-use workflow templates are included in [`templates`](./templates):

  - [`notify-on-video-ready.json`](./templates/notify-on-video-ready.json):
    post to Slack when any Ngram video finishes rendering.
  - [`create-video-from-google-sheets-row.json`](./templates/create-video-from-google-sheets-row.json):
    generate a video from new Google Sheets rows.
  - [`create-video-from-rss-item.json`](./templates/create-video-from-rss-item.json):
    turn new RSS feed items into videos.
  - [`email-on-video-ready.json`](./templates/email-on-video-ready.json):
    email a stakeholder when a video is ready.
  - [`save-video-to-airtable.json`](./templates/save-video-to-airtable.json):
    archive completed video metadata in Airtable.
  - [`sms-on-video-failed.json`](./templates/sms-on-video-failed.json):
    send an SMS alert when a render fails.
  - [`create-video-from-hubspot-contact.json`](./templates/create-video-from-hubspot-contact.json):
    create personalized intro videos for new HubSpot contacts.
  - [`changelog-video-from-github-merged-pr.json`](./templates/changelog-video-from-github-merged-pr.json):
    turn merged GitHub pull requests into changelog videos.

  Import a template with **Workflow menu > Import from file**, replace credential
  references and app-specific settings, then activate the workflow.

  ## What You Can Automate

  - Turn product launch rows, changelog entries, or campaign briefs into videos.
  - Create short videos from blog posts, RSS feed items, landing pages, or docs.
  - Generate on-brand updates for Slack, social scheduling, CRM, and marketing ops.
  - Poll render status or trigger downstream workflows when videos are ready.
  - Alert your team when a render fails so the workflow can recover quickly.

  The Slack notification template uses only the **On Video Ready** trigger.
  Ngram's public API does not currently expose a per-workflow correlation id, so a
  template that chains `Create Video` with the trigger would fire for every video
  on the account. For a correlated create-and-wait flow, chain `Create Video` with
  a `Wait` node followed by a `Get Status` loop.

  ## Resources

  - [Ngram documentation](https://www.ngram.com/docs)
  - [Ngram public API reference](https://www.ngram.com/docs/api)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n community node verification guidelines](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/verification-guidelines/)

  ## Contributing

  This package is source-mirrored from the Ngram monorepo, where primary
  development happens. Pull requests and issues filed here are welcome and will be
  reviewed for upstream inclusion.

  See [CONTRIBUTING.md](./CONTRIBUTING.md) for details.

  ## License

  [MIT](./LICENSE) - Copyright (c) 2026 Ngram.

ai_documentation_summary:
  {"purpose":"This node integrates n8n with Ngram’s public API to generate AI videos, check render status, and react to video completion or failure events via webhooks.","capabilities":["Create Video: start a video render job from a prompt","Get Status: look up the status of a video job by ID","Trigger on Video Ready: listen for video.completed webhook events","Trigger on Video Failed: listen for video.failed webhook events","Webhook subscription management on activation/deactivation"],"authentication":"API key required (Ngram API credential using a key that starts with ngs_).","commonUseCases":["Launching AI video generation jobs from an n8n workflow","Polling for render completion and retrieving output URLs","Triggering downstream automation when a video finishes or fails"],"limitations":["The node does not expose the webhook signing secret for inline signature verification in n8n","Ngram’s public API does not currently provide a per-workflow correlation ID, so create-and-trigger workflows can match all videos on the account rather than a specific job","n8n Cloud support is not available until the node is verified through the n8n Creator Portal"],"relatedNodes":["HTTP Request","Function","Wait","Webhook"]}


node_type: n8n-nodes-ngram.ngramTriggerFailed
package_name: n8n-nodes-ngram
display_name: Ngram: On Video Failed
description: Starts a workflow when an Ngram video fails.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ngram_eng
author_github_url: https://github.com/ngramdata/
npm_package_name: n8n-nodes-ngram
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.426Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-ngram

  ![n8n.io - Community Node](https://img.shields.io/badge/n8n-community-FF6D5A)
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-ngram.svg)](https://www.npmjs.com/package/n8n-nodes-ngram)
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)

  Official [Ngram](https://www.ngram.com) community node for [n8n](https://n8n.io).
  Generate polished AI videos from prompts, text, URLs, docs, and product content,
  then automate follow-up workflows when renders are ready or fail.

  This is an [n8n community node](https://docs.n8n.io/integrations/community-nodes/).
  It lets you use Ngram in your n8n workflows.

  ## Features

  - **Action - Create Video**: start an Ngram video render with optional brand context.
  - **Action - Create From Text**: turn a prompt or source text into a video.
  - **Action - Create From URL**: research a page, article, product page, or doc and create a video.
  - **Action - Get Status**: check a submitted job by id.
  - **Trigger - On Video Ready**: receive `video.completed` webhook events.
  - **Trigger - On Video Failed**: receive `video.failed` webhook events.

  ## Installation

  Follow the [n8n verified community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation-and-management/install-verified-community-nodes/).

  ### n8n Cloud

  1. Open the **nodes panel** from the canvas.
  2. Search for **Ngram**.
  3. Select the verified community node and install it for your instance.
  4. Add your **Ngram API** credential before running workflows.

  ### Self-hosted n8n

  1. Open **Settings > Community nodes > Install**.
  2. Enter `n8n-nodes-ngram` and confirm.
  3. Restart n8n. The Ngram nodes appear in the node picker.

  ### Docker or CLI

  ```bash
  docker exec -u node <your-n8n-container> sh -c "
    cd /home/node/.n8n/nodes
    npm install n8n-nodes-ngram
  "
  docker restart <your-n8n-container>
  ```

  ## Credentials

  1. Generate an API key at
     [ngram.com/app/settings/api-keys](https://www.ngram.com/app/settings/api-keys).
     The key starts with `ngs_`.
  2. In n8n, create a new **Ngram API** credential and paste the key.
  3. Leave **Base URL** as `https://www.ngram.com` for production. Override it
     only for staging or preview environments.

  Use the credential **Test** button to verify access. It calls
  `GET /api/v1/account`.

  ## Operations

  ### Ngram node

  | Operation | Required inputs | Returns |
  | --- | --- | --- |
  | `Create Video` | `prompt` | Job descriptor including `id` and status |
  | `Create From Text` | `prompt` | Job descriptor including `id` and status |
  | `Create From URL` | `website_url` | Job descriptor including `id` and status |
  | `Get Status` | `id` returned by a create operation | Current status and output URLs when ready |

  ### Trigger nodes

  | Trigger | Event subscribed | Payload |
  | --- | --- | --- |
  | `Ngram: On Video Ready` | `video.completed` | Video metadata and signed download URLs |
  | `Ngram: On Video Failed` | `video.failed` | Job id and failure reason |

  ## Trigger Behavior

  The trigger nodes register a webhook subscription with the Ngram API when
  activated and delete it when deactivated. On re-activation, they query
  `GET /api/v1/webhooks/subscriptions` and reuse any matching subscription
  instead of creating a duplicate.

  When a trigger is deleted, it also sweeps residual orphan subscriptions for the
  same `(event_type, target_url)` pair.

  ## HMAC Signature Verification

  Webhook payloads are HMAC-signed with `X-Ngram-Signature` and
  `X-Ngram-Timestamp` headers.

  This version of the node does not surface the signing secret for inline
  verification inside n8n. The secret is returned only at subscription creation
  time and is not exposed by the list endpoint. If you need signature
  verification, chain an `HTTP Request` or `Function` node downstream and validate
  the headers against your stored secret.

  ## Compatibility

  - n8n: `>= 1.82.0`
  - Node.js: `>= 24`

  ## Usage

  Ready-to-use workflow templates are included in [`templates`](./templates):

  - [`notify-on-video-ready.json`](./templates/notify-on-video-ready.json):
    post to Slack when any Ngram video finishes rendering.
  - [`create-video-from-google-sheets-row.json`](./templates/create-video-from-google-sheets-row.json):
    generate a video from new Google Sheets rows.
  - [`create-video-from-rss-item.json`](./templates/create-video-from-rss-item.json):
    turn new RSS feed items into videos.
  - [`email-on-video-ready.json`](./templates/email-on-video-ready.json):
    email a stakeholder when a video is ready.
  - [`save-video-to-airtable.json`](./templates/save-video-to-airtable.json):
    archive completed video metadata in Airtable.
  - [`sms-on-video-failed.json`](./templates/sms-on-video-failed.json):
    send an SMS alert when a render fails.
  - [`create-video-from-hubspot-contact.json`](./templates/create-video-from-hubspot-contact.json):
    create personalized intro videos for new HubSpot contacts.
  - [`changelog-video-from-github-merged-pr.json`](./templates/changelog-video-from-github-merged-pr.json):
    turn merged GitHub pull requests into changelog videos.

  Import a template with **Workflow menu > Import from file**, replace credential
  references and app-specific settings, then activate the workflow.

  ## What You Can Automate

  - Turn product launch rows, changelog entries, or campaign briefs into videos.
  - Create short videos from blog posts, RSS feed items, landing pages, or docs.
  - Generate on-brand updates for Slack, social scheduling, CRM, and marketing ops.
  - Poll render status or trigger downstream workflows when videos are ready.
  - Alert your team when a render fails so the workflow can recover quickly.

  The Slack notification template uses only the **On Video Ready** trigger.
  Ngram's public API does not currently expose a per-workflow correlation id, so a
  template that chains `Create Video` with the trigger would fire for every video
  on the account. For a correlated create-and-wait flow, chain `Create Video` with
  a `Wait` node followed by a `Get Status` loop.

  ## Resources

  - [Ngram documentation](https://www.ngram.com/docs)
  - [Ngram public API reference](https://www.ngram.com/docs/api)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n community node verification guidelines](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/verification-guidelines/)

  ## Contributing

  This package is source-mirrored from the Ngram monorepo, where primary
  development happens. Pull requests and issues filed here are welcome and will be
  reviewed for upstream inclusion.

  See [CONTRIBUTING.md](./CONTRIBUTING.md) for details.

  ## License

  [MIT](./LICENSE) - Copyright (c) 2026 Ngram.

ai_documentation_summary:
  {"purpose":"This n8n community node integrates Ngram with workflows to create AI videos, check rendering status, and react to video completion or failure events. The specific node Ngram: On Video Failed starts a workflow when an Ngram video render fails.","capabilities":["Create Video action to start an Ngram video render from a workflow","Get Status action to check a submitted job by ID","On Video Ready trigger for video.completed webhook events","On Video Failed trigger for video.failed webhook events","Webhook subscription management on activation and deactivation","Reuses existing matching webhook subscriptions on re-activation"],"authentication":"API key required via Ngram API credential (key starts with ngs_); Base URL defaults to https://www.ngram.com","commonUseCases":["Triggering a workflow when an Ngram video fails","Starting video generation from an n8n workflow","Polling a render job for completion status","Handling webhook-driven automations for video completion or failure"],"limitations":["Inline HMAC signature verification is not supported in the node; verification must be done in a downstream HTTP Request or Function node","A correlated create-and-wait trigger flow is not supported because the public API does not expose a per-workflow correlation ID","n8n Cloud support requires node verification through the n8n Creator Portal"],"relatedNodes":["HTTP Request","Function","Wait"]}


node_type: n8n-nodes-ngram.ngramTriggerCompleted
package_name: n8n-nodes-ngram
display_name: Ngram: On Video Ready
description: Starts a workflow when an Ngram video finishes rendering.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ngram_eng
author_github_url: https://github.com/ngramdata/
npm_package_name: n8n-nodes-ngram
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.427Z
ai_summary_generated_at: 2026-06-26 10:29:17
npm_readme:
  # n8n-nodes-ngram

  ![n8n.io - Community Node](https://img.shields.io/badge/n8n-community-FF6D5A)
  [![npm version](https://img.shields.io/npm/v/n8n-nodes-ngram.svg)](https://www.npmjs.com/package/n8n-nodes-ngram)
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)

  Official [Ngram](https://www.ngram.com) community node for [n8n](https://n8n.io).
  Generate polished AI videos from prompts, text, URLs, docs, and product content,
  then automate follow-up workflows when renders are ready or fail.

  This is an [n8n community node](https://docs.n8n.io/integrations/community-nodes/).
  It lets you use Ngram in your n8n workflows.

  ## Features

  - **Action - Create Video**: start an Ngram video render with optional brand context.
  - **Action - Create From Text**: turn a prompt or source text into a video.
  - **Action - Create From URL**: research a page, article, product page, or doc and create a video.
  - **Action - Get Status**: check a submitted job by id.
  - **Trigger - On Video Ready**: receive `video.completed` webhook events.
  - **Trigger - On Video Failed**: receive `video.failed` webhook events.

  ## Installation

  Follow the [n8n verified community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation-and-management/install-verified-community-nodes/).

  ### n8n Cloud

  1. Open the **nodes panel** from the canvas.
  2. Search for **Ngram**.
  3. Select the verified community node and install it for your instance.
  4. Add your **Ngram API** credential before running workflows.

  ### Self-hosted n8n

  1. Open **Settings > Community nodes > Install**.
  2. Enter `n8n-nodes-ngram` and confirm.
  3. Restart n8n. The Ngram nodes appear in the node picker.

  ### Docker or CLI

  ```bash
  docker exec -u node <your-n8n-container> sh -c "
    cd /home/node/.n8n/nodes
    npm install n8n-nodes-ngram
  "
  docker restart <your-n8n-container>
  ```

  ## Credentials

  1. Generate an API key at
     [ngram.com/app/settings/api-keys](https://www.ngram.com/app/settings/api-keys).
     The key starts with `ngs_`.
  2. In n8n, create a new **Ngram API** credential and paste the key.
  3. Leave **Base URL** as `https://www.ngram.com` for production. Override it
     only for staging or preview environments.

  Use the credential **Test** button to verify access. It calls
  `GET /api/v1/account`.

  ## Operations

  ### Ngram node

  | Operation | Required inputs | Returns |
  | --- | --- | --- |
  | `Create Video` | `prompt` | Job descriptor including `id` and status |
  | `Create From Text` | `prompt` | Job descriptor including `id` and status |
  | `Create From URL` | `website_url` | Job descriptor including `id` and status |
  | `Get Status` | `id` returned by a create operation | Current status and output URLs when ready |

  ### Trigger nodes

  | Trigger | Event subscribed | Payload |
  | --- | --- | --- |
  | `Ngram: On Video Ready` | `video.completed` | Video metadata and signed download URLs |
  | `Ngram: On Video Failed` | `video.failed` | Job id and failure reason |

  ## Trigger Behavior

  The trigger nodes register a webhook subscription with the Ngram API when
  activated and delete it when deactivated. On re-activation, they query
  `GET /api/v1/webhooks/subscriptions` and reuse any matching subscription
  instead of creating a duplicate.

  When a trigger is deleted, it also sweeps residual orphan subscriptions for the
  same `(event_type, target_url)` pair.

  ## HMAC Signature Verification

  Webhook payloads are HMAC-signed with `X-Ngram-Signature` and
  `X-Ngram-Timestamp` headers.

  This version of the node does not surface the signing secret for inline
  verification inside n8n. The secret is returned only at subscription creation
  time and is not exposed by the list endpoint. If you need signature
  verification, chain an `HTTP Request` or `Function` node downstream and validate
  the headers against your stored secret.

  ## Compatibility

  - n8n: `>= 1.82.0`
  - Node.js: `>= 24`

  ## Usage

  Ready-to-use workflow templates are included in [`templates`](./templates):

  - [`notify-on-video-ready.json`](./templates/notify-on-video-ready.json):
    post to Slack when any Ngram video finishes rendering.
  - [`create-video-from-google-sheets-row.json`](./templates/create-video-from-google-sheets-row.json):
    generate a video from new Google Sheets rows.
  - [`create-video-from-rss-item.json`](./templates/create-video-from-rss-item.json):
    turn new RSS feed items into videos.
  - [`email-on-video-ready.json`](./templates/email-on-video-ready.json):
    email a stakeholder when a video is ready.
  - [`save-video-to-airtable.json`](./templates/save-video-to-airtable.json):
    archive completed video metadata in Airtable.
  - [`sms-on-video-failed.json`](./templates/sms-on-video-failed.json):
    send an SMS alert when a render fails.
  - [`create-video-from-hubspot-contact.json`](./templates/create-video-from-hubspot-contact.json):
    create personalized intro videos for new HubSpot contacts.
  - [`changelog-video-from-github-merged-pr.json`](./templates/changelog-video-from-github-merged-pr.json):
    turn merged GitHub pull requests into changelog videos.

  Import a template with **Workflow menu > Import from file**, replace credential
  references and app-specific settings, then activate the workflow.

  ## What You Can Automate

  - Turn product launch rows, changelog entries, or campaign briefs into videos.
  - Create short videos from blog posts, RSS feed items, landing pages, or docs.
  - Generate on-brand updates for Slack, social scheduling, CRM, and marketing ops.
  - Poll render status or trigger downstream workflows when videos are ready.
  - Alert your team when a render fails so the workflow can recover quickly.

  The Slack notification template uses only the **On Video Ready** trigger.
  Ngram's public API does not currently expose a per-workflow correlation id, so a
  template that chains `Create Video` with the trigger would fire for every video
  on the account. For a correlated create-and-wait flow, chain `Create Video` with
  a `Wait` node followed by a `Get Status` loop.

  ## Resources

  - [Ngram documentation](https://www.ngram.com/docs)
  - [Ngram public API reference](https://www.ngram.com/docs/api)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n community node verification guidelines](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/verification-guidelines/)

  ## Contributing

  This package is source-mirrored from the Ngram monorepo, where primary
  development happens. Pull requests and issues filed here are welcome and will be
  reviewed for upstream inclusion.

  See [CONTRIBUTING.md](./CONTRIBUTING.md) for details.

  ## License

  [MIT](./LICENSE) - Copyright (c) 2026 Ngram.

ai_documentation_summary:
  {"purpose":"This node integrates Ngram with n8n to create AI videos, check rendering status, and trigger workflows when videos finish or fail. The 'On Video Ready' trigger starts a workflow when Ngram sends a video completion event.","capabilities":["Create Video action to start a video render from a prompt","Get Status action to query a submitted job by id","On Video Ready trigger for video.completed webhook events","On Video Failed trigger for video.failed webhook events","Registers and removes webhook subscriptions automatically when triggers are activated or deactivated","Reuses existing matching webhook subscriptions on reactivation to avoid duplicates"],"authentication":"API key required (Ngram API credential); generate an API key from Ngram and paste it into n8n, with Base URL set to https://www.ngram.com for production","commonUseCases":["Start an AI video render from an n8n workflow","Poll or check the status of a video rendering job","Trigger downstream automation when a video finishes rendering","Handle workflow actions when a video render fails"],"limitations":["Inline webhook signature verification is not supported in this node; HMAC validation must be done downstream using HTTP Request or Function nodes","The Ngram public API does not expose a per-workflow correlation id, so create-and-trigger flows may fire for every video on the account","n8n Cloud support is only available after verification through the n8n Creator Portal"],"relatedNodes":["HTTP Request","Function","Wait","Slack"]}


node_type: n8n-nodes-efficycrm.efficyTrigger
package_name: n8n-nodes-efficycrm
display_name: efficy Enterprise CRM Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: alain-efficy
author_github_url: https://github.com/efficy-sa/
npm_package_name: n8n-nodes-efficycrm
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.428Z
ai_summary_generated_at: 2026-06-26 10:29:17
description:
  Starts the workflow when efficy Enterprise fires a webhook event (record created, updated or deleted)

npm_readme:
  # n8n-nodes-efficycrm

  This package provides two [n8n](https://n8n.io/) community nodes for [efficy Enterprise CRM](https://www.efficy.com):

  - **efficy Enterprise CRM Trigger** — trigger node that starts a workflow when efficy fires a webhook
  - **efficy Enterprise CRM** — action node that calls the efficy JSON API

  ## Requirements

  - n8n version **2.0.0** or later
  - efficy Enterprise CRM **12.2** or later

  ## Nodes

  ### efficy Enterprise CRM Trigger

  Starts a workflow when efficy fires a webhook event (entity created, updated, or deleted).

  **Setup:**
  1. Activate the workflow in n8n — a unique webhook URL is generated.
  2. In efficy Designer → Content Management → WebHooks, click **+** (top right) and paste the URL as Target URL.

  **Output fields:** `database`, `version`, `table`, `key`, `operation`, `user`, `subject`, `fields`, `date`

  **Filter:** Recommended to restrict to the relevant Create, Update or Delete events for your workflow to ensure optimal performance.

  **Realtime:** When disabled, the webhook call will be made asynchronously after some time configurable by the CRM administrator in the relevant service and could be minutes later. When the workflow is not time critical, this is the recommended option.

  When enabled, the webhook call will be made immediately while the CRM event occurs in the backend, which is only recommended for time sensitive workflows, or workflows that modify the data of the entity itself that triggered the original event. 

  ### efficy Enterprise CRM

  Calls the efficy Enterprise JSON RPC API (`POST /json`).

  Each resource includes a **Custom API Call** operation to write a raw JSON RPC request body when none of the built-in operations cover your use case.

  **Operations:**

  *Entity*
  - **Consult** — read a single entity by key
  - **Create** — create a new entity
  - **Update** — update fields on an existing entity
  - **Delete** — delete one or more entities

  *Relation*
  - **Add Link** — add a relation between two entities
  - **Delete Link** — remove a relation between two entities
  - **Insert Detail** — add a detail relation in an edit context
  - **Update Detail** — update fields of a detail relation
  - **Delete Detail** — remove a specific detail relation
  - **Delete All Relations** — remove all detail relations of a given entity

  *Query*
  - **Run Query** — execute a saved query by key
  - **Consult Many Entities** — find entities matching exact field values (`consultmanyex`)

  *Search*
  - **Fast Search** — index-based fast search on the entity grid
  - **Full Text Search** — full-text search across all fields
  - **Elastic Search** — Elasticsearch-powered full-text search

  *Tools*
  - **Get Lookup Data** — return all values for a lookup list field
  - **Get Lookup Key From Value** — resolve a lookup label to its numeric key
  - **Get Lookup Value From Key** — resolve a lookup key to its text label
  - **Get Setting** — read an efficy server setting by name
  - **Get Current User Code** — return the authenticated user's user code
  - **Get Current User Full Name** — return the authenticated user's full name
  - **Send Notification** — send a notification to efficy users or groups
  - **Finalize Workflow** — use as the last node in workflows that have Server Side Cache enabled

  ## Credentials

  ### efficy Enterprise API

  | Field | Description |
  |---|---|
  | Server URL | Base URL of your efficy server (e.g. `https://mycompany.efficy.com`) |
  | API Key | efficy API key with access to the `/json` endpoint |
  | Language | Language code sent as `X-Efficy-Lang` header (affects translated field values) |
  | Server Side Cache | Reuse the same server-side cache across all nodes in a workflow execution. When enabled, finish your workflow with the Tool → Finalize Workflow operation. |

  **How to create an API key in efficy:**
  1. Go to Designer → Security → API Keys → New
  2. Set "Whitelist API" to include `json`
  3. Copy the generated key into the n8n credential

  Authentication is performed via the `X-Efficy-Apikey` HTTP header.

  ## License

  MIT

  ## Resources

  - [efficy JSON RPC API function reference](https://help.efficy.io/edn/rpcrequests)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"Triggers workflows when efficy Enterprise CRM fires webhook events such as record creation, updates, or deletions. The package also includes an action node for calling the efficy JSON RPC API to manage, query, search, and retrieve CRM data.","capabilities":["Webhook trigger for entity created, updated, and deleted events","Entity operations: consult, create, update, delete","Relation operations: add/delete links and insert/update/delete detail relations","Query operations: run saved queries and consult many entities","Search operations: fast search, full text search, elastic search","Utility operations: lookup data/value/key, get setting, get current user info, send notification, finalize workflow","Custom API Call for raw JSON RPC requests","Optional realtime or asynchronous webhook delivery"],"authentication":"API key required via the efficy Enterprise API credential, sent in the X-Efficy-Apikey HTTP header","commonUseCases":["Start workflows when CRM records are created, updated, or deleted","Synchronize or transform efficy entities from n8n","Query and search CRM records from automated workflows","Send notifications or resolve lookup values during workflow automation","Use server-side cache and finalize workflows when needed"],"limitations":["Requires n8n version 2.0.0 or later and efficy Enterprise CRM 12.2 or later","Webhook trigger output is limited to the fields database, version, table, key, operation, user, subject, fields, and date","Server Side Cache workflows must end with the Finalize Workflow operation","Custom API Call is needed when built-in operations do not cover the use case"],"relatedNodes":["efficy Enterprise CRM"]}


node_type: n8n-nodes-efficycrm.efficy
package_name: n8n-nodes-efficycrm
display_name: efficy Enterprise CRM
description: Calls the efficy Enterprise JSON API API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: alain-efficy
author_github_url: https://github.com/efficy-sa/
npm_package_name: n8n-nodes-efficycrm
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.429Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "entity",
      "options": [
        {
          "name": "Entity",
          "value": "entity"
        },
        {
          "name": "Relation",
          "value": "relation"
        },
        {
          "name": "Query",
          "value": "query"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Tool",
          "value": "tool"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "consultEntity",
      "options": [
        {
          "name": "Consult",
          "value": "consultEntity",
          "action": "Consult an entity",
          "description": "Read a single entity by key (API: consult)"
        },
        {
          "name": "Create",
          "value": "createEntity",
          "action": "Create an entity",
          "description": "Create a new entity (API: edit key=0 + update)"
        },
        {
          "name": "Delete",
          "value": "deleteEntity",
          "action": "Delete an entity",
          "description": "Delete one or more entities (API: delete)"
        },
        {
          "name": "Update",
          "value": "updateEntity",
          "action": "Update an entity",
          "description": "Update fields on an existing entity (API: edit + update)"
        },
        {
          "name": "Custom API Call",
          "value": "custom",
          "action": "Execute a custom API call",
          "description": "Write a raw JSON RPC request body (API: any)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "consultManyEntities",
      "options": [
        {
          "name": "Run Query",
          "value": "runQuery",
          "action": "Run a query",
          "description": "Execute a saved query by K_QUERY or K_MASTER + K_DETAIL (API: query)"
        },
        {
          "name": "Consult Many Entities",
          "value": "consultManyEntities",
          "action": "Consult many entities",
          "description": "Find records matching exact field values (API: consultmanyex)"
        },
        {
          "name": "Custom API Call",
          "value": "custom",
          "action": "Execute a custom API call",
          "description": "Write a raw JSON RPC request body (API: any)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "query"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchFast",
      "options": [
        {
          "name": "Fast Search",
          "value": "searchFast",
          "action": "Fast search",
          "description": "Index-based fast search on the entity grid (API: search SEARCHFAST)"
        },
        {
          "name": "Full Text Search",
          "value": "searchFull",
          "action": "Full text search",
          "description": "Full-text search across all fields (API: search SEARCHFULL)"
        },
        {
          "name": "Elastic Search",
          "value": "searchElastic",
          "action": "Elastic search",
          "description": "Elasticsearch-powered full-text search (API: search SEARCHELASTIC)"
        },
        {
          "name": "Custom API Call",
          "value": "custom",
          "action": "Execute a custom API call",
          "description": "Write a raw JSON RPC request body (API: any)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addLink",
      "options": [
        {
          "name": "Add Link",
          "value": "addLink",
          "action": "Add a link",
          "description": "Add a relation between two records (API: addlink)"
        },
        {
          "name": "Delete All Relations",
          "value": "clearDetail",
          "action": "Delete all relations",
          "description": "Remove all detail relations of a given entity in an edit context (API: edit + clearDetail)"
        },
        {
          "name": "Delete Detail",
          "value": "deleteDetail",
          "action": "Delete a detail",
          "description": "Remove a specific detail relation in an edit context (API: edit + deleteDetail)"
        },
        {
          "name": "Delete Link",
          "value": "deleteLink",
          "action": "Delete a link",
          "description": "Remove a relation between two records (API: deletelink)"
        },
        {
          "name": "Insert Detail",
          "value": "insertDetail",
          "action": "Insert a detail",
          "description": "Add a detail relation in an edit context (API: edit + insertDetail)"
        },
        {
          "name": "Update Detail",
          "value": "updateDetail",
          "action": "Update a detail",
          "description": "Update fields of a detail relation in an edit context (API: edit + updateDetail)"
        },
        {
          "name": "Custom API Call",
          "value": "custom",
          "action": "Execute a custom API call",
          "description": "Write a raw JSON RPC request body (API: any)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "relation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLookupData",
      "options": [
        {
          "name": "Get Current User Code",
          "value": "getCurrentUserCode",
          "action": "Get current user code",
          "description": "Return the user code of the authenticated user (API: currentusername)"
        },
        {
          "name": "Get Current User Full Name",
          "value": "getCurrentUserFullName",
          "action": "Get current user full name",
          "description": "Return the full name of the authenticated user (API: currentuserfullname)"
        },
        {
          "name": "Get Lookup Data",
          "value": "getLookupData",
          "action": "Get lookup data",
          "description": "Return the list of lookup values for a field (API: getlookupdata)"
        },
        {
          "name": "Get Lookup Key From Value",
          "value": "getLookupKeyFromValue2",
          "action": "Get lookup key from value",
          "description": "Resolve a lookup display value to its key integer (API: getlookupkeyfromvalue2)"
        },
        {
          "name": "Get Lookup Value From Key",
          "value": "getLookupValueFromKey2",
          "action": "Get lookup value from key",
          "description": "Resolve a lookup key integer to its display value (API: getlookupvaluefromkey2)"
        },
        {
          "name": "Get Setting",
          "value": "getSetting",
          "action": "Get setting",
          "description": "Read an efficy server setting by name (API: getsetting)"
        },
        {
          "name": "Send Notification",
          "value": "sendNotification",
          "action": "Send a notification",
          "description": "Send a notification to efficy users or groups (API: sendnotification)"
        },
        {
          "name": "Finalize Workflow",
          "value": "finalizeWorkflow",
          "action": "Finalize workflow",
          "description": "Use this as the last node in workflows that have Server Side Cache enabled"
        },
        {
          "name": "Custom API Call",
          "value": "custom",
          "action": "Execute a custom API call",
          "description": "Write a raw JSON RPC request body (API: any)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tool"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Consult",
      "value": "consultEntity",
      "action": "Consult an entity",
      "description": "Read a single entity by key (API: consult)",
      "resource": "entity"
    },
    {
      "name": "Create",
      "value": "createEntity",
      "action": "Create an entity",
      "description": "Create a new entity (API: edit key=0 + update)",
      "resource": "entity"
    },
    {
      "name": "Delete",
      "value": "deleteEntity",
      "action": "Delete an entity",
      "description": "Delete one or more entities (API: delete)",
      "resource": "entity"
    },
    {
      "name": "Update",
      "value": "updateEntity",
      "action": "Update an entity",
      "description": "Update fields on an existing entity (API: edit + update)",
      "resource": "entity"
    },
    {
      "name": "Custom API Call",
      "value": "custom",
      "action": "Execute a custom API call",
      "description": "Write a raw JSON RPC request body (API: any)",
      "resource": "entity"
    },
    {
      "name": "Run Query",
      "value": "runQuery",
      "action": "Run a query",
      "description": "Execute a saved query by K_QUERY or K_MASTER + K_DETAIL (API: query)",
      "resource": "query"
    },
    {
      "name": "Consult Many Entities",
      "value": "consultManyEntities",
      "action": "Consult many entities",
      "description": "Find records matching exact field values (API: consultmanyex)",
      "resource": "query"
    },
    {
      "name": "Custom API Call",
      "value": "custom",
      "action": "Execute a custom API call",
      "description": "Write a raw JSON RPC request body (API: any)",
      "resource": "query"
    },
    {
      "name": "Fast Search",
      "value": "searchFast",
      "action": "Fast search",
      "description": "Index-based fast search on the entity grid (API: search SEARCHFAST)",
      "resource": "search"
    },
    {
      "name": "Full Text Search",
      "value": "searchFull",
      "action": "Full text search",
      "description": "Full-text search across all fields (API: search SEARCHFULL)",
      "resource": "search"
    },
    {
      "name": "Elastic Search",
      "value": "searchElastic",
      "action": "Elastic search",
      "description": "Elasticsearch-powered full-text search (API: search SEARCHELASTIC)",
      "resource": "search"
    },
    {
      "name": "Custom API Call",
      "value": "custom",
      "action": "Execute a custom API call",
      "description": "Write a raw JSON RPC request body (API: any)",
      "resource": "search"
    },
    {
      "name": "Add Link",
      "value": "addLink",
      "action": "Add a link",
      "description": "Add a relation between two records (API: addlink)",
      "resource": "relation"
    },
    {
      "name": "Delete All Relations",
      "value": "clearDetail",
      "action": "Delete all relations",
      "description": "Remove all detail relations of a given entity in an edit context (API: edit + clearDetail)",
      "resource": "relation"
    },
    {
      "name": "Delete Detail",
      "value": "deleteDetail",
      "action": "Delete a detail",
      "description": "Remove a specific detail relation in an edit context (API: edit + deleteDetail)",
      "resource": "relation"
    },
    {
      "name": "Delete Link",
      "value": "deleteLink",
      "action": "Delete a link",
      "description": "Remove a relation between two records (API: deletelink)",
      "resource": "relation"
    },
    {
      "name": "Insert Detail",
      "value": "insertDetail",
      "action": "Insert a detail",
      "description": "Add a detail relation in an edit context (API: edit + insertDetail)",
      "resource": "relation"
    },
    {
      "name": "Update Detail",
      "value": "updateDetail",
      "action": "Update a detail",
      "description": "Update fields of a detail relation in an edit context (API: edit + updateDetail)",
      "resource": "relation"
    },
    {
      "name": "Custom API Call",
      "value": "custom",
      "action": "Execute a custom API call",
      "description": "Write a raw JSON RPC request body (API: any)",
      "resource": "relation"
    },
    {
      "name": "Get Current User Code",
      "value": "getCurrentUserCode",
      "action": "Get current user code",
      "description": "Return the user code of the authenticated user (API: currentusername)",
      "resource": "tool"
    },
    {
      "name": "Get Current User Full Name",
      "value": "getCurrentUserFullName",
      "action": "Get current user full name",
      "description": "Return the full name of the authenticated user (API: currentuserfullname)",
      "resource": "tool"
    },
    {
      "name": "Get Lookup Data",
      "value": "getLookupData",
      "action": "Get lookup data",
      "description": "Return the list of lookup values for a field (API: getlookupdata)",
      "resource": "tool"
    },
    {
      "name": "Get Lookup Key From Value",
      "value": "getLookupKeyFromValue2",
      "action": "Get lookup key from value",
      "description": "Resolve a lookup display value to its key integer (API: getlookupkeyfromvalue2)",
      "resource": "tool"
    },
    {
      "name": "Get Lookup Value From Key",
      "value": "getLookupValueFromKey2",
      "action": "Get lookup value from key",
      "description": "Resolve a lookup key integer to its display value (API: getlookupvaluefromkey2)",
      "resource": "tool"
    },
    {
      "name": "Get Setting",
      "value": "getSetting",
      "action": "Get setting",
      "description": "Read an efficy server setting by name (API: getsetting)",
      "resource": "tool"
    },
    {
      "name": "Send Notification",
      "value": "sendNotification",
      "action": "Send a notification",
      "description": "Send a notification to efficy users or groups (API: sendnotification)",
      "resource": "tool"
    },
    {
      "name": "Finalize Workflow",
      "value": "finalizeWorkflow",
      "action": "Finalize workflow",
      "description": "Use this as the last node in workflows that have Server Side Cache enabled",
      "resource": "tool"
    },
    {
      "name": "Custom API Call",
      "value": "custom",
      "action": "Execute a custom API call",
      "description": "Write a raw JSON RPC request body (API: any)",
      "resource": "tool"
    }
  ]

npm_readme:
  # n8n-nodes-efficycrm

  This package provides two [n8n](https://n8n.io/) community nodes for [efficy Enterprise CRM](https://www.efficy.com):

  - **efficy Enterprise CRM Trigger** — trigger node that starts a workflow when efficy fires a webhook
  - **efficy Enterprise CRM** — action node that calls the efficy JSON API

  ## Requirements

  - n8n version **2.0.0** or later
  - efficy Enterprise CRM **12.2** or later

  ## Nodes

  ### efficy Enterprise CRM Trigger

  Starts a workflow when efficy fires a webhook event (entity created, updated, or deleted).

  **Setup:**
  1. Activate the workflow in n8n — a unique webhook URL is generated.
  2. In efficy Designer → Content Management → WebHooks, click **+** (top right) and paste the URL as Target URL.

  **Output fields:** `database`, `version`, `table`, `key`, `operation`, `user`, `subject`, `fields`, `date`

  **Filter:** Recommended to restrict to the relevant Create, Update or Delete events for your workflow to ensure optimal performance.

  **Realtime:** When disabled, the webhook call will be made asynchronously after some time configurable by the CRM administrator in the relevant service and could be minutes later. When the workflow is not time critical, this is the recommended option.

  When enabled, the webhook call will be made immediately while the CRM event occurs in the backend, which is only recommended for time sensitive workflows, or workflows that modify the data of the entity itself that triggered the original event. 

  ### efficy Enterprise CRM

  Calls the efficy Enterprise JSON RPC API (`POST /json`).

  Each resource includes a **Custom API Call** operation to write a raw JSON RPC request body when none of the built-in operations cover your use case.

  **Operations:**

  *Entity*
  - **Consult** — read a single entity by key
  - **Create** — create a new entity
  - **Update** — update fields on an existing entity
  - **Delete** — delete one or more entities

  *Relation*
  - **Add Link** — add a relation between two entities
  - **Delete Link** — remove a relation between two entities
  - **Insert Detail** — add a detail relation in an edit context
  - **Update Detail** — update fields of a detail relation
  - **Delete Detail** — remove a specific detail relation
  - **Delete All Relations** — remove all detail relations of a given entity

  *Query*
  - **Run Query** — execute a saved query by key
  - **Consult Many Entities** — find entities matching exact field values (`consultmanyex`)

  *Search*
  - **Fast Search** — index-based fast search on the entity grid
  - **Full Text Search** — full-text search across all fields
  - **Elastic Search** — Elasticsearch-powered full-text search

  *Tools*
  - **Get Lookup Data** — return all values for a lookup list field
  - **Get Lookup Key From Value** — resolve a lookup label to its numeric key
  - **Get Lookup Value From Key** — resolve a lookup key to its text label
  - **Get Setting** — read an efficy server setting by name
  - **Get Current User Code** — return the authenticated user's user code
  - **Get Current User Full Name** — return the authenticated user's full name
  - **Send Notification** — send a notification to efficy users or groups
  - **Finalize Workflow** — use as the last node in workflows that have Server Side Cache enabled

  ## Credentials

  ### efficy Enterprise API

  | Field | Description |
  |---|---|
  | Server URL | Base URL of your efficy server (e.g. `https://mycompany.efficy.com`) |
  | API Key | efficy API key with access to the `/json` endpoint |
  | Language | Language code sent as `X-Efficy-Lang` header (affects translated field values) |
  | Server Side Cache | Reuse the same server-side cache across all nodes in a workflow execution. When enabled, finish your workflow with the Tool → Finalize Workflow operation. |

  **How to create an API key in efficy:**
  1. Go to Designer → Security → API Keys → New
  2. Set "Whitelist API" to include `json`
  3. Copy the generated key into the n8n credential

  Authentication is performed via the `X-Efficy-Apikey` HTTP header.

  ## License

  MIT

  ## Resources

  - [efficy JSON RPC API function reference](https://help.efficy.io/edn/rpcrequests)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"Provides n8n community nodes for efficy Enterprise CRM, including a trigger for webhook events and an action node for calling the efficy JSON RPC API. The action node supports common CRM operations such as entity management, relations, searches, queries, and utility tools.","capabilities":["Trigger workflows on efficy webhook events for entity create, update, or delete","Consult, create, update, and delete entities","Add, remove, insert, update, and clean up entity relations/details","Run saved queries and consult many entities by exact field values","Perform fast search, full-text search, and Elasticsearch-based search","Read lookup values and settings, resolve lookup keys/values, and get current user info","Send notifications to efficy users or groups","Perform custom API calls with raw JSON RPC request bodies","Finalize workflows when Server Side Cache is enabled"],"authentication":"API key required; authenticate with the efficy API key sent in the X-Efficy-Apikey header, plus the efficy server URL and optional language/server-side cache settings.","commonUseCases":["Syncing CRM record changes into automated n8n workflows via webhook triggers","Creating, updating, or deleting efficy CRM entities from n8n","Looking up CRM data, running saved queries, and searching records from workflows","Sending notifications or performing maintenance actions against efficy data"],"limitations":["Requires n8n 2.0.0 or later","Requires efficy Enterprise CRM 12.2 or later","The action node is limited to built-in operations unless using Custom API Call for unsupported JSON RPC requests","Realtime webhook mode is only recommended for time-sensitive workflows because it executes immediately while the CRM event occurs"],"relatedNodes":["efficy Enterprise CRM Trigger"]}


node_type: n8n-nodes-socialfetch.socialFetch
package_name: n8n-nodes-socialfetch
display_name: Social Fetch
description: Fetch social media and web data via the Social Fetch API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: lukem121
author_github_url: https://github.com/social-freak-ltd/
npm_package_name: n8n-nodes-socialfetch
npm_version: 0.17.0
community_fetched_at: 2026-07-14T14:40:34.430Z
ai_summary_generated_at: 2026-06-26 10:29:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tiktok",
      "options": [
        {
          "name": "TikTok",
          "value": "tiktok"
        },
        {
          "name": "Twitter",
          "value": "twitter"
        },
        {
          "name": "Telegram",
          "value": "telegram"
        },
        {
          "name": "Facebook",
          "value": "facebook"
        },
        {
          "name": "Instagram",
          "value": "instagram"
        },
        {
          "name": "Threads",
          "value": "threads"
        },
        {
          "name": "LinkedIn",
          "value": "linkedin"
        },
        {
          "name": "Reddit",
          "value": "reddit"
        },
        {
          "name": "Spotify",
          "value": "spotify"
        },
        {
          "name": "YouTube",
          "value": "youtube"
        },
        {
          "name": "Web",
          "value": "web"
        },
        {
          "name": "Account",
          "value": "auth"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "tiktok.profile.get",
      "options": [
        {
          "name": "Profile",
          "value": "tiktok.profile.get",
          "action": "Get TikTok profile",
          "routing": {
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a TikTok profile for a creator or account."
        },
        {
          "name": "Profile Videos",
          "value": "tiktok.profile.videos.list",
          "action": "List TikTok profile videos",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/videos",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get videos from a specific TikTok profile."
        },
        {
          "name": "Profile Followers",
          "value": "tiktok.profile.followers.list",
          "action": "List TikTok profile followers",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/followers",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get followers from a specific TikTok profile."
        },
        {
          "name": "Profile Following",
          "value": "tiktok.profile.following.list",
          "action": "List TikTok profile following",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/following",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get accounts followed by a specific TikTok profile."
        },
        {
          "name": "Profile Region",
          "value": "tiktok.profile.region.get",
          "action": "Get TikTok profile region",
          "routing": {
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/region",
              "method": "GET"
            }
          },
          "description": "Get the region code reported for a TikTok profile."
        },
        {
          "name": "Live Stream",
          "value": "tiktok.profile.live.check",
          "action": "Get TikTok live stream",
          "routing": {
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/live",
              "method": "GET"
            }
          },
          "description": "Check whether a TikTok creator is currently live."
        },
        {
          "name": "User Search",
          "value": "tiktok.users.search",
          "action": "Search TikTok users",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/tiktok/users/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search TikTok users by keyword."
        },
        {
          "name": "Search Videos",
          "value": "tiktok.search.videos.list",
          "action": "Search TikTok videos",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/tiktok/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search TikTok videos by keyword."
        },
        {
          "name": "Hashtag Search",
          "value": "tiktok.search.hashtag.list",
          "action": "Search TikTok by hashtag",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/tiktok/search/hashtags",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search TikTok videos by hashtag."
        },
        {
          "name": "Video",
          "value": "tiktok.video.get",
          "action": "Get TikTok video",
          "routing": {
            "request": {
              "url": "/v1/tiktok/videos",
              "method": "GET"
            }
          },
          "description": "Get a single TikTok video."
        },
        {
          "name": "Comments",
          "value": "tiktok.video.comments.list",
          "action": "List TikTok video comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/tiktok/videos/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments on a TikTok video."
        },
        {
          "name": "Transcript",
          "value": "tiktok.video.transcript.get",
          "action": "Get TikTok video transcript",
          "routing": {
            "request": {
              "url": "/v1/tiktok/videos/transcript",
              "method": "GET"
            }
          },
          "description": "Get the spoken transcript for a TikTok video."
        },
        {
          "name": "Trending Feed",
          "value": "tiktok.feed.trending.list",
          "action": "List TikTok trending feed",
          "routing": {
            "request": {
              "url": "/v1/tiktok/feed/trending",
              "method": "GET"
            }
          },
          "description": "Discover currently trending TikTok posts."
        },
        {
          "name": "Shop Product Search",
          "value": "tiktok.shop.products.search",
          "action": "Search TikTok Shop products",
          "routing": {
            "request": {
              "url": "/v1/tiktok/shop/products/search",
              "method": "GET"
            }
          },
          "description": "Search products in TikTok Shop."
        },
        {
          "name": "Shop Store Products",
          "value": "tiktok.shop.products.list",
          "action": "List TikTok Shop store products",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/tiktok/shop/products",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get products listed in a TikTok Shop store."
        },
        {
          "name": "Shop Product",
          "value": "tiktok.product.get",
          "action": "Get TikTok Shop product",
          "routing": {
            "request": {
              "url": "/v1/tiktok/products",
              "method": "GET"
            }
          },
          "description": "Get details for a TikTok Shop product."
        },
        {
          "name": "Shop Product Reviews",
          "value": "tiktok.product.reviews.list",
          "action": "List TikTok Shop product reviews",
          "routing": {
            "request": {
              "url": "/v1/tiktok/products/reviews",
              "method": "GET"
            }
          },
          "description": "Get buyer reviews for a TikTok Shop product."
        },
        {
          "name": "Profile Showcase Products",
          "value": "tiktok.profile.showcaseProducts.list",
          "action": "List TikTok profile showcase products",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/showcase-products",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get products featured on a creator's TikTok showcase."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tiktok"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "twitter.profile.get",
      "options": [
        {
          "name": "Profile",
          "value": "twitter.profile.get",
          "action": "Get Twitter profile",
          "routing": {
            "request": {
              "url": "=/v1/twitter/profiles/{{$parameter[\"handle\"]}}",
              "method": "GET"
            }
          },
          "description": "Get an X profile for a creator or account."
        },
        {
          "name": "Profile Tweets",
          "value": "twitter.profile.tweets.list",
          "action": "List Twitter profile tweets",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/twitter/profiles/{{$parameter[\"handle\"]}}/tweets",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "List tweets from a specific X profile."
        },
        {
          "name": "Tweet",
          "value": "twitter.tweet.get",
          "action": "Get Twitter tweet",
          "routing": {
            "request": {
              "url": "/v1/twitter/tweets",
              "method": "GET"
            }
          },
          "description": "Get a single tweet."
        },
        {
          "name": "Tweet Replies",
          "value": "twitter.tweet.replies.list",
          "action": "List Twitter tweet replies",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/twitter/tweets/replies",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "List replies to a tweet."
        },
        {
          "name": "Transcript",
          "value": "twitter.tweet.transcript.get",
          "action": "Get Twitter tweet transcript",
          "routing": {
            "request": {
              "url": "/v1/twitter/tweets/transcript",
              "method": "GET"
            }
          },
          "description": "Get the transcript for a video tweet."
        },
        {
          "name": "Search",
          "value": "twitter.search.list",
          "action": "Search Twitter posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/twitter/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search for posts on X."
        },
        {
          "name": "Hashtag Search",
          "value": "twitter.hashtag.list",
          "action": "Search Twitter by hashtag",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/twitter/hashtags",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search for posts on X by hashtag."
        },
        {
          "name": "Community",
          "value": "twitter.community.get",
          "action": "Get Twitter community",
          "routing": {
            "request": {
              "url": "/v1/twitter/communities",
              "method": "GET"
            }
          },
          "description": "Get details for an X community."
        },
        {
          "name": "Community Tweets",
          "value": "twitter.community.tweets.list",
          "action": "List Twitter community tweets",
          "routing": {
            "request": {
              "url": "/v1/twitter/communities/tweets",
              "method": "GET"
            }
          },
          "description": "Get tweets from an X community."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "twitter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "telegram.channel.get",
      "options": [
        {
          "name": "Channel",
          "value": "telegram.channel.get",
          "action": "Get Telegram channel",
          "routing": {
            "request": {
              "url": "=/v1/telegram/channels/{{$parameter[\"handle\"]}}",
              "method": "GET"
            }
          },
          "description": "Get metadata for a public Telegram channel or group by username."
        },
        {
          "name": "Channel Posts",
          "value": "telegram.channel_posts.get",
          "action": "List Telegram channel posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/telegram/channels/{{$parameter[\"handle\"]}}/posts",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "List recent posts from a public Telegram channel. Groups are not supported."
        },
        {
          "name": "Channel Post",
          "value": "telegram.channel_post.get",
          "action": "Get Telegram channel post",
          "routing": {
            "request": {
              "url": "=/v1/telegram/channels/{{$parameter[\"handle\"]}}/posts/{{$parameter[\"postId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single public post from a Telegram channel by handle and post ID. Groups are not supported."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "telegram"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "facebook.profile.get",
      "options": [
        {
          "name": "Profile",
          "value": "facebook.profile.get",
          "action": "Get Facebook profile",
          "routing": {
            "request": {
              "url": "/v1/facebook/profiles",
              "method": "GET"
            }
          },
          "description": "Get a Facebook profile or page."
        },
        {
          "name": "Profile Posts",
          "value": "facebook.profile.posts.list",
          "action": "List Facebook profile posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/profiles/posts",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get posts from a Facebook profile or page."
        },
        {
          "name": "Profile Reels",
          "value": "facebook.profile.reels.list",
          "action": "List Facebook profile reels",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/profiles/reels",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get Reels from a Facebook profile or page."
        },
        {
          "name": "Profile Photos",
          "value": "facebook.profile.photos.list",
          "action": "List Facebook profile photos",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/profiles/photos",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get photos from a Facebook profile or page."
        },
        {
          "name": "Post or Reel",
          "value": "facebook.post.get",
          "action": "Get Facebook post or reel",
          "routing": {
            "request": {
              "url": "/v1/facebook/posts",
              "method": "GET"
            }
          },
          "description": "Get a Facebook post or Reel."
        },
        {
          "name": "Comments",
          "value": "facebook.post.comments.list",
          "action": "List Facebook post or reel comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/posts/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments on a Facebook post or Reel."
        },
        {
          "name": "Transcript",
          "value": "facebook.post.transcript.get",
          "action": "Get Facebook post transcript",
          "routing": {
            "request": {
              "url": "/v1/facebook/posts/transcript",
              "method": "GET"
            }
          },
          "description": "Get the transcript for a Facebook post."
        },
        {
          "name": "Group Posts",
          "value": "facebook.group.posts.list",
          "action": "List Facebook group posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/groups/posts",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get posts from a Facebook group."
        },
        {
          "name": "Marketplace Item",
          "value": "facebook.marketplace.item.get",
          "action": "Get Facebook Marketplace item",
          "routing": {
            "request": {
              "url": "/v1/facebook/marketplace/items",
              "method": "GET"
            }
          },
          "description": "Get details for a Facebook Marketplace listing."
        },
        {
          "name": "Marketplace Location Search",
          "value": "facebook.marketplace.locations.search",
          "action": "Search Facebook Marketplace locations",
          "routing": {
            "request": {
              "url": "/v1/facebook/marketplace/locations/search",
              "method": "GET"
            }
          },
          "description": "Search Facebook Marketplace locations to obtain coordinates for listing search."
        },
        {
          "name": "Marketplace Search",
          "value": "facebook.marketplace.search.list",
          "action": "Search Facebook Marketplace listings",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/marketplace/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search Facebook Marketplace listings by keyword near a latitude and longitude."
        },
        {
          "name": "Ad Library Ad",
          "value": "facebook.adLibrary.ad.get",
          "action": "Get Facebook Ad Library ad",
          "routing": {
            "request": {
              "url": "/v1/facebook/ad-library/ads",
              "method": "GET"
            }
          },
          "description": "Get a single Facebook Ad Library ad by archive id or public Ad Library URL."
        },
        {
          "name": "Ad Library Search",
          "value": "facebook.adLibrary.ads.search.get",
          "action": "Search Facebook Ad Library ads",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/ad-library/ads/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search Facebook Ad Library ads by keyword."
        },
        {
          "name": "Company Ads",
          "value": "facebook.company.ads.list",
          "action": "List Facebook company ads",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/facebook/ad-library/companies/ads",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "List ads a company or page is running in the Facebook Ad Library."
        },
        {
          "name": "Ad Library Companies",
          "value": "facebook.adLibrary.companies.search",
          "action": "Search Facebook ad library companies",
          "routing": {
            "request": {
              "url": "/v1/facebook/ad-library/companies/search",
              "method": "GET"
            }
          },
          "description": "Search Facebook ad library companies by name."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "facebook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "instagram.profile.get",
      "options": [
        {
          "name": "Profile",
          "value": "instagram.profile.get",
          "action": "Get Instagram profile",
          "routing": {
            "request": {
              "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a full Instagram profile by handle."
        },
        {
          "name": "Basic Profile",
          "value": "instagram.profile.basic.get",
          "action": "Get Instagram basic profile",
          "routing": {
            "request": {
              "url": "=/v1/instagram/profiles/{{$parameter[\"userId\"]}}/basic",
              "method": "GET"
            }
          },
          "description": "Get a lightweight Instagram profile by numeric user ID."
        },
        {
          "name": "Profile Posts",
          "value": "instagram.profile.posts.list",
          "action": "List Instagram profile posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}/posts",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get posts from a specific Instagram profile."
        },
        {
          "name": "Profile Reels",
          "value": "instagram.profile.reels.list",
          "action": "List Instagram profile reels",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}/reels",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get Reels from a specific Instagram profile."
        },
        {
          "name": "Profile Highlights",
          "value": "instagram.profile.highlights.list",
          "action": "List Instagram profile highlights",
          "routing": {
            "request": {
              "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}/highlights",
              "method": "GET"
            }
          },
          "description": "List story highlight albums for an Instagram profile."
        },
        {
          "name": "Highlight",
          "value": "instagram.highlight.get",
          "action": "Get Instagram highlight",
          "routing": {
            "request": {
              "url": "=/v1/instagram/highlights/{{$parameter[\"highlightId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get stories from a saved Instagram highlight."
        },
        {
          "name": "Post or Reel",
          "value": "instagram.post.get",
          "action": "Get Instagram post or reel",
          "routing": {
            "request": {
              "url": "/v1/instagram/posts",
              "method": "GET"
            }
          },
          "description": "Get a single Instagram post or Reel."
        },
        {
          "name": "Comments",
          "value": "instagram.post.comments.list",
          "action": "List Instagram post or reel comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/instagram/posts/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments on an Instagram post or Reel."
        },
        {
          "name": "Transcript",
          "value": "instagram.post.transcript.get",
          "action": "Get Instagram post transcript",
          "routing": {
            "request": {
              "url": "/v1/instagram/posts/transcript",
              "method": "GET"
            }
          },
          "description": "Get the transcript for an Instagram post or Reel."
        },
        {
          "name": "Search Reels",
          "value": "instagram.search.reels.list",
          "action": "Search Instagram Reels",
          "routing": {
            "request": {
              "url": "/v1/instagram/search/reels",
              "method": "GET"
            }
          },
          "description": "Search Instagram Reels by keyword with optional date filters and page-based pagination."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "instagram"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "threads.profile.get",
      "options": [
        {
          "name": "Profile",
          "value": "threads.profile.get",
          "action": "Get Threads profile",
          "routing": {
            "request": {
              "url": "=/v1/threads/profiles/{{$parameter[\"handle\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a Threads profile for a creator or account."
        },
        {
          "name": "Profile Posts",
          "value": "threads.profile.posts.list",
          "action": "List Threads profile posts",
          "routing": {
            "request": {
              "url": "=/v1/threads/profiles/{{$parameter[\"handle\"]}}/posts",
              "method": "GET"
            }
          },
          "description": "Get posts from a specific Threads profile."
        },
        {
          "name": "Search Posts",
          "value": "threads.search.list",
          "action": "Search Threads posts",
          "routing": {
            "request": {
              "url": "/v1/threads/search",
              "method": "GET"
            }
          },
          "description": "Search for posts on Threads."
        },
        {
          "name": "Post",
          "value": "threads.post.get",
          "action": "Get Threads post",
          "routing": {
            "request": {
              "url": "/v1/threads/posts",
              "method": "GET"
            }
          },
          "description": "Get a single Threads post."
        },
        {
          "name": "User Search",
          "value": "threads.users.search",
          "action": "Search Threads users",
          "routing": {
            "request": {
              "url": "/v1/threads/users/search",
              "method": "GET"
            }
          },
          "description": "Search for users on Threads."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "threads"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "linkedin.profile.get",
      "options": [
        {
          "name": "Profiles",
          "value": "linkedin.profile.get",
          "action": "Get LinkedIn profiles",
          "routing": {
            "request": {
              "url": "/v1/linkedin/profiles",
              "method": "GET"
            }
          },
          "description": "Get LinkedIn profiles by URL or handle."
        },
        {
          "name": "Profile Posts",
          "value": "linkedin.profiles.posts.list",
          "action": "List LinkedIn profile posts",
          "routing": {
            "request": {
              "url": "/v1/linkedin/profiles/posts",
              "method": "GET"
            }
          },
          "description": "Get posts from a LinkedIn profile."
        },
        {
          "name": "People Search",
          "value": "linkedin.people.search.list",
          "action": "Search LinkedIn people",
          "routing": {
            "request": {
              "url": "/v1/linkedin/people/search",
              "method": "GET"
            }
          },
          "description": "Search LinkedIn people by first and/or last name."
        },
        {
          "name": "Organization Page",
          "value": "linkedin.organization.get",
          "action": "Get LinkedIn organization page",
          "routing": {
            "request": {
              "url": "/v1/linkedin/organizations",
              "method": "GET"
            }
          },
          "description": "Look up LinkedIn company, school, and organization pages by URL."
        },
        {
          "name": "Company Page",
          "value": "linkedin.company.get",
          "action": "Get LinkedIn company page",
          "routing": {
            "request": {
              "url": "/v1/linkedin/companies",
              "method": "GET"
            }
          },
          "description": "Get a LinkedIn company page."
        },
        {
          "name": "Company Posts",
          "value": "linkedin.company.posts.list",
          "action": "List LinkedIn company posts",
          "routing": {
            "request": {
              "url": "/v1/linkedin/companies/posts",
              "method": "GET"
            }
          },
          "description": "Get posts from a LinkedIn company page."
        },
        {
          "name": "Post or Article",
          "value": "linkedin.post.get",
          "action": "Get LinkedIn post or article",
          "routing": {
            "request": {
              "url": "/v1/linkedin/posts",
              "method": "GET"
            }
          },
          "description": "Get a LinkedIn post or article."
        },
        {
          "name": "Jobs",
          "value": "linkedin.jobs.get",
          "action": "Get LinkedIn jobs",
          "routing": {
            "request": {
              "url": "/v1/linkedin/jobs",
              "method": "GET"
            }
          },
          "description": "Get LinkedIn job postings by URL."
        },
        {
          "name": "Job Search",
          "value": "linkedin.jobs.search.list",
          "action": "Search LinkedIn jobs",
          "routing": {
            "request": {
              "url": "/v1/linkedin/jobs/search",
              "method": "GET"
            }
          },
          "description": "Search LinkedIn jobs by keyword and filters."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "reddit.subreddit.get",
      "options": [
        {
          "name": "Subreddit",
          "value": "reddit.subreddit.get",
          "action": "Get Reddit subreddit",
          "routing": {
            "request": {
              "url": "/v1/reddit/subreddits",
              "method": "GET"
            }
          },
          "description": "Get details for a Reddit community."
        },
        {
          "name": "Subreddit Posts",
          "value": "reddit.subreddit.posts.list",
          "action": "List Reddit subreddit posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "=/v1/reddit/subreddits/{{$parameter[\"subreddit\"]}}/posts",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get posts from a specific subreddit."
        },
        {
          "name": "Subreddit Search",
          "value": "reddit.subreddit.search.list",
          "action": "Search Reddit subreddit",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/reddit/subreddits/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search posts within a subreddit."
        },
        {
          "name": "Post Comments",
          "value": "reddit.post.comments.list",
          "action": "List Reddit post comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/reddit/posts/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments on a Reddit post."
        },
        {
          "name": "Post Transcript",
          "value": "reddit.post.transcript.get",
          "action": "Get Reddit post transcript",
          "routing": {
            "request": {
              "url": "/v1/reddit/posts/transcript",
              "method": "GET"
            }
          },
          "description": "Get captions transcript for a Reddit video post."
        },
        {
          "name": "Search",
          "value": "reddit.search.list",
          "action": "Search Reddit posts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/reddit/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search for posts on Reddit."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reddit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "spotify.artist.get",
      "options": [
        {
          "name": "Artist",
          "value": "spotify.artist.get",
          "action": "Get Spotify artist",
          "routing": {
            "request": {
              "url": "/v1/spotify/artist",
              "method": "GET"
            }
          },
          "description": "Get a Spotify artist by id or profile URL."
        },
        {
          "name": "Album",
          "value": "spotify.album.get",
          "action": "Get Spotify album",
          "routing": {
            "request": {
              "url": "/v1/spotify/album",
              "method": "GET"
            }
          },
          "description": "Get a Spotify album by id or album URL."
        },
        {
          "name": "Track",
          "value": "spotify.track.get",
          "action": "Get Spotify track",
          "routing": {
            "request": {
              "url": "/v1/spotify/track",
              "method": "GET"
            }
          },
          "description": "Get a Spotify track by id or track URL."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "spotify"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "youtube.channel.get",
      "options": [
        {
          "name": "Channel",
          "value": "youtube.channel.get",
          "action": "Get YouTube channel",
          "routing": {
            "request": {
              "url": "/v1/youtube/channel",
              "method": "GET"
            }
          },
          "description": "Get details for a YouTube channel."
        },
        {
          "name": "Channel Videos",
          "value": "youtube.channel.videos.list",
          "action": "List YouTube channel videos",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/youtube/channels/videos",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get videos published by a specific YouTube channel."
        },
        {
          "name": "Channel Shorts",
          "value": "youtube.channel.shorts.list",
          "action": "List YouTube channel shorts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/youtube/channels/shorts",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get Shorts published by a specific YouTube channel."
        },
        {
          "name": "Playlist",
          "value": "youtube.playlist.get",
          "action": "Get YouTube playlist",
          "routing": {
            "request": {
              "url": "/v1/youtube/playlists",
              "method": "GET"
            }
          },
          "description": "Get a YouTube playlist."
        },
        {
          "name": "Community Post",
          "value": "youtube.community.post.get",
          "action": "Get YouTube community post",
          "routing": {
            "request": {
              "url": "/v1/youtube/community-posts",
              "method": "GET"
            }
          },
          "description": "Get the contents of a YouTube community post."
        },
        {
          "name": "Search",
          "value": "youtube.search.list",
          "action": "Search YouTube",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/youtube/search",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search YouTube."
        },
        {
          "name": "Hashtag Search",
          "value": "youtube.search.hashtag.list",
          "action": "Search YouTube by hashtag",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/youtube/search/hashtags",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Search YouTube by hashtag."
        },
        {
          "name": "Trending Shorts",
          "value": "youtube.shorts.trending.list",
          "action": "List trending YouTube Shorts",
          "routing": {
            "request": {
              "url": "/v1/youtube/shorts/trending",
              "method": "GET"
            }
          },
          "description": "Discover currently trending YouTube Shorts."
        },
        {
          "name": "Video",
          "value": "youtube.video.get",
          "action": "Get YouTube video",
          "routing": {
            "request": {
              "url": "/v1/youtube/videos",
              "method": "GET"
            }
          },
          "description": "Get a single YouTube video."
        },
        {
          "name": "Comments",
          "value": "youtube.video.comments.list",
          "action": "List YouTube video comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/youtube/videos/comments",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get comments on a YouTube video."
        },
        {
          "name": "Replies",
          "value": "youtube.video.comments.replies.list",
          "action": "List YouTube comment replies",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "request": {
              "url": "/v1/youtube/videos/comments/replies",
              "method": "GET"
            },
            "operations": {}
          },
          "description": "Get replies to a YouTube comment."
        },
        {
          "name": "Transcript",
          "value": "youtube.video.transcript.get",
          "action": "Get YouTube video transcript",
          "routing": {
            "request": {
              "url": "/v1/youtube/videos/transcript",
              "method": "GET"
            }
          },
          "description": "Get the transcript for a YouTube video."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtube"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "web.search.run",
      "options": [
        {
          "name": "Search",
          "value": "web.search.run",
          "action": "Search the web",
          "routing": {
            "request": {
              "url": "/v1/web/search",
              "method": "GET"
            }
          },
          "description": "Search the public web and return ranked organic results with snippets."
        },
        {
          "name": "Markdown",
          "value": "web.markdown.generate",
          "action": "Generate web page markdown",
          "routing": {
            "request": {
              "url": "/v1/web/markdown",
              "method": "GET"
            }
          },
          "description": "Convert a web page into clean markdown."
        },
        {
          "name": "Ask",
          "value": "web.ask.run",
          "action": "Ask a question about a web page",
          "routing": {
            "request": {
              "url": "/v1/web/ask",
              "method": "GET"
            }
          },
          "description": "Ask a natural-language question about a web page and get an LLM-generated answer."
        },
        {
          "name": "HTML",
          "value": "web.html.generate",
          "action": "Generate web page HTML",
          "routing": {
            "request": {
              "url": "/v1/web/html",
              "method": "GET"
            }
          },
          "description": "Fetch and return cleaned HTML for a web page."
        },
        {
          "name": "Crawl",
          "value": "web.crawl.run",
          "action": "Crawl web pages",
          "routing": {
            "request": {
              "url": "/v1/web/crawl",
              "method": "GET"
            }
          },
          "description": "Crawl a small set of web pages synchronously."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "web"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "auth.whoami",
      "options": [
        {
          "name": "Whoami",
          "value": "auth.whoami",
          "action": "Whoami",
          "routing": {
            "request": {
              "url": "/v1/whoami",
              "method": "GET"
            }
          },
          "description": "Get the authenticated API account."
        },
        {
          "name": "Balance",
          "value": "billing.balance.get",
          "action": "Get account balance",
          "routing": {
            "request": {
              "url": "/v1/balance",
              "method": "GET"
            }
          },
          "description": "Get your account credit balance."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auth"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Profile",
      "value": "tiktok.profile.get",
      "action": "Get TikTok profile",
      "routing": {
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a TikTok profile for a creator or account.",
      "resource": "tiktok"
    },
    {
      "name": "Profile Videos",
      "value": "tiktok.profile.videos.list",
      "action": "List TikTok profile videos",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/videos",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get videos from a specific TikTok profile.",
      "resource": "tiktok"
    },
    {
      "name": "Profile Followers",
      "value": "tiktok.profile.followers.list",
      "action": "List TikTok profile followers",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/followers",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get followers from a specific TikTok profile.",
      "resource": "tiktok"
    },
    {
      "name": "Profile Following",
      "value": "tiktok.profile.following.list",
      "action": "List TikTok profile following",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/following",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get accounts followed by a specific TikTok profile.",
      "resource": "tiktok"
    },
    {
      "name": "Profile Region",
      "value": "tiktok.profile.region.get",
      "action": "Get TikTok profile region",
      "routing": {
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/region",
          "method": "GET"
        }
      },
      "description": "Get the region code reported for a TikTok profile.",
      "resource": "tiktok"
    },
    {
      "name": "Live Stream",
      "value": "tiktok.profile.live.check",
      "action": "Get TikTok live stream",
      "routing": {
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/live",
          "method": "GET"
        }
      },
      "description": "Check whether a TikTok creator is currently live.",
      "resource": "tiktok"
    },
    {
      "name": "User Search",
      "value": "tiktok.users.search",
      "action": "Search TikTok users",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/tiktok/users/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search TikTok users by keyword.",
      "resource": "tiktok"
    },
    {
      "name": "Search Videos",
      "value": "tiktok.search.videos.list",
      "action": "Search TikTok videos",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/tiktok/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search TikTok videos by keyword.",
      "resource": "tiktok"
    },
    {
      "name": "Hashtag Search",
      "value": "tiktok.search.hashtag.list",
      "action": "Search TikTok by hashtag",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/tiktok/search/hashtags",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search TikTok videos by hashtag.",
      "resource": "tiktok"
    },
    {
      "name": "Video",
      "value": "tiktok.video.get",
      "action": "Get TikTok video",
      "routing": {
        "request": {
          "url": "/v1/tiktok/videos",
          "method": "GET"
        }
      },
      "description": "Get a single TikTok video.",
      "resource": "tiktok"
    },
    {
      "name": "Comments",
      "value": "tiktok.video.comments.list",
      "action": "List TikTok video comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/tiktok/videos/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments on a TikTok video.",
      "resource": "tiktok"
    },
    {
      "name": "Transcript",
      "value": "tiktok.video.transcript.get",
      "action": "Get TikTok video transcript",
      "routing": {
        "request": {
          "url": "/v1/tiktok/videos/transcript",
          "method": "GET"
        }
      },
      "description": "Get the spoken transcript for a TikTok video.",
      "resource": "tiktok"
    },
    {
      "name": "Trending Feed",
      "value": "tiktok.feed.trending.list",
      "action": "List TikTok trending feed",
      "routing": {
        "request": {
          "url": "/v1/tiktok/feed/trending",
          "method": "GET"
        }
      },
      "description": "Discover currently trending TikTok posts.",
      "resource": "tiktok"
    },
    {
      "name": "Shop Product Search",
      "value": "tiktok.shop.products.search",
      "action": "Search TikTok Shop products",
      "routing": {
        "request": {
          "url": "/v1/tiktok/shop/products/search",
          "method": "GET"
        }
      },
      "description": "Search products in TikTok Shop.",
      "resource": "tiktok"
    },
    {
      "name": "Shop Store Products",
      "value": "tiktok.shop.products.list",
      "action": "List TikTok Shop store products",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/tiktok/shop/products",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get products listed in a TikTok Shop store.",
      "resource": "tiktok"
    },
    {
      "name": "Shop Product",
      "value": "tiktok.product.get",
      "action": "Get TikTok Shop product",
      "routing": {
        "request": {
          "url": "/v1/tiktok/products",
          "method": "GET"
        }
      },
      "description": "Get details for a TikTok Shop product.",
      "resource": "tiktok"
    },
    {
      "name": "Shop Product Reviews",
      "value": "tiktok.product.reviews.list",
      "action": "List TikTok Shop product reviews",
      "routing": {
        "request": {
          "url": "/v1/tiktok/products/reviews",
          "method": "GET"
        }
      },
      "description": "Get buyer reviews for a TikTok Shop product.",
      "resource": "tiktok"
    },
    {
      "name": "Profile Showcase Products",
      "value": "tiktok.profile.showcaseProducts.list",
      "action": "List TikTok profile showcase products",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/tiktok/profiles/{{$parameter[\"handle\"]}}/showcase-products",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get products featured on a creator's TikTok showcase.",
      "resource": "tiktok"
    },
    {
      "name": "Profile",
      "value": "twitter.profile.get",
      "action": "Get Twitter profile",
      "routing": {
        "request": {
          "url": "=/v1/twitter/profiles/{{$parameter[\"handle\"]}}",
          "method": "GET"
        }
      },
      "description": "Get an X profile for a creator or account.",
      "resource": "twitter"
    },
    {
      "name": "Profile Tweets",
      "value": "twitter.profile.tweets.list",
      "action": "List Twitter profile tweets",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/twitter/profiles/{{$parameter[\"handle\"]}}/tweets",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "List tweets from a specific X profile.",
      "resource": "twitter"
    },
    {
      "name": "Tweet",
      "value": "twitter.tweet.get",
      "action": "Get Twitter tweet",
      "routing": {
        "request": {
          "url": "/v1/twitter/tweets",
          "method": "GET"
        }
      },
      "description": "Get a single tweet.",
      "resource": "twitter"
    },
    {
      "name": "Tweet Replies",
      "value": "twitter.tweet.replies.list",
      "action": "List Twitter tweet replies",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/twitter/tweets/replies",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "List replies to a tweet.",
      "resource": "twitter"
    },
    {
      "name": "Transcript",
      "value": "twitter.tweet.transcript.get",
      "action": "Get Twitter tweet transcript",
      "routing": {
        "request": {
          "url": "/v1/twitter/tweets/transcript",
          "method": "GET"
        }
      },
      "description": "Get the transcript for a video tweet.",
      "resource": "twitter"
    },
    {
      "name": "Search",
      "value": "twitter.search.list",
      "action": "Search Twitter posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/twitter/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search for posts on X.",
      "resource": "twitter"
    },
    {
      "name": "Hashtag Search",
      "value": "twitter.hashtag.list",
      "action": "Search Twitter by hashtag",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/twitter/hashtags",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search for posts on X by hashtag.",
      "resource": "twitter"
    },
    {
      "name": "Community",
      "value": "twitter.community.get",
      "action": "Get Twitter community",
      "routing": {
        "request": {
          "url": "/v1/twitter/communities",
          "method": "GET"
        }
      },
      "description": "Get details for an X community.",
      "resource": "twitter"
    },
    {
      "name": "Community Tweets",
      "value": "twitter.community.tweets.list",
      "action": "List Twitter community tweets",
      "routing": {
        "request": {
          "url": "/v1/twitter/communities/tweets",
          "method": "GET"
        }
      },
      "description": "Get tweets from an X community.",
      "resource": "twitter"
    },
    {
      "name": "Channel",
      "value": "telegram.channel.get",
      "action": "Get Telegram channel",
      "routing": {
        "request": {
          "url": "=/v1/telegram/channels/{{$parameter[\"handle\"]}}",
          "method": "GET"
        }
      },
      "description": "Get metadata for a public Telegram channel or group by username.",
      "resource": "telegram"
    },
    {
      "name": "Channel Posts",
      "value": "telegram.channel_posts.get",
      "action": "List Telegram channel posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/telegram/channels/{{$parameter[\"handle\"]}}/posts",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "List recent posts from a public Telegram channel. Groups are not supported.",
      "resource": "telegram"
    },
    {
      "name": "Channel Post",
      "value": "telegram.channel_post.get",
      "action": "Get Telegram channel post",
      "routing": {
        "request": {
          "url": "=/v1/telegram/channels/{{$parameter[\"handle\"]}}/posts/{{$parameter[\"postId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a single public post from a Telegram channel by handle and post ID. Groups are not supported.",
      "resource": "telegram"
    },
    {
      "name": "Profile",
      "value": "facebook.profile.get",
      "action": "Get Facebook profile",
      "routing": {
        "request": {
          "url": "/v1/facebook/profiles",
          "method": "GET"
        }
      },
      "description": "Get a Facebook profile or page.",
      "resource": "facebook"
    },
    {
      "name": "Profile Posts",
      "value": "facebook.profile.posts.list",
      "action": "List Facebook profile posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/profiles/posts",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get posts from a Facebook profile or page.",
      "resource": "facebook"
    },
    {
      "name": "Profile Reels",
      "value": "facebook.profile.reels.list",
      "action": "List Facebook profile reels",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/profiles/reels",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get Reels from a Facebook profile or page.",
      "resource": "facebook"
    },
    {
      "name": "Profile Photos",
      "value": "facebook.profile.photos.list",
      "action": "List Facebook profile photos",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/profiles/photos",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get photos from a Facebook profile or page.",
      "resource": "facebook"
    },
    {
      "name": "Post or Reel",
      "value": "facebook.post.get",
      "action": "Get Facebook post or reel",
      "routing": {
        "request": {
          "url": "/v1/facebook/posts",
          "method": "GET"
        }
      },
      "description": "Get a Facebook post or Reel.",
      "resource": "facebook"
    },
    {
      "name": "Comments",
      "value": "facebook.post.comments.list",
      "action": "List Facebook post or reel comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/posts/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments on a Facebook post or Reel.",
      "resource": "facebook"
    },
    {
      "name": "Transcript",
      "value": "facebook.post.transcript.get",
      "action": "Get Facebook post transcript",
      "routing": {
        "request": {
          "url": "/v1/facebook/posts/transcript",
          "method": "GET"
        }
      },
      "description": "Get the transcript for a Facebook post.",
      "resource": "facebook"
    },
    {
      "name": "Group Posts",
      "value": "facebook.group.posts.list",
      "action": "List Facebook group posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/groups/posts",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get posts from a Facebook group.",
      "resource": "facebook"
    },
    {
      "name": "Marketplace Item",
      "value": "facebook.marketplace.item.get",
      "action": "Get Facebook Marketplace item",
      "routing": {
        "request": {
          "url": "/v1/facebook/marketplace/items",
          "method": "GET"
        }
      },
      "description": "Get details for a Facebook Marketplace listing.",
      "resource": "facebook"
    },
    {
      "name": "Marketplace Location Search",
      "value": "facebook.marketplace.locations.search",
      "action": "Search Facebook Marketplace locations",
      "routing": {
        "request": {
          "url": "/v1/facebook/marketplace/locations/search",
          "method": "GET"
        }
      },
      "description": "Search Facebook Marketplace locations to obtain coordinates for listing search.",
      "resource": "facebook"
    },
    {
      "name": "Marketplace Search",
      "value": "facebook.marketplace.search.list",
      "action": "Search Facebook Marketplace listings",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/marketplace/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search Facebook Marketplace listings by keyword near a latitude and longitude.",
      "resource": "facebook"
    },
    {
      "name": "Ad Library Ad",
      "value": "facebook.adLibrary.ad.get",
      "action": "Get Facebook Ad Library ad",
      "routing": {
        "request": {
          "url": "/v1/facebook/ad-library/ads",
          "method": "GET"
        }
      },
      "description": "Get a single Facebook Ad Library ad by archive id or public Ad Library URL.",
      "resource": "facebook"
    },
    {
      "name": "Ad Library Search",
      "value": "facebook.adLibrary.ads.search.get",
      "action": "Search Facebook Ad Library ads",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/ad-library/ads/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search Facebook Ad Library ads by keyword.",
      "resource": "facebook"
    },
    {
      "name": "Company Ads",
      "value": "facebook.company.ads.list",
      "action": "List Facebook company ads",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/facebook/ad-library/companies/ads",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "List ads a company or page is running in the Facebook Ad Library.",
      "resource": "facebook"
    },
    {
      "name": "Ad Library Companies",
      "value": "facebook.adLibrary.companies.search",
      "action": "Search Facebook ad library companies",
      "routing": {
        "request": {
          "url": "/v1/facebook/ad-library/companies/search",
          "method": "GET"
        }
      },
      "description": "Search Facebook ad library companies by name.",
      "resource": "facebook"
    },
    {
      "name": "Profile",
      "value": "instagram.profile.get",
      "action": "Get Instagram profile",
      "routing": {
        "request": {
          "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a full Instagram profile by handle.",
      "resource": "instagram"
    },
    {
      "name": "Basic Profile",
      "value": "instagram.profile.basic.get",
      "action": "Get Instagram basic profile",
      "routing": {
        "request": {
          "url": "=/v1/instagram/profiles/{{$parameter[\"userId\"]}}/basic",
          "method": "GET"
        }
      },
      "description": "Get a lightweight Instagram profile by numeric user ID.",
      "resource": "instagram"
    },
    {
      "name": "Profile Posts",
      "value": "instagram.profile.posts.list",
      "action": "List Instagram profile posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}/posts",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get posts from a specific Instagram profile.",
      "resource": "instagram"
    },
    {
      "name": "Profile Reels",
      "value": "instagram.profile.reels.list",
      "action": "List Instagram profile reels",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}/reels",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get Reels from a specific Instagram profile.",
      "resource": "instagram"
    },
    {
      "name": "Profile Highlights",
      "value": "instagram.profile.highlights.list",
      "action": "List Instagram profile highlights",
      "routing": {
        "request": {
          "url": "=/v1/instagram/profiles/{{$parameter[\"handle\"]}}/highlights",
          "method": "GET"
        }
      },
      "description": "List story highlight albums for an Instagram profile.",
      "resource": "instagram"
    },
    {
      "name": "Highlight",
      "value": "instagram.highlight.get",
      "action": "Get Instagram highlight",
      "routing": {
        "request": {
          "url": "=/v1/instagram/highlights/{{$parameter[\"highlightId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get stories from a saved Instagram highlight.",
      "resource": "instagram"
    },
    {
      "name": "Post or Reel",
      "value": "instagram.post.get",
      "action": "Get Instagram post or reel",
      "routing": {
        "request": {
          "url": "/v1/instagram/posts",
          "method": "GET"
        }
      },
      "description": "Get a single Instagram post or Reel.",
      "resource": "instagram"
    },
    {
      "name": "Comments",
      "value": "instagram.post.comments.list",
      "action": "List Instagram post or reel comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/instagram/posts/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments on an Instagram post or Reel.",
      "resource": "instagram"
    },
    {
      "name": "Transcript",
      "value": "instagram.post.transcript.get",
      "action": "Get Instagram post transcript",
      "routing": {
        "request": {
          "url": "/v1/instagram/posts/transcript",
          "method": "GET"
        }
      },
      "description": "Get the transcript for an Instagram post or Reel.",
      "resource": "instagram"
    },
    {
      "name": "Search Reels",
      "value": "instagram.search.reels.list",
      "action": "Search Instagram Reels",
      "routing": {
        "request": {
          "url": "/v1/instagram/search/reels",
          "method": "GET"
        }
      },
      "description": "Search Instagram Reels by keyword with optional date filters and page-based pagination.",
      "resource": "instagram"
    },
    {
      "name": "Profile",
      "value": "threads.profile.get",
      "action": "Get Threads profile",
      "routing": {
        "request": {
          "url": "=/v1/threads/profiles/{{$parameter[\"handle\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a Threads profile for a creator or account.",
      "resource": "threads"
    },
    {
      "name": "Profile Posts",
      "value": "threads.profile.posts.list",
      "action": "List Threads profile posts",
      "routing": {
        "request": {
          "url": "=/v1/threads/profiles/{{$parameter[\"handle\"]}}/posts",
          "method": "GET"
        }
      },
      "description": "Get posts from a specific Threads profile.",
      "resource": "threads"
    },
    {
      "name": "Search Posts",
      "value": "threads.search.list",
      "action": "Search Threads posts",
      "routing": {
        "request": {
          "url": "/v1/threads/search",
          "method": "GET"
        }
      },
      "description": "Search for posts on Threads.",
      "resource": "threads"
    },
    {
      "name": "Post",
      "value": "threads.post.get",
      "action": "Get Threads post",
      "routing": {
        "request": {
          "url": "/v1/threads/posts",
          "method": "GET"
        }
      },
      "description": "Get a single Threads post.",
      "resource": "threads"
    },
    {
      "name": "User Search",
      "value": "threads.users.search",
      "action": "Search Threads users",
      "routing": {
        "request": {
          "url": "/v1/threads/users/search",
          "method": "GET"
        }
      },
      "description": "Search for users on Threads.",
      "resource": "threads"
    },
    {
      "name": "Profiles",
      "value": "linkedin.profile.get",
      "action": "Get LinkedIn profiles",
      "routing": {
        "request": {
          "url": "/v1/linkedin/profiles",
          "method": "GET"
        }
      },
      "description": "Get LinkedIn profiles by URL or handle.",
      "resource": "linkedin"
    },
    {
      "name": "Profile Posts",
      "value": "linkedin.profiles.posts.list",
      "action": "List LinkedIn profile posts",
      "routing": {
        "request": {
          "url": "/v1/linkedin/profiles/posts",
          "method": "GET"
        }
      },
      "description": "Get posts from a LinkedIn profile.",
      "resource": "linkedin"
    },
    {
      "name": "People Search",
      "value": "linkedin.people.search.list",
      "action": "Search LinkedIn people",
      "routing": {
        "request": {
          "url": "/v1/linkedin/people/search",
          "method": "GET"
        }
      },
      "description": "Search LinkedIn people by first and/or last name.",
      "resource": "linkedin"
    },
    {
      "name": "Organization Page",
      "value": "linkedin.organization.get",
      "action": "Get LinkedIn organization page",
      "routing": {
        "request": {
          "url": "/v1/linkedin/organizations",
          "method": "GET"
        }
      },
      "description": "Look up LinkedIn company, school, and organization pages by URL.",
      "resource": "linkedin"
    },
    {
      "name": "Company Page",
      "value": "linkedin.company.get",
      "action": "Get LinkedIn company page",
      "routing": {
        "request": {
          "url": "/v1/linkedin/companies",
          "method": "GET"
        }
      },
      "description": "Get a LinkedIn company page.",
      "resource": "linkedin"
    },
    {
      "name": "Company Posts",
      "value": "linkedin.company.posts.list",
      "action": "List LinkedIn company posts",
      "routing": {
        "request": {
          "url": "/v1/linkedin/companies/posts",
          "method": "GET"
        }
      },
      "description": "Get posts from a LinkedIn company page.",
      "resource": "linkedin"
    },
    {
      "name": "Post or Article",
      "value": "linkedin.post.get",
      "action": "Get LinkedIn post or article",
      "routing": {
        "request": {
          "url": "/v1/linkedin/posts",
          "method": "GET"
        }
      },
      "description": "Get a LinkedIn post or article.",
      "resource": "linkedin"
    },
    {
      "name": "Jobs",
      "value": "linkedin.jobs.get",
      "action": "Get LinkedIn jobs",
      "routing": {
        "request": {
          "url": "/v1/linkedin/jobs",
          "method": "GET"
        }
      },
      "description": "Get LinkedIn job postings by URL.",
      "resource": "linkedin"
    },
    {
      "name": "Job Search",
      "value": "linkedin.jobs.search.list",
      "action": "Search LinkedIn jobs",
      "routing": {
        "request": {
          "url": "/v1/linkedin/jobs/search",
          "method": "GET"
        }
      },
      "description": "Search LinkedIn jobs by keyword and filters.",
      "resource": "linkedin"
    },
    {
      "name": "Subreddit",
      "value": "reddit.subreddit.get",
      "action": "Get Reddit subreddit",
      "routing": {
        "request": {
          "url": "/v1/reddit/subreddits",
          "method": "GET"
        }
      },
      "description": "Get details for a Reddit community.",
      "resource": "reddit"
    },
    {
      "name": "Subreddit Posts",
      "value": "reddit.subreddit.posts.list",
      "action": "List Reddit subreddit posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "=/v1/reddit/subreddits/{{$parameter[\"subreddit\"]}}/posts",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get posts from a specific subreddit.",
      "resource": "reddit"
    },
    {
      "name": "Subreddit Search",
      "value": "reddit.subreddit.search.list",
      "action": "Search Reddit subreddit",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/reddit/subreddits/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search posts within a subreddit.",
      "resource": "reddit"
    },
    {
      "name": "Post Comments",
      "value": "reddit.post.comments.list",
      "action": "List Reddit post comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/reddit/posts/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments on a Reddit post.",
      "resource": "reddit"
    },
    {
      "name": "Post Transcript",
      "value": "reddit.post.transcript.get",
      "action": "Get Reddit post transcript",
      "routing": {
        "request": {
          "url": "/v1/reddit/posts/transcript",
          "method": "GET"
        }
      },
      "description": "Get captions transcript for a Reddit video post.",
      "resource": "reddit"
    },
    {
      "name": "Search",
      "value": "reddit.search.list",
      "action": "Search Reddit posts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/reddit/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search for posts on Reddit.",
      "resource": "reddit"
    },
    {
      "name": "Artist",
      "value": "spotify.artist.get",
      "action": "Get Spotify artist",
      "routing": {
        "request": {
          "url": "/v1/spotify/artist",
          "method": "GET"
        }
      },
      "description": "Get a Spotify artist by id or profile URL.",
      "resource": "spotify"
    },
    {
      "name": "Album",
      "value": "spotify.album.get",
      "action": "Get Spotify album",
      "routing": {
        "request": {
          "url": "/v1/spotify/album",
          "method": "GET"
        }
      },
      "description": "Get a Spotify album by id or album URL.",
      "resource": "spotify"
    },
    {
      "name": "Track",
      "value": "spotify.track.get",
      "action": "Get Spotify track",
      "routing": {
        "request": {
          "url": "/v1/spotify/track",
          "method": "GET"
        }
      },
      "description": "Get a Spotify track by id or track URL.",
      "resource": "spotify"
    },
    {
      "name": "Channel",
      "value": "youtube.channel.get",
      "action": "Get YouTube channel",
      "routing": {
        "request": {
          "url": "/v1/youtube/channel",
          "method": "GET"
        }
      },
      "description": "Get details for a YouTube channel.",
      "resource": "youtube"
    },
    {
      "name": "Channel Videos",
      "value": "youtube.channel.videos.list",
      "action": "List YouTube channel videos",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/youtube/channels/videos",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get videos published by a specific YouTube channel.",
      "resource": "youtube"
    },
    {
      "name": "Channel Shorts",
      "value": "youtube.channel.shorts.list",
      "action": "List YouTube channel shorts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/youtube/channels/shorts",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get Shorts published by a specific YouTube channel.",
      "resource": "youtube"
    },
    {
      "name": "Playlist",
      "value": "youtube.playlist.get",
      "action": "Get YouTube playlist",
      "routing": {
        "request": {
          "url": "/v1/youtube/playlists",
          "method": "GET"
        }
      },
      "description": "Get a YouTube playlist.",
      "resource": "youtube"
    },
    {
      "name": "Community Post",
      "value": "youtube.community.post.get",
      "action": "Get YouTube community post",
      "routing": {
        "request": {
          "url": "/v1/youtube/community-posts",
          "method": "GET"
        }
      },
      "description": "Get the contents of a YouTube community post.",
      "resource": "youtube"
    },
    {
      "name": "Search",
      "value": "youtube.search.list",
      "action": "Search YouTube",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/youtube/search",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search YouTube.",
      "resource": "youtube"
    },
    {
      "name": "Hashtag Search",
      "value": "youtube.search.hashtag.list",
      "action": "Search YouTube by hashtag",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/youtube/search/hashtags",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Search YouTube by hashtag.",
      "resource": "youtube"
    },
    {
      "name": "Trending Shorts",
      "value": "youtube.shorts.trending.list",
      "action": "List trending YouTube Shorts",
      "routing": {
        "request": {
          "url": "/v1/youtube/shorts/trending",
          "method": "GET"
        }
      },
      "description": "Discover currently trending YouTube Shorts.",
      "resource": "youtube"
    },
    {
      "name": "Video",
      "value": "youtube.video.get",
      "action": "Get YouTube video",
      "routing": {
        "request": {
          "url": "/v1/youtube/videos",
          "method": "GET"
        }
      },
      "description": "Get a single YouTube video.",
      "resource": "youtube"
    },
    {
      "name": "Comments",
      "value": "youtube.video.comments.list",
      "action": "List YouTube video comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/youtube/videos/comments",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get comments on a YouTube video.",
      "resource": "youtube"
    },
    {
      "name": "Replies",
      "value": "youtube.video.comments.replies.list",
      "action": "List YouTube comment replies",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "request": {
          "url": "/v1/youtube/videos/comments/replies",
          "method": "GET"
        },
        "operations": {}
      },
      "description": "Get replies to a YouTube comment.",
      "resource": "youtube"
    },
    {
      "name": "Transcript",
      "value": "youtube.video.transcript.get",
      "action": "Get YouTube video transcript",
      "routing": {
        "request": {
          "url": "/v1/youtube/videos/transcript",
          "method": "GET"
        }
      },
      "description": "Get the transcript for a YouTube video.",
      "resource": "youtube"
    },
    {
      "name": "Search",
      "value": "web.search.run",
      "action": "Search the web",
      "routing": {
        "request": {
          "url": "/v1/web/search",
          "method": "GET"
        }
      },
      "description": "Search the public web and return ranked organic results with snippets.",
      "resource": "web"
    },
    {
      "name": "Markdown",
      "value": "web.markdown.generate",
      "action": "Generate web page markdown",
      "routing": {
        "request": {
          "url": "/v1/web/markdown",
          "method": "GET"
        }
      },
      "description": "Convert a web page into clean markdown.",
      "resource": "web"
    },
    {
      "name": "Ask",
      "value": "web.ask.run",
      "action": "Ask a question about a web page",
      "routing": {
        "request": {
          "url": "/v1/web/ask",
          "method": "GET"
        }
      },
      "description": "Ask a natural-language question about a web page and get an LLM-generated answer.",
      "resource": "web"
    },
    {
      "name": "HTML",
      "value": "web.html.generate",
      "action": "Generate web page HTML",
      "routing": {
        "request": {
          "url": "/v1/web/html",
          "method": "GET"
        }
      },
      "description": "Fetch and return cleaned HTML for a web page.",
      "resource": "web"
    },
    {
      "name": "Crawl",
      "value": "web.crawl.run",
      "action": "Crawl web pages",
      "routing": {
        "request": {
          "url": "/v1/web/crawl",
          "method": "GET"
        }
      },
      "description": "Crawl a small set of web pages synchronously.",
      "resource": "web"
    },
    {
      "name": "Whoami",
      "value": "auth.whoami",
      "action": "Whoami",
      "routing": {
        "request": {
          "url": "/v1/whoami",
          "method": "GET"
        }
      },
      "description": "Get the authenticated API account.",
      "resource": "auth"
    },
    {
      "name": "Balance",
      "value": "billing.balance.get",
      "action": "Get account balance",
      "routing": {
        "request": {
          "url": "/v1/balance",
          "method": "GET"
        }
      },
      "description": "Get your account credit balance.",
      "resource": "auth"
    }
  ]

npm_readme:
  # n8n-nodes-socialfetch

  This is an [n8n](https://n8n.io) community node that lets you fetch real-time social media and web data using the [Social Fetch API](https://www.socialfetch.dev).

  It exposes a single **Social Fetch** node with one resource per platform (TikTok, Twitter/X, Telegram, Facebook, Instagram, Threads, LinkedIn, Reddit, Spotify, YouTube, Web) plus account operations under **Account** (Whoami, Balance). Each operation maps directly to a Social Fetch public API endpoint.

  [Installation](#installation) · [Credentials](#credentials) · [Operations](#operations) · [Example](#example-workflow) · [Development](#development) · [Publishing](PUBLISHING.md)

  ## Installation

  Follow the [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) and install the npm package `n8n-nodes-socialfetch`.

  ## Credentials

  You need a Social Fetch API key (it starts with `sfk_`). Create one in your [Social Fetch API Keys](https://app.socialfetch.dev/api-keys).

  In n8n, create a new **Social Fetch API** credential and paste your key. The credential is validated against `GET /v1/whoami` when you save it.

  ## Operations

  Pick a **Resource** (platform) and an **Operation**. Required inputs appear as direct fields; optional inputs live under **Additional Fields**.

  ### Pagination and “Return All”

  Only list endpoints that use Social Fetch’s **cursor** query parameter show a **Return All** toggle. When enabled, the node follows `data.page.nextCursor` until `data.page.hasMore` is false. Each page is a separate output item containing the full API JSON body (`data`, `meta`, etc.). Use n8n’s **Item Lists** or **Code** node if you need a single merged array.

  List endpoints that return everything in one response (no cursor), or that paginate with other parameters such as `page`, do not show **Return All**—you get the first response only unless you pass those parameters under **Additional Fields**.

  Every request consumes credits from your Social Fetch balance (most endpoints cost 1 credit; some search and media-download options cost more). The credits charged for each call are returned in `meta.creditsCharged`.

  ## Example workflow

  This example fetches a TikTok creator's recent videos and keeps only the high-performing ones.

  1. **Manual Trigger** — start the workflow manually for testing.
  2. **Social Fetch** — set **Resource** to `TikTok` and **Operation** to `Profile Videos`.
     - **Handle**: `n8n`
     - Turn on **Return All** to page through every video, or leave it off to fetch the first page.
     - Under **Additional Fields**, set **Sort By** to `Popular`.
  3. **Split Out** — field to split out: `data.videos` (one item per video).
  4. **Filter** — keep videos above a view threshold:
     - Condition: `{{ $json.stats.views }}` _is greater than_ `100000`.

  Each Social Fetch item is one API page. With **Return All** off you get a single page; with it on you get one item per page, each containing `data.videos`, `data.page`, and `meta`. **Split Out** turns the videos array into individual items so the Filter node can evaluate `stats.views` on each video.

  Example response shape (first video on a page):

  ```json
  {
    "data": {
      "videos": [
        {
          "id": "7639528062975053069",
          "caption": "…",
          "url": "https://www.tiktok.com/@handle/video/7639528062975053069",
          "stats": {
            "views": 302447,
            "likes": 19880,
            "comments": 339,
            "shares": 2232,
            "saves": 389
          }
        }
      ],
      "page": { "nextCursor": "…", "hasMore": true }
    },
    "meta": { "creditsCharged": 1, "requestId": "…", "version": "v1" }
  }
  ```

  A second common pattern is enrichment: use **TikTok → User Search** (or **Search Videos**) to discover handles, then loop those results back into **Profile Videos** or **Profile** to pull full details for each match.

  ## Development

  The node descriptions are generated from the Social Fetch OpenAPI spec. Parameter labels and operation dropdown names follow [n8n node UX guidelines](https://docs.n8n.io/integrations/creating-nodes/build/reference/ux-guidelines/): Title Case with canonical acronyms (`URL`, `ID`, `AI`) on parameters and operation names; sentence case on operation `action` strings and descriptions.

  Label formatting lives in `scripts/n8n-label-formatting.mts` and is covered by unit and integration tests.

  ```bash
  # from the repo root (codegen + eslint fix on generated descriptions)
  pnpm generate:n8n

  # label formatting tests (unit + committed generated output; lives in monorepo tests/)
  pnpm test:n8n

  # full derived check before a PR (openapi, sdk, zapier, n8n, …)
  pnpm check:derived

  # lint, build, and label tests for the n8n package only
  pnpm check:n8n

  # local dev (standalone pnpm project — not part of the root pnpm workspace)
  cd integrations/n8n
  pnpm install --ignore-workspace
  pnpm run build
  pnpm run dev   # http://localhost:5678
  ```

  `generate:n8n` syncs the package **version** from `@socialfetch/sdk`, regenerates descriptions, and runs `lint:fix`. `check:n8n` runs label tests, lint, and build. `check:derived` also runs `check:n8n`.

  Releases and syncing to [n8n-nodes-socialfetch](https://github.com/social-freak-ltd/n8n-nodes-socialfetch) are automated from the monorepo — see [PUBLISHING.md](PUBLISHING.md).

  ## License

  [MIT](./LICENSE)

ai_documentation_summary:
  {"purpose":"Fetch real-time social media and web data via the Social Fetch API. The node exposes one resource per supported platform plus account operations, with each operation mapping directly to a Social Fetch public API endpoint.","capabilities":["Fetch data from TikTok, Twitter/X, Telegram, Facebook, Instagram, Threads, LinkedIn, Reddit, Spotify, YouTube, and Web resources","Run Account operations such as Whoami and Balance","Perform list/search/profile-style operations per platform based on the Social Fetch API endpoints","Support cursor-based pagination with a Return All toggle for eligible endpoints","Return full API response bodies including data, meta, and pagination details","Track credit usage per request via meta.creditsCharged"],"authentication":"API key required (Social Fetch API key starting with sfk_); stored in an n8n Social Fetch API credential and validated against GET /v1/whoami","commonUseCases":["Collect social media profile, post, video, or search results for downstream analysis","Discover creators or handles and enrich them with full profile or content details","Monitor social/web sources across multiple platforms in a single n8n workflow","Check API account status and remaining balance before running data fetches"],"limitations":["Only cursor-based list endpoints expose Return All; endpoints that paginate with page or return all data in one response do not support it","When Return All is off for non-cursor paginated endpoints, only the first response is returned unless pagination parameters are provided manually in Additional Fields","Each request consumes credits from the Social Fetch balance, and some search or media-download options cost more than 1 credit"],"relatedNodes":["Split Out","Filter","Manual Trigger","Item Lists","Code"]}


