# nodes

node_type: @waapi/n8n-nodes-waalaxy.waalaxy
package_name: @waapi/n8n-nodes-waalaxy
display_name: Waalaxy
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: fabazad74
author_github_url: https://github.com/Waapi-Pro/n8n-nodes-waalaxy.git
npm_package_name: @waapi/n8n-nodes-waalaxy
npm_version: 1.2.2
community_fetched_at: 2026-07-14T14:40:33.491Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  We make LinkedIn outreach f*cking easy. Reach 800+ prospects on LinkedIn every month. Auto-follow up until they reply. No complex setup. 150,000+ professionals (sales reps, founders, recruiters) use Waalaxy to get replies and sign new clients.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prospect",
      "options": [
        {
          "name": "Prospect",
          "value": "prospect"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "importProspect",
      "options": [
        {
          "name": "Import",
          "value": "importProspect",
          "action": "Import",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "prospects/addProspectFromIntegration",
              "method": "POST",
              "ignoreHttpStatusErrors": true
            }
          },
          "description": "Import a prospect in the Waalaxy CRM"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prospect"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Import",
      "value": "importProspect",
      "action": "Import",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "prospects/addProspectFromIntegration",
          "method": "POST",
          "ignoreHttpStatusErrors": true
        }
      },
      "description": "Import a prospect in the Waalaxy CRM",
      "resource": "prospect"
    }
  ]

npm_readme:
  # n8n-nodes-waalaxy

  ![Waalaxy](https://img.shields.io/badge/Waalaxy-Integration-5C5CFF?style=for-the-badge)
  ![n8n](https://img.shields.io/badge/n8n-Community%20Node-FF6D5A?style=for-the-badge)
  ![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)

  This is an n8n community node that integrates [Waalaxy](https://waalaxy.com?o=n8n) with your n8n workflows. Waalaxy is a LinkedIn automation tool that helps you automate your prospecting and outreach campaigns.

  ## Table of Contents

  - [Features](#features)
  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Operations](#operations)
    - [Prospect](#prospect)
  - [Usage Examples](#usage-examples)
  - [Development](#development)
  - [Resources](#resources)
  - [License](#license)

  ## Features

  - 🚀 **Add Prospects** — Import prospects into Waalaxy from any source via n8n
  - 📋 **Prospect Lists** — Dynamically select and manage prospect lists
  - 🎯 **Campaign Integration** — Automatically add prospects to campaigns
  - 🔄 **Duplicate Handling** — Control how duplicates are managed

  ## Installation

  ### Community Nodes (Recommended)

  1. Open your n8n instance
  2. Go to **Settings** > **Community Nodes**
  3. Select **Install**
  4. Enter `@waapi/n8n-nodes-waalaxy` in the input field
  5. Agree to the risks of using community nodes
  6. Click **Install**

  ### Manual Installation

  To install this node manually, run the following command in your n8n installation directory:

  ```bash
  npm install @waapi/n8n-nodes-waalaxy
  ```

  Then restart your n8n instance.

  ## Credentials

  Before using this node, you need to configure your Waalaxy API credentials.

  ### Setting Up Credentials

  1. In n8n, go to **Credentials** > **New Credential**
  2. Search for **Waalaxy API**
  3. Enter your **Access Token**
  4. Click **Save**

  ### Obtaining Your Access Token

  1. First, you need to [create Waalaxy account](https://waalaxy.com?o=n8n)
  1. Log in to your Waalaxy account
  1. Navigate to your Settings, [Integrations section](https://app.waalaxy.com/settings/crm-sync)
  1. Generate an access token
  1. Copy the token and paste it into n8n

  > **Note:** Keep your access token secure and never share it publicly.

  ## Operations

  ### Prospect

  #### Add to List and Campaign

  Add prospects to a prospect list and optionally enroll them in a campaign.

  | Parameter                     | Type       | Required | Description                                      |
  | ----------------------------- | ---------- | -------- | ------------------------------------------------ |
  | Prospect List                 | Select     | Yes      | The prospect list to add prospects to            |
  | Campaign                      | Select     | No       | Optional campaign to enroll prospects in         |
  | Prospects                     | Collection | Yes      | List of prospects to add                         |
  | Move Duplicates to Other List | Boolean    | No       | Whether to move duplicates to the specified list |
  | Can Create Duplicates         | Boolean    | No       | Whether to allow creating duplicate prospects    |

  **Prospect Fields:**

  | Field                | Type       | Required | Description                                            |
  | -------------------- | ---------- | -------- | ------------------------------------------------------ |
  | LinkedIn URL         | String     | Yes      | The LinkedIn profile URL of the prospect               |
  | First Name           | String     | No       | First name of the prospect                             |
  | Last Name            | String     | No       | Last name of the prospect                              |
  | Email                | String     | No       | Email address of the prospect                          |
  | Company Name         | String     | No       | The name of the prospect's company                     |
  | Company LinkedIn URL | String     | No       | The LinkedIn URL of the prospect's company             |
  | Company Website      | String     | No       | The website of the prospect's company                  |
  | Occupation           | String     | No       | The occupation of the prospect                         |
  | Region               | String     | No       | The region/location of the prospect                    |
  | Birthday Day         | Number     | No       | The day of the month of the prospect's birthday (1-31) |
  | Birthday Month       | Number     | No       | The month of the prospect's birthday (1-12)            |
  | Phone Numbers        | Collection | No       | Phone numbers with type (Mobile, Work, Home, Other)    |
  | Custom Variables     | Collection | No       | Key-value pairs to attach custom variables to the prospect (label + value) |

  **Custom Variable Fields:**

  | Field | Type   | Required | Description              |
  | ----- | ------ | -------- | ------------------------ |
  | Label | String | Yes      | The name of the variable |
  | Value | String | Yes      | The value of the variable |

  ## Usage Examples

  ### Example 1: Bulk Import from Google Sheets

  1. **Google Sheets node** — Read prospect data from a spreadsheet
  2. **Waalaxy node** — Add prospects to your list and campaign

  ```
  [Google Sheets] → [Waalaxy: Add to List and Campaign]
  ```

  ### Example 2: Webhook Integration

  Automatically add new leads to Waalaxy when a form is submitted:

  ```
  [Webhook Trigger] → [Waalaxy: Add to List and Campaign]
  ```

  ### Example 3: CRM Integration

  Sync prospects from your CRM to Waalaxy campaigns:

  ```
  [HubSpot/Salesforce] → [Filter] → [Waalaxy: Add to List and Campaign]
  ```

  ## Development

  ### Prerequisites

  - Node.js (v18 or higher recommended)
  - npm or pnpm
  - n8n installed locally for testing

  ### Setup

  1. Clone the repository:

  ```bash
  git clone https://github.com/Waapi-Pro/n8n-nodes-waalaxy.git
  cd n8n-nodes-waalaxy
  ```

  2. Install dependencies:

  ```bash
  npm install
  ```

  3. Build the project:

  ```bash
  npm run build
  ```

  ### Available Scripts

  | Script                | Description                           |
  | --------------------- | ------------------------------------- |
  | `npm run build`       | Build the node for production         |
  | `npm run build:watch` | Build with watch mode for development |
  | `npm run dev`         | Start development mode                |
  | `npm run lint`        | Run ESLint to check for code issues   |
  | `npm run lint:fix`    | Automatically fix linting issues      |
  | `npm run release`     | Create a new release                  |

  ### Testing Locally

  To test the node locally with n8n:

  1. Build the node:

  ```bash
  npm run build
  ```

  2. Link the node to your global n8n installation:

  ```bash
  npm link
  ```

  3. In your n8n directory, link the package:

  ```bash
  npm link @waapi/n8n-nodes-waalaxy
  ```

  4. Start n8n:

  ```bash
  n8n start
  ```

  Alternatively, use the development mode:

  ```bash
  npm run dev
  ```

  ### Project Structure

  ```
  n8n-nodes-waalaxy/
  ├── credentials/
  │   └── WaalaxyApi.credentials.ts    # API credentials configuration
  ├── nodes/
  │   └── Waalaxy/
  │       ├── listSearch/              # Dynamic list loading functions
  │       │   ├── getCampaigns.ts      # Fetch available campaigns
  │       │   └── getProspectLists.ts  # Fetch available prospect lists
  │       ├── resources/
  │       │   └── prospect/            # Prospect resource operations
  │       │       ├── index.ts
  │       │       └── addToListAndCampaign.ts
  │       ├── shared/
  │       │   ├── descriptions.ts      # Shared UI components
  │       │   └── transport.ts         # API request helper
  │       ├── Waalaxy.node.ts          # Main node definition
  │       └── Waalaxy.node.json        # Node metadata
  ├── icons/                           # Node icons (light/dark themes)
  ├── dist/                            # Compiled output
  ├── package.json
  └── tsconfig.json
  ```

  ## Support

  If you encounter any issues or have questions:

  - Open an issue on [GitHub](https://github.com/Waapi-Pro/n8n-nodes-waalaxy/issues)
  - Contact the author at fabien.turgut@waalaxy.com

ai_documentation_summary:
  {"purpose":"This n8n community node integrates Waalaxy, a LinkedIn automation tool, to automate prospecting and outreach campaigns by adding prospects to lists and campaigns.","capabilities":["Import prospects from various data sources (Google Sheets, Webhooks, CRM)","Add prospects to Waalaxy prospect lists","Enroll prospects in specific campaigns","Handle duplicate prospect management","Support bulk prospect imports with optional fields (name, email, company, occupation, etc.)"],"authentication":"API key required (Waalaxy Access Token)","commonUseCases":["Bulk importing prospect data from spreadsheets","Automating lead capture from web forms","Syncing prospect data from CRMs like HubSpot or Salesforce"],"limitations":["Community node (requires user acceptance of risks)","Manual installation requires npm and n8n restart","Prospect data must be provided via LinkedIn URL"],"relatedNodes":["Google Sheets","Webhook","HubSpot","Salesforce","Filter"]}


node_type: n8n-nodes-dataforseo.dataForSeo
package_name: n8n-nodes-dataforseo
display_name: DataForSEO
description: DataForSEO
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: dataforseo
author_github_url: https://github.com/dataforseo/
npm_package_name: n8n-nodes-dataforseo
npm_version: 1.6.2
community_fetched_at: 2026-07-14T14:40:33.492Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "backlinks",
      "options": [
        {
          "name": "Backlink",
          "value": "backlinks"
        },
        {
          "name": "SERP",
          "value": "serp"
        },
        {
          "name": "Business Data",
          "value": "business_data"
        },
        {
          "name": "On Page",
          "value": "on_page"
        },
        {
          "name": "Keywords Data",
          "value": "keywords_data"
        },
        {
          "name": "Labs",
          "value": "labs"
        },
        {
          "name": "AI Optimization",
          "value": "ai_optimization"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-backlinks",
      "options": [
        {
          "name": "Get Backlinks",
          "value": "get-backlinks",
          "action": "Get backlinks",
          "description": "Get a list of backlinks for a domain, subdomain or page"
        },
        {
          "name": "Get Backlink Summary",
          "value": "get-backlink-summary",
          "action": "Get backlink summary",
          "description": "Get an overview of backlink data for a domain, subdomain, or webpage"
        },
        {
          "name": "Get Historical Backlink Summary",
          "value": "get-historical-backlink-summary",
          "action": "Get historical backlink summary",
          "description": "Get historical backlink data for a domain back to the beginning of 2019"
        },
        {
          "name": "Get Bulk Backlink Rank",
          "value": "get-bulk-backlink-rank",
          "action": "Get bulk backlink rank",
          "description": "Get rank scores for up to 1,000 domains, subdomains, and pages"
        },
        {
          "name": "Get Bulk Backlink Stats",
          "value": "get-bulk-backlink-stats",
          "action": "Get bulk backlink stats",
          "description": "Get the number of backlinks for up to 1,000 domains, subdomains, and pages"
        },
        {
          "name": "Get Backlinks Pages Summary",
          "value": "get-backlinks-page-summary",
          "action": "Get backlinks pages summary",
          "description": "Get an overview of backlinks and associated data in bulk"
        },
        {
          "name": "Get Bulk Referring Domain Stats",
          "value": "get-bulk-referring-domain-stats",
          "action": "Get bulk referring domain stats",
          "description": "Get the number of referring domains for up to 1,000 domains, subdomains, and pages"
        },
        {
          "name": "Get Referring Domains",
          "value": "get-referring-domains",
          "action": "Get referring domains",
          "description": "Get a detailed overview of referring domains pointing to the target you specify"
        },
        {
          "name": "Get Bulk Spam Scores",
          "value": "get-bulk-spam-scores",
          "action": "Get bulk spam scores",
          "description": "Get Spam Scores for up to 1,000 domains, subdomains, and pages"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "backlinks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-parsed-serp",
      "options": [
        {
          "name": "Get Parsed SERP",
          "value": "get-parsed-serp",
          "action": "Get parsed serp",
          "description": "Get Google Search results for the specified keyword"
        },
        {
          "name": "Get Finance Explore",
          "value": "get-finance-explore",
          "action": "Get finance explore",
          "description": "Get real-time data from the ‘Explore’ tab of Google Finance"
        },
        {
          "name": "Get Finance Markets",
          "value": "get-finance-markets",
          "action": "Get finance markets",
          "description": "Get real-time data from the ‘Markets’ tab of Google Finance"
        },
        {
          "name": "Get Finance Quote",
          "value": "get-finance-quote",
          "action": "Get finance quote",
          "description": "Get real-time data from the ‘Quote’ tab of Google Finance"
        },
        {
          "name": "Search Google Finance Tickers",
          "value": "search-google-finance-tickers",
          "action": "Search google finance tickers",
          "description": "Search by company name, market, or financial instrument to get Google Finance data on stocks, futures, and asset pairs, their value, growth trends, and identifiers"
        },
        {
          "name": "Get Google AI Mode SERP",
          "value": "get-google-ai-mode-serp",
          "action": "Get google ai mode serp",
          "description": "Get search results from the AI Mode feature of Google Search"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-business-listings",
      "options": [
        {
          "name": "Get Business Listings",
          "value": "get-business-listings",
          "action": "Get business listings",
          "description": "Get information about businesses listed on Google Maps in the specified categories"
        },
        {
          "name": "Get Business Listings Categories Aggregation",
          "value": "get-business-listings-categories-aggregation",
          "action": "Get business listings categories aggregation",
          "description": "Get data about groups of related business categories along with the number of entities in each category"
        },
        {
          "name": "Get Google Reviews",
          "value": "get-google-reviews",
          "action": "Get google reviews",
          "description": "Fetch reviews and related data from millions of Google Business Profiles around the world"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "business_data"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-page-audit-check",
      "options": [
        {
          "name": "Get Page Audit Check",
          "value": "get-page-audit-check",
          "action": "Get page audit check",
          "description": "Run an essential SEO Audit of a page"
        },
        {
          "name": "Parse Page Content",
          "value": "parse-page-content",
          "action": "Parse page content",
          "description": "Get parsed and structured content of any page, including link URLs, anchors, headings, and text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "on_page"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-google-search-volume",
      "options": [
        {
          "name": "Get Google Search Volume",
          "value": "get-google-search-volume",
          "action": "Get google search volume",
          "description": "Get search volume, CPC, and competition for keywords"
        },
        {
          "name": "Get Keywords for Keywords",
          "value": "get-keywords-for-keywords",
          "action": "Get keywords for keywords",
          "description": "Get relevant keyword suggestions for the specified terms"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "keywords_data"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-domain-rank-overview",
      "options": [
        {
          "name": "Get Domain Rank Overview",
          "value": "get-domain-rank-overview",
          "action": "Get domain rank overview",
          "description": "Get ranking and traffic data from organic search for a domain"
        },
        {
          "name": "Get Keyword Suggestions",
          "value": "get-keyword-suggestions",
          "action": "Get keyword suggestions",
          "description": "Get search terms that are relevant to the product or service categories of all the specified keywords"
        },
        {
          "name": "Get Ranked Keywords",
          "value": "get-ranked-keywords",
          "action": "Get ranked keywords",
          "description": "Get the list of keywords that any domain or webpage is ranking for"
        },
        {
          "name": "Get Keyword Difficulty",
          "value": "get-keyword-difficulty",
          "action": "Get keyword difficulty",
          "description": "Get Keyword Difficulty for the specified keywords"
        },
        {
          "name": "Get Organic Traffic Stats",
          "value": "get-organic-traffic-stats",
          "action": "Get organic traffic stats",
          "description": "Get an estimation of monthly organic traffic for a website or page"
        },
        {
          "name": "Get Historical Traffic Stats",
          "value": "get-historical-traffic-stats",
          "action": "Get historical traffic stats",
          "description": "Get a historical estimate of organic traffic for a website or page"
        },
        {
          "name": "Get Keyword Ideas",
          "value": "get-keyword-ideas",
          "action": "Get keyword ideas",
          "description": "Get search terms that fall into the same Google product or service category as the specified keywords"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "labs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-ai-keyword-search-volume",
      "options": [
        {
          "name": "Get AI Keyword Search Volume",
          "value": "get-ai-keyword-search-volume",
          "action": "Get AI keyword search volume",
          "description": "Get search volume data for target keywords based on their estimated usage in AI tools"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ai_optimization"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Backlinks",
      "value": "get-backlinks",
      "action": "Get backlinks",
      "description": "Get a list of backlinks for a domain, subdomain or page",
      "resource": "backlinks"
    },
    {
      "name": "Get Backlink Summary",
      "value": "get-backlink-summary",
      "action": "Get backlink summary",
      "description": "Get an overview of backlink data for a domain, subdomain, or webpage",
      "resource": "backlinks"
    },
    {
      "name": "Get Historical Backlink Summary",
      "value": "get-historical-backlink-summary",
      "action": "Get historical backlink summary",
      "description": "Get historical backlink data for a domain back to the beginning of 2019",
      "resource": "backlinks"
    },
    {
      "name": "Get Bulk Backlink Rank",
      "value": "get-bulk-backlink-rank",
      "action": "Get bulk backlink rank",
      "description": "Get rank scores for up to 1,000 domains, subdomains, and pages",
      "resource": "backlinks"
    },
    {
      "name": "Get Bulk Backlink Stats",
      "value": "get-bulk-backlink-stats",
      "action": "Get bulk backlink stats",
      "description": "Get the number of backlinks for up to 1,000 domains, subdomains, and pages",
      "resource": "backlinks"
    },
    {
      "name": "Get Backlinks Pages Summary",
      "value": "get-backlinks-page-summary",
      "action": "Get backlinks pages summary",
      "description": "Get an overview of backlinks and associated data in bulk",
      "resource": "backlinks"
    },
    {
      "name": "Get Bulk Referring Domain Stats",
      "value": "get-bulk-referring-domain-stats",
      "action": "Get bulk referring domain stats",
      "description": "Get the number of referring domains for up to 1,000 domains, subdomains, and pages",
      "resource": "backlinks"
    },
    {
      "name": "Get Referring Domains",
      "value": "get-referring-domains",
      "action": "Get referring domains",
      "description": "Get a detailed overview of referring domains pointing to the target you specify",
      "resource": "backlinks"
    },
    {
      "name": "Get Bulk Spam Scores",
      "value": "get-bulk-spam-scores",
      "action": "Get bulk spam scores",
      "description": "Get Spam Scores for up to 1,000 domains, subdomains, and pages",
      "resource": "backlinks"
    },
    {
      "name": "Get Parsed SERP",
      "value": "get-parsed-serp",
      "action": "Get parsed serp",
      "description": "Get Google Search results for the specified keyword",
      "resource": "serp"
    },
    {
      "name": "Get Finance Explore",
      "value": "get-finance-explore",
      "action": "Get finance explore",
      "description": "Get real-time data from the ‘Explore’ tab of Google Finance",
      "resource": "serp"
    },
    {
      "name": "Get Finance Markets",
      "value": "get-finance-markets",
      "action": "Get finance markets",
      "description": "Get real-time data from the ‘Markets’ tab of Google Finance",
      "resource": "serp"
    },
    {
      "name": "Get Finance Quote",
      "value": "get-finance-quote",
      "action": "Get finance quote",
      "description": "Get real-time data from the ‘Quote’ tab of Google Finance",
      "resource": "serp"
    },
    {
      "name": "Search Google Finance Tickers",
      "value": "search-google-finance-tickers",
      "action": "Search google finance tickers",
      "description": "Search by company name, market, or financial instrument to get Google Finance data on stocks, futures, and asset pairs, their value, growth trends, and identifiers",
      "resource": "serp"
    },
    {
      "name": "Get Google AI Mode SERP",
      "value": "get-google-ai-mode-serp",
      "action": "Get google ai mode serp",
      "description": "Get search results from the AI Mode feature of Google Search",
      "resource": "serp"
    },
    {
      "name": "Get Business Listings",
      "value": "get-business-listings",
      "action": "Get business listings",
      "description": "Get information about businesses listed on Google Maps in the specified categories",
      "resource": "business_data"
    },
    {
      "name": "Get Business Listings Categories Aggregation",
      "value": "get-business-listings-categories-aggregation",
      "action": "Get business listings categories aggregation",
      "description": "Get data about groups of related business categories along with the number of entities in each category",
      "resource": "business_data"
    },
    {
      "name": "Get Google Reviews",
      "value": "get-google-reviews",
      "action": "Get google reviews",
      "description": "Fetch reviews and related data from millions of Google Business Profiles around the world",
      "resource": "business_data"
    },
    {
      "name": "Get Page Audit Check",
      "value": "get-page-audit-check",
      "action": "Get page audit check",
      "description": "Run an essential SEO Audit of a page",
      "resource": "on_page"
    },
    {
      "name": "Parse Page Content",
      "value": "parse-page-content",
      "action": "Parse page content",
      "description": "Get parsed and structured content of any page, including link URLs, anchors, headings, and text",
      "resource": "on_page"
    },
    {
      "name": "Get Google Search Volume",
      "value": "get-google-search-volume",
      "action": "Get google search volume",
      "description": "Get search volume, CPC, and competition for keywords",
      "resource": "keywords_data"
    },
    {
      "name": "Get Keywords for Keywords",
      "value": "get-keywords-for-keywords",
      "action": "Get keywords for keywords",
      "description": "Get relevant keyword suggestions for the specified terms",
      "resource": "keywords_data"
    },
    {
      "name": "Get Domain Rank Overview",
      "value": "get-domain-rank-overview",
      "action": "Get domain rank overview",
      "description": "Get ranking and traffic data from organic search for a domain",
      "resource": "labs"
    },
    {
      "name": "Get Keyword Suggestions",
      "value": "get-keyword-suggestions",
      "action": "Get keyword suggestions",
      "description": "Get search terms that are relevant to the product or service categories of all the specified keywords",
      "resource": "labs"
    },
    {
      "name": "Get Ranked Keywords",
      "value": "get-ranked-keywords",
      "action": "Get ranked keywords",
      "description": "Get the list of keywords that any domain or webpage is ranking for",
      "resource": "labs"
    },
    {
      "name": "Get Keyword Difficulty",
      "value": "get-keyword-difficulty",
      "action": "Get keyword difficulty",
      "description": "Get Keyword Difficulty for the specified keywords",
      "resource": "labs"
    },
    {
      "name": "Get Organic Traffic Stats",
      "value": "get-organic-traffic-stats",
      "action": "Get organic traffic stats",
      "description": "Get an estimation of monthly organic traffic for a website or page",
      "resource": "labs"
    },
    {
      "name": "Get Historical Traffic Stats",
      "value": "get-historical-traffic-stats",
      "action": "Get historical traffic stats",
      "description": "Get a historical estimate of organic traffic for a website or page",
      "resource": "labs"
    },
    {
      "name": "Get Keyword Ideas",
      "value": "get-keyword-ideas",
      "action": "Get keyword ideas",
      "description": "Get search terms that fall into the same Google product or service category as the specified keywords",
      "resource": "labs"
    },
    {
      "name": "Get AI Keyword Search Volume",
      "value": "get-ai-keyword-search-volume",
      "action": "Get AI keyword search volume",
      "description": "Get search volume data for target keywords based on their estimated usage in AI tools",
      "resource": "ai_optimization"
    }
  ]

npm_readme:
  DataForSEO Node for n8n
  ==========

  With the DataForSEO node in n8n, you can retrieve marketing and SEO data, such as Google rankings, keyword suggestions, backlink reports, etc., through the DataForSEO API.

  To use the DataForSEO node, you must have a DataForSEO account. You can create an account at [dataforseo.com](https://dataforseo.com/).

  Refer to the [DataForSEO API documentation](https://docs.dataforseo.com/v3/) for the list of available endpoints.

  ## Contents
  - [Connect DataForSEO to n8n](#connect-dataforseo-to-n8n)
  - [Available DataForSEO Operations](#available-dataforseo-operations)
  - [Example DataForSEO Workflow Configurations](#example-dataforseo-workflow-configurations)


  Connect DataForSEO to n8n
  --------------------------

  ## Prerequisites

  - DataForSEO account
  - n8n installed or cloud account

  ## Setup

  To establish the connection, you must:

  1.  [Obtain your DataForSEO API credentials.](#obtain-your-dataforseo-api-credentials "Obtain Your DataForSEO API Credentials")
      
  2.  [Establish the connection in n8n.](#establish-the-connection-with-dataforseo-in-n8n "Establish the connection with DataForSEO in n8n")
      

  ### Obtain Your DataForSEO API Credentials

  To obtain your DataForSEO API credentials (API login and password):

  1.  Log in to your DataForSEO account dashboard.
      
  2.  In the left sidebar, click **API Access**.
      
  3.  Copy the **API Login** and **API Password** values shown and store them in a safe place. 

  Note that the API password is visible for the first 24 hours after registration. Later, you can request the password by clicking “Send by e-mail,” then copy the credentials from it.


  Enter these values in the **API Login** and **API Password** fields in n8n.

  ### Establish the connection with DataForSEO in n8n

  To establish the connection in n8n:

  1.  Log in to your n8n account, add a DataForSEO node to your workflow, and click **Create new credential**.
      
  2.  Optional: Rename the credential.
      
  3.  In the **API Login** and **API Password** fields, enter the values copied above.
      
  4.  Click **Save**.
      

  You have successfully established the connection. You can now build workflows using DataForSEO operations.


  Available DataForSEO Operations
  --------------------------

  After connecting the app, you can perform the following operations:

  ## DataForSEO SERP API

  ### Google
  + [Get Live Google Organic SERP Regular](https://docs.dataforseo.com/v3/serp/google/organic/live/regular/?bash)
  + [Get Live Google Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/google/organic/live/advanced/?bash)
  + [Get Live Google Organic SERP HTML](https://docs.dataforseo.com/v3/serp/google/organic/live/html/?bash)
  + [Get Google Organic SERP Regular](https://docs.dataforseo.com/v3/serp/google/organic/task_get/regular/?bash)
  + [Get Google Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/google/organic/task_get/advanced/?bash)
  + [Get Google Organic SERP HTML](https://docs.dataforseo.com/v3/serp/google/organic/task_get/html/?bash)
  + [Get Live Google AI Mode SERP Advanced](https://docs.dataforseo.com/v3/serp/google/ai_mode/live/advanced/?bash)
  + [Get Live Google AI Mode SERP HTML](https://docs.dataforseo.com/v3/serp/google/ai_mode/live/html/?bash)
  + [Get Google AI Mode SERP Advanced](https://docs.dataforseo.com/v3/serp/google/ai_mode/task_get/advanced/?bash)
  + [Get Google AI Mode SERP HTML](https://docs.dataforseo.com/v3/serp/google/ai_mode/task_get/html/?bash)
  + [Get Live Google Maps SERP Advanced](https://docs.dataforseo.com/v3/serp/google/maps/live/advanced/?bash)
  + [Get Google Maps SERP Advanced](https://docs.dataforseo.com/v3/serp/google/maps/task_get/advanced/?bash)
  + [Get Live Google Local Finder SERP Advanced](https://docs.dataforseo.com/v3/serp/google/local_finder/live/advanced/?bash)
  + [Get Live Google Local Finder SERP HTML](https://docs.dataforseo.com/v3/serp/google/local_finder/live/html/?bash)
  + [Get Google Local Finder SERP Advanced](https://docs.dataforseo.com/v3/serp/google/local_finder/task_get/advanced/?bash)
  + [Get Google Local Finder SERP HTML](https://docs.dataforseo.com/v3/serp/google/local_finder/task_get/html/?bash)
  + [Get Live Google News SERP Advanced](https://docs.dataforseo.com/v3/serp/google/news/live/advanced/?bash)
  + [Get Live Google News SERP HTML](https://docs.dataforseo.com/v3/serp/google/news/live/html/?bash)
  + [Get Google News SERP Advanced](https://docs.dataforseo.com/v3/serp/google/news/task_get/advanced/?bash)
  + [Get Google News SERP HTML](https://docs.dataforseo.com/v3/serp/google/news/task_get/html/?bash)
  + [Get Live Google Events SERP Advanced](https://docs.dataforseo.com/v3/serp/google/events/live/advanced/?bash)
  + [Get Google Events SERP Advanced](https://docs.dataforseo.com/v3/serp/google/events/task_get/advanced/?bash)
  + [Get Live Google Images SERP Advanced](https://docs.dataforseo.com/v3/serp/google/images/live/advanced/?bash)
  + [Get Live Google Images SERP HTML](https://docs.dataforseo.com/v3/serp/google/images/live/html/?bash)
  + [Get Google Images SERP Advanced](https://docs.dataforseo.com/v3/serp/google/images/task_get/advanced/?bash)
  + [Get Google Images SERP HTML](https://docs.dataforseo.com/v3/serp/google/images/task_get/html/?bash)
  + [Get Google Search By Image SERP Advanced](https://docs.dataforseo.com/v3/serp/google/search_by_image/task_get/advanced/?bash)
  + [Get Google Search By Image SERP HTML](https://docs.dataforseo.com/v3/serp/google/search_by_image/task_get/html/?bash)
  + [Get Google Jobs SERP Advanced](https://docs.dataforseo.com/v3/serp/google/jobs/task_get/advanced/?bash)
  + [Get Google Jobs SERP HTML](https://docs.dataforseo.com/v3/serp/google/jobs/task_get/html/?bash)
  + [Get Live Google Autocomplete SERP Advanced](https://docs.dataforseo.com/v3/serp/google/autocomplete/live/advanced/?bash)
  + [Get Google Autocomplete SERP Advanced](https://docs.dataforseo.com/v3/serp/google/autocomplete/task_get/advanced/?bash)
  + [Get Live Google Dataset Search SERP Advanced](https://docs.dataforseo.com/v3/serp/google/dataset_search/live/advanced/?bash)
  + [Get Google Dataset Search SERP Advanced](https://docs.dataforseo.com/v3/serp/google/dataset_search/task_get/advanced/?bash)
  + [Get Live Google Dataset Info Advanced](https://docs.dataforseo.com/v3/serp/google/dataset_info/live/advanced/?bash)
  + [Get Google Dataset Info Advanced](https://docs.dataforseo.com/v3/serp/google/dataset_info/task_get/advanced/?bash)
  + [Get Live Google Ads Advertisers SERP Advanced](https://docs.dataforseo.com/v3/serp/google/ads_advertisers/live/advanced/?bash)
  + [Get Google Ads Advertisers SERP Advanced](https://docs.dataforseo.com/v3/serp/google/ads_advertisers/task_get/advanced/?bash)
  + [Get Live Google Ads Search Advanced](https://docs.dataforseo.com/v3/serp/google/ads_search/live/advanced/?bash)
  +[Get Google Ads Search Advanced](https://docs.dataforseo.com/v3/serp/google/ads_search/task_get/advanced/?bash)
  + [Get Live Finance Explore SERP Advanced](https://docs.dataforseo.com/v3/serp/google/finance_explore/live/advanced/?bash)
  + [Get Live Finance Explore SERP HTML](https://docs.dataforseo.com/v3/serp/google/finance_explore/live/html/?bash)
  + [Get Finance Explore SERP Advanced](https://docs.dataforseo.com/v3/serp/google/finance_explore/task_get/advanced/?bash)
  + [Get Finance Explore SERP HTML](https://docs.dataforseo.com/v3/serp/google/finance_explore/task_get/html/?bash)
  + [Get Live Finance Markets SERP Advanced](https://docs.dataforseo.com/v3/serp/google/finance_markets/live/advanced/?bash)
  + [Get Live Finance Markets SERP HTML](https://docs.dataforseo.com/v3/serp/google/finance_markets/live/html/?bash)
  + [Get Finance Markets SERP Advanced](https://docs.dataforseo.com/v3/serp/google/finance_markets/task_get/advanced/?bash)
  + [Get Finance Markets SERP HTML](https://docs.dataforseo.com/v3/serp/google/finance_markets/task_get/html/?bash)
  + [Get Live Finance Quote SERP Advanced](https://docs.dataforseo.com/v3/serp/google/finance_quote/live/advanced/?bash)
  + [Get Live Finance Quote SERP HTML](https://docs.dataforseo.com/v3/serp/google/finance_quote/live/html/?bash)
  + [Get Finance Quote SERP Advanced](https://docs.dataforseo.com/v3/serp/google/finance_quote/task_get/advanced/?bash)
  + [Get Finance Quote SERP HTML](https://docs.dataforseo.com/v3/serp/google/finance_quote/task_get/html/?bash)
  + [Get Live Finance Ticker Search Advanced](https://docs.dataforseo.com/v3/serp/google/finance_ticker_search/live/advanced/?bash)
  + [Get Finance Ticker Search Advanced](https://docs.dataforseo.com/v3/serp/google/finance_ticker_search/task_get/advanced/?bash)

  ### Bing
  + [Get Live Bing Organic SERP Regular](https://docs.dataforseo.com/v3/serp/bing/organic/live/regular/?bash)
  + [Get Live Bing Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/bing/organic/live/advanced/?bash)
  + [Get Live Bing Organic SERP HTML](https://docs.dataforseo.com/v3/serp/bing/organic/live/html/?bash)
  + [Get Bing Organic SERP Regular](https://docs.dataforseo.com/v3/serp/bing/organic/task_get/regular/?bash)
  + [Get Bing Organic SERP HTML](https://docs.dataforseo.com/v3/serp/bing/organic/task_get/html/?bash)
  + [Get Live Bing Local Finder SERP Regular](https://docs.dataforseo.com/v3/serp/bing/organic/task_get/regular/?bash)
  + [Get Live Bing Local Finder SERP HTML](https://docs.dataforseo.com/v3/serp/bing/organic/task_get/html/?bash)

  ### YouTube
  + [Get Live YouTube Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/youtube/organic/live/advanced/?bash)
  + [Get YouTube Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/youtube/organic/task_get/advanced/?bash)
  + [Get Live YouTube Video Info Advanced](https://docs.dataforseo.com/v3/serp/youtube/video_info/live/advanced/?bash)
  + [Get YouTube Video Info Advanced](https://docs.dataforseo.com/v3/serp/youtube/video_info/task_get/advanced/?bash)
  + [Get Live YouTube Subtitles Advanced](https://docs.dataforseo.com/v3/serp/youtube/video_subtitles/live/advanced/?bash)
  + [Get YouTube Subtitles Advanced](https://docs.dataforseo.com/v3/serp/youtube/video_subtitles/task_get/advanced/?bash)
  + [Get Live YouTube Comments Advanced](https://docs.dataforseo.com/v3/serp/youtube/video_comments/live/advanced/?bash)
  + [Get YouTube Comments Advanced](https://docs.dataforseo.com/v3/serp/youtube/video_comments/task_get/advanced/?bash)

  ### Yahoo
  + [Get Live Yahoo Organic SERP Regular](https://docs.dataforseo.com/v3/serp/yahoo/organic/live/regular/?bash)
  + [Get Live Yahoo Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/yahoo/organic/live/advanced/?bash)
  + [Get Live Yahoo Organic SERP HTML](https://docs.dataforseo.com/v3/serp/yahoo/organic/live/html/?bash)
  + [Get Yahoo Organic SERP Regular](https://docs.dataforseo.com/v3/serp/yahoo/organic/task_get/regular/?bash)
  + [Get Yahoo Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/yahoo/organic/task_get/advanced/?bash)
  + [Get Yahoo Organic SERP HTML](https://docs.dataforseo.com/v3/serp/yahoo/organic/task_get/html/?bash)

  ### Baidu
  + [Get Baidu Organic SERP Regular](https://docs.dataforseo.com/v3/serp/baidu/organic/task_get/regular/?bash)
  + [Get Baidu Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/baidu/organic/task_get/advanced/?bash)
  + [Get Baidu Organic SERP HTML](https://docs.dataforseo.com/v3/serp/baidu/organic/task_get/html/?bash)

  ### Naver
  + [Get Naver Organic SERP Regular](https://docs.dataforseo.com/v3/serp/naver/organic/task_get/regular/?bash)
  + [Get Naver Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/naver/organic/task_get/advanced/?bash)
  + [Get Naver Organic SERP HTML](https://docs.dataforseo.com/v3/serp/naver/organic/task_get/html/?bash)

  ### Seznam
  + [Get Seznam Organic SERP Regular](https://docs.dataforseo.com/v3/serp/seznam/organic/task_get/regular/?bash)
  + [Get Seznam Organic SERP Advanced](https://docs.dataforseo.com/v3/serp/seznam/organic/task_get/advanced/?bash)
  + [Get Seznam Organic SERP HTML](https://docs.dataforseo.com/v3/serp/seznam/organic/task_get/html/?bash)


  ## DataForSEO Keywords Data API

  ### Google Ads
  + [Get Live Google Search Volume](https://docs.dataforseo.com/v3/keywords_data/google_ads/search_volume/live/?bash)
  + [Get Google Search Volume](https://docs.dataforseo.com/v3/keywords_data/google_ads/search_volume/task_get/?bash)
  + [Get Live Google Keywords for Site](https://docs.dataforseo.com/v3/keywords_data/google_ads/keywords_for_site/live/?bash)
  + [Get Google Keywords for Site](https://docs.dataforseo.com/v3/keywords_data/google_ads/keywords_for_site/task_get/?bash)
  + [Get Live Google Keywords for Keywords](https://docs.dataforseo.com/v3/keywords_data/google_ads/keywords_for_keywords/live/?bash)
  + [Get Google Keywords for Keywords](https://docs.dataforseo.com/v3/keywords_data/google_ads/keywords_for_keywords/task_get/?bash)
  + [Get Live Google Ad Traffic By Keywords](https://docs.dataforseo.com/v3/keywords_data/google_ads/ad_traffic_by_keywords/live/?bash)
  + [Get Google Ad Traffic By Keywords](https://docs.dataforseo.com/v3/keywords_data/google_ads/ad_traffic_by_keywords/task_get/?bash)

  ### Bing Ads
  + [Get Live Bing Search Volume](https://docs.dataforseo.com/v3/keywords_data/bing/search_volume/live/?bash)
  + [Get Bing Search Volume](https://docs.dataforseo.com/v3/keywords_data/bing/search_volume/task_get/?bash)
  + [Get Live Bing Search Volume History](https://docs.dataforseo.com/v3/keywords_data/bing/search_volume_history/live/?bash)
  + [Get Bing Search Volume History](https://docs.dataforseo.com/v3/keywords_data/bing/search_volume_history/task_get/?bash)
  + [Get Live Bing Keywords for Site](https://docs.dataforseo.com/v3/keywords_data/bing/keywords_for_site/live/?bash)
  + [Get Bing Keywords for Site](https://docs.dataforseo.com/v3/keywords_data/bing/keywords_for_site/task_get/?bash)
  + [Get Live Bing Keywords for Keywords](https://docs.dataforseo.com/v3/keywords_data/bing/keywords_for_keywords/live/?bash)
  + [Get Bing Keywords for Keywords](https://docs.dataforseo.com/v3/keywords_data/bing/keywords_for_keywords/task_get/?bash)
  + [Get Live Bing Keyword Performance](https://docs.dataforseo.com/v3/keywords_data/bing/keyword_performance/live/?bash)
  + [Get Bing Keyword Performance](https://docs.dataforseo.com/v3/keywords_data/bing/keyword_performance/task_get/?bash)
  + [Get Live Bing Keyword Suggestions for URL](https://docs.dataforseo.com/v3/keywords_data/bing/keyword_suggestions_for_url/live/?bash)
  + [Get Bing Keyword Suggestions for URL](https://docs.dataforseo.com/v3/keywords_data/bing/keyword_suggestions_for_url/task_get/?bash)
  + [Get Live Bing Ads Audience Estimation](https://docs.dataforseo.com/v3/keywords_data/bing/audience_estimation/live/?bash)
  + [Get Bing Ads Audience Estimation](https://docs.dataforseo.com/v3/keywords_data/bing/audience_estimation/task_get/?bash)

  ### Google Trends
  + [Get Live Google Trends Explore](https://docs.dataforseo.com/v3/keywords_data/google_trends/explore/live/?bash)
  + [Get Google Trends Explore](https://docs.dataforseo.com/v3/keywords_data/google_trends/explore/task_get/?bash)

  ### DataForSEO Trends
  + [Get Live DataForSEO Trends Explore](https://docs.dataforseo.com/v3/keywords_data/dataforseo_trends/explore/live/?bash)
  + [Get Live DataForSEO Trends Subregion Interests](https://docs.dataforseo.com/v3/keywords_data/dataforseo_trends/subregion_interests/live/?bash)
  + [Get Live DataForSEO Trends Demography](https://docs.dataforseo.com/v3/keywords_data/dataforseo_trends/demography/live/?bash)
  + [Get Live DataForSEO Trends Merged Data](https://docs.dataforseo.com/v3/keywords_data/dataforseo_trends/merged_data/live/?bash)

  ### Clickstream Data
  + [Get Live DataForSEO Search Volume](https://docs.dataforseo.com/v3/keywords_data/clickstream_data/dataforseo_search_volume/live/?bash)
  + [Get Live Clickstream Global Search Volume](https://docs.dataforseo.com/v3/keywords_data/clickstream_data/global_search_volume/live/?bash)
  + [Get Live Bulk Clickstream Search Volume](https://docs.dataforseo.com/v3/keywords_data/clickstream_data/bulk_search_volume/live/?bash)

  ## DataForSEO Domain Analytics API

  ### Technologies
  + [Get Live Aggregation Technologies](https://docs.dataforseo.com/v3/domain_analytics/technologies/aggregation_technologies/live/?bash)
  + [Get Live Technologies Summary](https://docs.dataforseo.com/v3/domain_analytics/technologies/technologies_summary/live/?bash)
  + [Get Live Technology Stats](https://docs.dataforseo.com/v3/domain_analytics/technologies/technology_stats/live/?bash)
  + [Get Domains By Technology](https://docs.dataforseo.com/v3/domain_analytics/technologies/domains_by_technology/live/?bash)
  + [Get Domains By HTML Terms](https://docs.dataforseo.com/v3/domain_analytics/technologies/domains_by_html_terms/live/?bash)
  + [Get Live Domain Technologies](https://docs.dataforseo.com/v3/domain_analytics/technologies/domain_technologies/live/?bash)

  ### Whois
  + [Get Live Domain Whois Overview](https://docs.dataforseo.com/v3/domain_analytics/whois/overview/live/?bash)

  ## DataForSEO Labs API

  ### Google
  + [Get Keywords For Site](https://docs.dataforseo.com/v3/dataforseo_labs/google/keywords_for_site/live/?bash)
  + [Get Related Keywords](https://docs.dataforseo.com/v3/dataforseo_labs/google/related_keywords/live/?bash)
  + [Get Keyword Suggestions](https://docs.dataforseo.com/v3/dataforseo_labs/google/keyword_suggestions/live/?bash)
  + [Get Keyword Ideas](https://docs.dataforseo.com/v3/dataforseo_labs/google/keyword_ideas/live/?bash)
  + [Get Keyword Difficulty](https://docs.dataforseo.com/v3/dataforseo_labs/google/bulk_keyword_difficulty/live/?bash)
  + [Get Search Intent](https://docs.dataforseo.com/v3/dataforseo_labs/google/search_intent/live/?bash)
  + [Get Keyword Overview](https://docs.dataforseo.com/v3/dataforseo_labs/google/keyword_overview/live/?bash)
  + [Get Historical Keyword Data](https://docs.dataforseo.com/v3/dataforseo_labs/google/historical_keyword_data/live/?bash)
  + [Get Categories For Domain](https://docs.dataforseo.com/v3/dataforseo_labs/google/categories_for_domain/live/?bash)
  + [Get Categories For Keywords](https://docs.dataforseo.com/v3/dataforseo_labs/google/categories_for_keywords/live/?bash)
  + [Get Keywords For Categories](https://docs.dataforseo.com/v3/dataforseo_labs/google/keywords_for_categories/live/?bash)
  + [Get Domain Metrics By Categories](https://docs.dataforseo.com/v3/dataforseo_labs/google/domain_metrics_by_categories/live/?bash)
  + [Get Top Searches](https://docs.dataforseo.com/v3/dataforseo_labs/google/top_searches/live/?bash)
  + [Get SERP Competitors](https://docs.dataforseo.com/v3/dataforseo_labs/google/serp_competitors/live/?bash)
  + [Get Ranked Keywords](https://docs.dataforseo.com/v3/dataforseo_labs/google/ranked_keywords/live/?bash)
  + [Get Competitors Domain](https://docs.dataforseo.com/v3/dataforseo_labs/google/competitors_domain/live/?bash)
  + [Get Domain Intersection](https://docs.dataforseo.com/v3/dataforseo_labs/google/domain_intersection/live/?bash)
  + [Get Subdomains](https://docs.dataforseo.com/v3/dataforseo_labs/google/subdomains/live/?bash)
  + [Get Relevant Pages](https://docs.dataforseo.com/v3/dataforseo_labs/google/relevant_pages/live/?bash)
  + [Get Domain Rank Overview](https://docs.dataforseo.com/v3/dataforseo_labs/google/domain_rank_overview/live/?bash)
  + [Get Historical SERPs](https://docs.dataforseo.com/v3/dataforseo_labs/google/historical_serps/live/?bash)
  + [Get Historical Rank Overview](https://docs.dataforseo.com/v3/dataforseo_labs/google/historical_rank_overview/live/?bash)
  + [Get Page Intersection](https://docs.dataforseo.com/v3/dataforseo_labs/google/page_intersection/live/?bash)
  + [Get Bulk Traffic Estimation](https://docs.dataforseo.com/v3/dataforseo_labs/google/bulk_traffic_estimation/live/?bash)
  + [Get Historical Bulk Traffic Estimation](https://docs.dataforseo.com/v3/dataforseo_labs/google/historical_bulk_traffic_estimation/live/?bash)

  ### Amazon
  + [Get Bulk Search Volume](https://docs.dataforseo.com/v3/dataforseo_labs/amazon/bulk_search_volume/live/?bash)
  + [Get Related Keywords](https://docs.dataforseo.com/v3/dataforseo_labs/amazon/related_keywords/live/?bash)
  + [Get Ranked Keywords](https://docs.dataforseo.com/v3/dataforseo_labs/amazon/ranked_keywords/live/?bash)
  + [Get Product Rank Overview](https://docs.dataforseo.com/v3/dataforseo_labs/amazon/product_rank_overview/live/?bash)
  + [Get Product Competitors](https://docs.dataforseo.com/v3/dataforseo_labs/amazon/product_competitors/live/?bash)
  + [Get Product Keyword Intersections](https://docs.dataforseo.com/v3/dataforseo_labs/amazon/product_keyword_intersections/live/?bash)

  ### Bing
  + [Get Bulk Keyword Difficulty](https://docs.dataforseo.com/v3/dataforseo_labs/bing/bulk_keyword_difficulty/live/?bash)
  + [Get Bulk Traffic Estimation](https://docs.dataforseo.com/v3/dataforseo_labs/bing/bulk_traffic_estimation/live/?bash)
  + [Get Competitors Domain](https://docs.dataforseo.com/v3/dataforseo_labs/bing/competitors_domain/live/?bash)
  + [Get Domain Intersection](https://docs.dataforseo.com/v3/dataforseo_labs/bing/domain_intersection/live/?bash)
  + [Get Domain Rank Overview](https://docs.dataforseo.com/v3/dataforseo_labs/bing/domain_rank_overview/live/?bash)
  + [Get Page Intersection](https://docs.dataforseo.com/v3/dataforseo_labs/bing/page_intersection/live/?bash)
  + [Get Related Keywords](https://docs.dataforseo.com/v3/dataforseo_labs/bing/related_keywords/live/?bash)
  + [Get Relevant Pages](https://docs.dataforseo.com/v3/dataforseo_labs/bing/relevant_pages/live/?bash)
  + [Get SERP Competitors](https://docs.dataforseo.com/v3/dataforseo_labs/bing/serp_competitors/live/?bash)
  + [Get Subdomains](https://docs.dataforseo.com/v3/dataforseo_labs/bing/subdomains/live/?bash)

  ### Google Play
  + [Get Bulk App Metrics](https://docs.dataforseo.com/v3/dataforseo_labs/google/bulk_app_metrics/live/?bash)
  + [Get Keywords for App](https://docs.dataforseo.com/v3/dataforseo_labs/google/keywords_for_app/live/?bash)
  + [Get App Competitors](https://docs.dataforseo.com/v3/dataforseo_labs/google/app_competitors/live/?bash)
  + [Get App Intersection](https://docs.dataforseo.com/v3/dataforseo_labs/google/app_intersection/live/?bash)

  ### App Store
  + [Get Bulk App Metrics](https://docs.dataforseo.com/v3/dataforseo_labs/apple/bulk_app_metrics/live/?bash)
  + [Get Keywords for App](https://docs.dataforseo.com/v3/dataforseo_labs/apple/keywords_for_app/live/?bash)
  + [Get App Competitors](https://docs.dataforseo.com/v3/dataforseo_labs/apple/app_competitors/live/?bash)
  + [Get App Intersection](https://docs.dataforseo.com/v3/dataforseo_labs/apple/app_intersection/live/?bash)

  ## DataForSEO Backlinks API
   + [Get Backlinks Summary](https://docs.dataforseo.com/v3/backlinks/summary/live/?bash)
   + [Get Historical Backlink Summary](https://docs.dataforseo.com/v3/backlinks/history/live/?bash)
   + [Get Backlinks](https://docs.dataforseo.com/v3/backlinks/backlinks/live/?bash)
   + [Get Anchors](https://docs.dataforseo.com/v3/backlinks/anchors/live/?bash)
   + [Get Domain Pages](https://docs.dataforseo.com/v3/backlinks/domain_pages/live/?bash)
   + [Get Domain Pages Summary](https://docs.dataforseo.com/v3/backlinks/domain_pages_summary/live/?bash)
   + [Get Referring Domains](https://docs.dataforseo.com/v3/backlinks/referring_domains/live/?bash)
   + [Get Referring Networks](https://docs.dataforseo.com/v3/backlinks/referring_networks/live/?bash)
   + [Get Competitors](https://docs.dataforseo.com/v3/backlinks/competitors/live/?bash)
   + [Get Domain Intersection](https://docs.dataforseo.com/v3/backlinks/domain_intersection/live/?bash)
   + [Get Page Intersection](https://docs.dataforseo.com/v3/backlinks/page_intersection/live/?bash)
   + [Get Backlinks Timeseries Summary](https://docs.dataforseo.com/v3/backlinks/timeseries_summary/live/?bash)
   + [Get New & Lost Backlinks Timeseries Summary](https://docs.dataforseo.com/v3/backlinks/timeseries_new_lost_summary/live/?bash)
   + [Get Bulk Ranks](https://docs.dataforseo.com/v3/backlinks/bulk_ranks/live/?bash)
   + [Get Bulk Backlinks](https://docs.dataforseo.com/v3/backlinks/bulk_backlinks/live/?bash)
   + [Get Bulk Spam Scores](https://docs.dataforseo.com/v3/backlinks/bulk_spam_score/live/?bash)
   + [Get Bulk Referring Domains](https://docs.dataforseo.com/v3/backlinks/bulk_referring_domains/live/?bash)
   + [Get Bulk New & Lost Backlinks](https://docs.dataforseo.com/v3/backlinks/bulk_new_lost_backlinks/live/?bash)
   + [Get Bulk New & Lost Referring Domains](https://docs.dataforseo.com/v3/backlinks/bulk_new_lost_referring_domains/live/?bash)
   + [Get Bulk Pages Summary](https://docs.dataforseo.com/v3/backlinks/bulk_pages_summary/live/?bash)

  ## DataForSEO OnPage API
  + [Get Pages](https://docs.dataforseo.com/v3/on_page/pages/?bash)
  + [Get Pages By Resource](https://docs.dataforseo.com/v3/on_page/page_by_resource/?bash)
  + [Get Resources](https://docs.dataforseo.com/v3/on_page/resources/?bash)
  + [Get Duplicate Tags](https://docs.dataforseo.com/v3/on_page/duplicate_tags/?bash)
  + [Get Duplicate Content](https://docs.dataforseo.com/v3/on_page/duplicate_content/?bash)
  + [Get Links](https://docs.dataforseo.com/v3/on_page/links/?bash)
  + [Get Redirect Chains](https://docs.dataforseo.com/v3/on_page/redirect_chains/?bash)
  + [Get Non-Indexable Pages](https://docs.dataforseo.com/v3/on_page/non_indexable/?bash)
  + [Get Waterfall](https://docs.dataforseo.com/v3/on_page/waterfall/?bash)
  + [Get Keyword Density](https://docs.dataforseo.com/v3/on_page/keyword_density/?bash)
  + [Get Microdata](https://docs.dataforseo.com/v3/on_page/microdata/?bash)
  + [Get Raw HTML](https://docs.dataforseo.com/v3/on_page/raw_html/?bash)
  + [Get Page Screenshot](https://docs.dataforseo.com/v3/on_page/page_screenshot/?bash)
  + [Get Parsed Content](https://docs.dataforseo.com/v3/on_page/content_parsing/?bash)
  + [Get Live Parsed Content](https://docs.dataforseo.com/v3/on_page/content_parsing/live/?bash)
  + [Get Live Instant Pages](https://docs.dataforseo.com/v3/on_page/instant_pages/?bash)
  + [Get Lighthouse Audit Results](https://docs.dataforseo.com/v3/on_page/lighthouse/task_get/json/?bash)
  + [Get Live Lighthouse Audit Results](https://docs.dataforseo.com/v3/on_page/lighthouse/live/json/?bash)

  ## DataForSEO Content Analysis API
  + [Get Search Results](https://docs.dataforseo.com/v3/content_analysis/search/live/?bash)
  + [Get Summary](https://docs.dataforseo.com/v3/content_analysis/summary/live/?bash)
  + [Get Sentiment Analysis](https://docs.dataforseo.com/v3/content_analysis/sentiment_analysis/live/?bash)
  + [Get Rating Distribution](https://docs.dataforseo.com/v3/content_analysis/rating_distribution/live/?bash)
  + [Get Phrase Trends](https://docs.dataforseo.com/v3/content_analysis/phrase_trends/live/?bash)
  + [Get Category Trends](https://docs.dataforseo.com/v3/content_analysis/category_trends/live/?bash)

  ## DataForSEO Content Generation API
  + [Generate Text From Initial Input](https://docs.dataforseo.com/v3/content_generation/generate/live/?bash)
  + [Generate Text By Topic](https://docs.dataforseo.com/v3/content_generation/generate_text/live/?bash)
  + [Generate Meta Tags](https://docs.dataforseo.com/v3/content_generation/generate_meta_tags/live/?bash)
  + [Generate Sub Topics](https://docs.dataforseo.com/v3/content_generation/generate_sub_topics/live/?bash)
  + [Paraphrase Text](https://docs.dataforseo.com/v3/content_generation/paraphrase/live/?bash)
  + [Check Grammar](https://docs.dataforseo.com/v3/content_generation/check_grammar/live/?bash)
  + [Get Text Summary](https://docs.dataforseo.com/v3/content_generation/text_summary/live/?bash)

  ## DataForSEO Merchant API

  ### Google Shopping
  + [Get Products Advanced](https://docs.dataforseo.com/v3/merchant/google/products/task_get/advanced/?bash)
  + [Get Products HTML](https://docs.dataforseo.com/v3/merchant/google/products/task_get/html/?bash)
  + [Get Sellers Advanced](https://docs.dataforseo.com/v3/merchant/google/sellers/task_get/advanced/?bash)
  + [Get Product Info](https://docs.dataforseo.com/v3/merchant/google/product_info/task_get/advanced/?bash)
  + [Get Product Reviews](https://docs.dataforseo.com/v3/merchant/google/reviews/task_get/advanced/?bash)

  ### Amazon
  + [Get Products Advanced](https://docs.dataforseo.com/v3/merchant/amazon/products/task_get/advanced/?bash)
  + [Get Products HTML](https://docs.dataforseo.com/v3/merchant/amazon/products/task_get/html/?bash)
  + [Get Product ASINs Advanced](https://docs.dataforseo.com/v3/merchant/amazon/asin/task_get/advanced/?bash)
  + [Get Product ASINs HTML](https://docs.dataforseo.com/v3/merchant/amazon/asin/task_get/html/?bash)
  + [Get Sellers Advanced](https://docs.dataforseo.com/v3/merchant/amazon/sellers/task_get/advanced/?bash)
  + [Get Sellers HTML](https://docs.dataforseo.com/v3/merchant/amazon/sellers/task_get/html?bash)

  ## DataForSEO App Data API

  ### Google
  + [Search Apps Advanced](https://docs.dataforseo.com/v3/app_data/google/app_searches/task_get/advanced/?bash)
  + [Search Apps HTML](https://docs.dataforseo.com/v3/app_data/google/app_searches/task_get/html/?bash)
  + [Get App List Advanced](https://docs.dataforseo.com/v3/app_data/google/app_list/task_get/advanced/?bash)
  + [Get App List HTML](https://docs.dataforseo.com/v3/app_data/google/app_list/task_get/html/?bash)
  + [Get App Info Advanced](https://docs.dataforseo.com/v3/app_data/google/app_info/task_get/advanced/?bash)
  + [Get App Info HTML](https://docs.dataforseo.com/v3/app_data/google/app_info/task_get/html/?bash)
  + [Get App Reviews](https://docs.dataforseo.com/v3/app_data/google/app_reviews/task_get/advanced/?bash)
  + [Get App Listing Search](https://docs.dataforseo.com/v3/app_data/google/app_listings/search/live/?bash)

  ### Apple
  + [Search Apps](https://docs.dataforseo.com/v3/app_data/apple/app_searches/task_get/advanced/?bash)
  + [Get App List](https://docs.dataforseo.com/v3/app_data/apple/app_list/task_get/advanced/?bash)
  + [Get App Info](https://docs.dataforseo.com/v3/app_data/apple/app_info/task_get/advanced/?bash)
  + [Get App Reviews](https://docs.dataforseo.com/v3/app_data/apple/app_reviews/task_get/advanced/?bash)
  + [Get App Listings Search](https://docs.dataforseo.com/v3/app_data/apple/app_listings/search/live/?bash)

  ## DataForSEO Business Data API

  ### Business Listings
  + [Get Business Listings](https://docs.dataforseo.com/v3/business_data/business_listings/search/live/?bash)
  + [Get Categories Aggregation](https://docs.dataforseo.com/v3/business_data/business_listings/categories_aggregation/live/?bash)

  ### Google
  + [Get Google Business Info Live](https://docs.dataforseo.com/v3/business_data/google/my_business_info/live/?bash)
  + [Get Google Business Info](https://docs.dataforseo.com/v3/business_data/google/my_business_info/task_get/?bash)
  + [Get Google Business Updates](https://docs.dataforseo.com/v3/business_data/google/my_business_updates/task_get/?bash)
  + [Get Google Hotel Searches Live](https://docs.dataforseo.com/v3/business_data/google/hotel_searches/live/?bash)
  + [Get Google Hotel Searches](https://docs.dataforseo.com/v3/business_data/google/hotel_searches/task_get/?bash)
  + [Get Live Google Hotel Info Advanced](https://docs.dataforseo.com/v3/business_data/google/hotel_info/live/advanced/?bash)
  + [Get Live Google Hotel Info HTML](https://docs.dataforseo.com/v3/business_data/google/hotel_info/live/html/?bash)
  + [Get Google Hotel Info Advanced](https://docs.dataforseo.com/v3/business_data/google/hotel_info/task_get/advanced/?bash)
  + [Get Google Hotel Info HTML](https://docs.dataforseo.com/v3/business_data/google/hotel_info/task_get/html/?bash)
  + [Get Google Reviews](https://docs.dataforseo.com/v3/business_data/google/reviews/task_get/?bash)
  + [Get Extended Google Reviews](https://docs.dataforseo.com/v3/business_data/google/extended_reviews/task_get/?bash)
  + [Get Live Business Questions and Answers](https://docs.dataforseo.com/v3/business_data/google/questions_and_answers/live/?bash)
  + [Get Business Questions and Answers](https://docs.dataforseo.com/v3/business_data/google/questions_and_answers/task_get/?bash)

  ### Trustpilot
  + [Search Trustpilot Business Info](https://docs.dataforseo.com/v3/business_data/trustpilot/search/task_get/?bash)
  + [Get Trustpilot Reviews](https://docs.dataforseo.com/v3/business_data/trustpilot/reviews/task_get/?bash)

  ### Tripadvisor
  + [Search Tripadvisor Business Info](https://docs.dataforseo.com/v3/business_data/tripadvisor/search/task_get/?bash)
  + [Get Tripadvisor Reviews](https://docs.dataforseo.com/v3/business_data/tripadvisor/reviews/task_get/?bash)

  ### Social Media
  + [Get Pinterest Data](https://docs.dataforseo.com/v3/business_data/social_media/pinterest/live/?bash)
  + [Get Facebook Data](https://docs.dataforseo.com/v3/business_data/social_media/facebook/live/?bash)
  + [Get Reddit Data](https://docs.dataforseo.com/v3/business_data/social_media/reddit/live/?bash)

  ## DataForSEO AI Optimization API

  ### Keyword Data
  + [Get AI Keyword Search Volume](https://docs.dataforseo.com/v3/ai_optimization/ai_keyword_data/keywords_search_volume/live/)

  ### ChatGPT
  + [Get Live ChatGPT LLM Responses](https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live/)
  + [Get Live ChatGPT LLM Scraper Results Advanced](https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/live/advanced/)
  + [Get Live ChatGPT LLM Scraper Results HTML](https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/live/html/)
  + [Get ChatGPT LLM Scraper Results Advanced](https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/task_get/advanced/)
  + [Get ChatGPT LLM Scraper Results HTML](https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/task_get/html/)

  ### Claude
  + [Get Live Claude LLM Responses](https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/live/)

  ### Gemini
  + [Get Live Gemini LLM Responses](https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/live/)

  ### Perplexity
  + [Get Live Perplexity LLM Responses](https://docs.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/live/)

  ### LLM Mentions
  + [Get Live LLM Mentions](https://docs.dataforseo.com/v3/ai_optimization/llm_mentions/search/live/)
  + [Get Live LLM Mentions Top Pages](https://docs.dataforseo.com/v3/ai_optimization/llm_mentions/top_pages/live/)
  + [Get Live LLM Mentions Top Domains](https://docs.dataforseo.com/v3/ai_optimization/llm_mentions/top_domains/live/)
  + [Get Live LLM Mentions Aggregated Metrics](https://docs.dataforseo.com/v3/ai_optimization/llm_mentions/aggregated_metrics/live/)
  + [Get Live LLM Mentions Cross Aggregated Metrics](https://docs.dataforseo.com/v3/ai_optimization/llm_mentions/cross_aggregated_metrics/live/)

  Example DataForSEO Workflow Configurations
  --------------------------

  This section provides examples of commonly used DataForSEO operations along with detailed descriptions of their configuration parameters.

  #### Backlinks
  + [Get Backlinks](#get-backlinks)
  + [Get Backlink Summary](#get-backlink-summary)
  + [Get Historical Backlink Summary](#get-historical-backlink-summary)
  + [Get Bulk Backlink Rank](#get-bulk-backlink-rank)
  + [Get Bulk Backlink Stats](#get-bulk-backlink-stats)
  + [Get Backlinks Pages Summary](#get-backlinks-pages-summary)
  + [Get Bulk Referring Domain Stats](#get-bulk-referring-domain-stats)
  + [Get Referring Domains](#get-referring-domains)
  + [Get Bulk Spam Scores](#get-bulk-spam-scores)
  #### SERP
  + [Get Parsed SERP](#get-parsed-serp)
  + [Get Finance Explore](#get-finance-explore)
  + [Get Finance Markets](#get-finance-markets)
  + [Get Finance Quote](#get-finance-quote)
  + [Search Google Finance Tickers](#search-google-finance-tickers)
  + [Get Google AI Mode SERP](#get-google-ai-mode-serp)
  #### Business Data
  + [Search Business Listings](#search-business-listings)
  + [Get Business Listings Categories Aggregation](#get-business-listings-categories-aggregation)
  + [Get Google Reviews](#get-google-reviews)
  #### On Page
  + [Get Page Audit Check](#get-page-audit-check)
  + [Parse Page Content](#parse-page-content)
  #### DataForSEO Labs
  + [Get Domain Rank Overview](#get-domain-rank-overview)
  + [Get Keyword Suggestions](#get-keyword-suggestions)
  + [Get Ranked Keywords](#get-ranked-keywords)
  + [Get Keyword Difficulty](#get-keyword-difficulty)
  + [Get Organic Traffic Stats](#get-organic-traffic-stats)
  + [Get Historical Traffic Stats](#get-historical-traffic-stats)
  + [Get Keyword Ideas](#get-keyword-ideas)


  ### Get Backlinks

  Get a list of backlinks for a domain, subdomain, or page.

   + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  + **Mode**: Select the grouping type for the results (**As is**: Returns all backlinks, **One Per Domain**: Returns one backlink per domain, **One Per Anchor**: Returns one backlink per anchor). If not specified, the **As is** option will be selected by default.

  + **Limit (up to 1000)**: Enter the maximum number of returned backlinks.

  + **Offset**: Enter the offset in the results array for returned backlinks. The default value is 0. If set to 10, the first 10 backlinks will be skipped, and the results will start from the subsequent backlink.

  + **Sort**: Select the sorting rules for the results.

  + **Backlink Status**: Select the backlink status to return and count (**All**: All backlinks will be returned and counted, **Live**: Backlinks found during the last check will be returned and counted, **Lost**: Lost backlinks will be returned and counted). If not specified, the **Live** option will be selected by default.

  + **Include Subdomains (Optional)**: Select whether to include subdomains of the target in the search.

  + **Include Indirect Links (Optional)**: Select whether to include indirect links in the results.

  ### Get Backlink Summary

  Get an overview of backlink data for a domain, subdomain, or webpage.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  + **Include Subdomains (Optional)**: Select whether to include subdomains of the target in the search.

  + **Include Indirect Links (Optional)**: Select whether to include indirect links in the results.

  + **Internal List limit (up to 1000)**: Enter the number of backlinks to be returned in the results.

  + **Backlink Status**: Select the backlink status to return and count (**All**: All backlinks will be returned and counted, **Live**: Backlinks found during the last check will be returned and counted, **Lost**: Lost backlinks will be returned and counted).

  ### Get Historical Backlink Summary

  Get historical backlink data for a domain dating back to the beginning of 2019.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  + **Date From**: Enter the starting date of the time range. Minimal value: 2019-01-01. The minimum value will be used by default. Time zone: Europe/Prague.

  + **Date To**: Enter the ending date of the time range. If you don’t specify this field, today’s date will be used by default. Time zone: Europe/Prague.

  ### Get Bulk Backlink Rank

  Get rank scores for up to 1,000 domains, subdomains, and pages.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  ### Get Bulk Backlink Stats

  Get the number of backlinks for up to 1,000 domains, subdomains, and pages.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  ### Get Backlinks Pages Summary

  Get an overview of backlinks and associated data in bulk.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  + **Include Subdomains (Optional)**: Select whether to include subdomains of the target in the search.

  ### Get Bulk Referring Domain Stats

  Get the number of referring domains for up to 1,000 domains, subdomains, and pages.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  ### Get Referring Domains

  Get a detailed overview of referring domains pointing to the target you specify.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  + **Limit (up to 1000)**: Enter the maximum number of returned backlinks.

  + **Offset**: Enter the offset in the results array for returned backlinks. Default is 0. For example, if set to 10, the first 10 backlinks will be skipped, and the results will start from the subsequent backlink.

  + **Internal List limit ( up to 1000)**: Enter the number of backlinks to be returned in the results.

  + **Backlink Status**: Select the backlink status to return and count ( **All**: All backlinks will be returned and counted, **Live**: Backlinks found during the last check will be returned and counted, **Lost**: Lost backlinks will be returned and counted). If not specified, the **Live** option will be selected by default.

  + **Sort**: Enter (map) the sorting rules for the results.

  + **Include Subdomains (Optional)**: Select whether to include subdomains of the target in the search.

  + **Include Indirect Links (Optional)**: Select whether to include indirect links in the results.

  + **Exclude Internal Links (Optional)**: Select whether to include external links in the results.

  ### Get Bulk Spam Scores

  Get Spam Scores for up to 1,000 domains, subdomains, and pages.

  + **Target (domain, subdomain, URL)**: Enter the domain, subdomain, or webpage to get backlinks for. A domain or a subdomain should be specified without `https://` and `www.` A page should be specified with an absolute URL (including `http://` or `https://`).

  ## SERP

  ### Get Parsed SERP

  Get Google Search results for the specified keyword.

  + **Keyword**: Enter a keyword for parsing the SERP. You can specify up to 700 symbols.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations on the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages on the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Device**: Select your device type (Desktop, Mobile).
      
  + **OS**: Select your device's operating system (Windows, macOS, Android, iOS).

  + **Domain**: Enter the search engine domain. For example: `google.co.uk`, `google.com.au`, `google.de`, etc. Note: We automatically select the relevant search engine domain according to the location and language you specify. However, you can set a custom search engine domain in this field.

  + **Depth**: Enter parsing depth, number of results in SERP, max value is 700.

  + **Target**: Enter the target domain, subdomain, or webpage. Note: Domain or a subdomain should be specified without `https://` and `www.`.

  ### Get Finance Explore

  Get real-time data from the ‘Explore’ tab of Google Finance.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **News Type**: Select news type.

  ### Get Finance Markets

  Get real-time data from the ‘Markets’ tab of Google Finance.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Market Type**: Select market type.

  ### Get Finance Quote

  Get real-time data from the ‘Quote’ tab of Google Finance.

  + **Keyword (Ticker or Stock Symbol)**: Enter the Ticker symbol of publicly traded shares of a particular stock or security in a specific stock exchange.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Window**: Select time window for google_finance_quote graph.

  ### Search Google Finance Tickers

  Search by company name, market, or financial instrument to get Google Finance data on stocks, futures, and asset pairs, their value, growth trends, and identifiers.

  + **Keyword**: Enter Company name or financial instrument.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Category**: Select the Category of financial instruments to search for.

  ### Get Google AI Mode SERP

  Get search results from the AI Mode feature of Google Search.

  + **Keyword**: Keyword to get results for.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Device**: Select your device type (Desktop, Mobile).
      
  + **OS**: Select your device's operating system (Windows, macOS, Android, iOS).

  + **Calculate Pixel Rankings for SERP Elements?**: By default, the parameter is set to false.

  + **Browser Screen Width**: You can set a custom browser screen width to calculate pixel rankings for a particular device.

  + **Browser Screen Height**: You can set a custom browser screen height to calculate pixel rankings for a particular device.

  + **Browser Screen Resolution Ratio**: You can set a custom browser screen resolution ratio to calculate pixel rankings for a particular device.


  ## Business Data

  ### Get Search Business Listings

  Get information about businesses listed on Google Maps in the specified categories.

  + **Categories**: Enter up to 10 categories for the business listings, allowing you to specify relevant business categories.

  + **Description**: Enter a description for the business listing.

  + **Title**: Enter the title for the business listing.

  + **Is Claimed**: Select whether the business listing is claimed.

  + **Location Coordinate**: Enter location coordinates in the format `latitude`,`longitude`,`radius`. Example: 53.476225,-2.243572,200.

  + **Sort**: Select the sorting rules for the results. You can specify multiple sorting criteria by adding items.

  + **Limit (up to 1000)**: Enter the maximum number of returned listings.

  + **Offset**: Enter the offset in the results array for returned listings.

  ### Get Business Listings Categories Aggregation

  Get data about groups of related business categories along with the number of entities in each category.

  + **Categories**: Enter up to 10 categories for the business listings, allowing you to specify relevant business categories.

  + **Description**: Enter a description for the business listing.

  + **Title**: Enter the title for the business listing.

  + **Is Claimed**: Select whether the business listing is claimed.

  + **Location Coordinate**: Enter location coordinates in the format `latitude`,`longitude`,`radius`. Example: 53.476225,-2.243572,200.

  + **Internal List Limit**: Enter the number of business listings to be returned in the aggregated results.

  + **Limit (up to 1000)**: Enter the maximum number of results to be returned.

  + **Offset**: Enter the offset in the results array.

  ### Get Google Reviews

  Fetch reviews and related data from millions of Google Business Profiles around the world.

  + **Search By**: Select the method for searching Google reviews (Keyword, CID, Place ID).

  + **Keyword/CID/Place ID**: Enter the keyword, CID, or Place ID for the business or place you want to retrieve reviews for.

  + **Task Priority**: Select the task priority for the request. You will be additionally charged for the tasks with high execution priority.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Number of reviews**: Enter the number of reviews to retrieve.

  + **Sort**: Select the sorting criteria for the reviews (Newest, Highest Rating, Lowest Rating, Relevance).
      
  ## On Page

  ### Get Page Audit Check

  Run an essential SEO Audit of a page.

  + **Target page URL**: Enter the complete URL of the target page for which the data will be retrieved.

  ### Parse Page Content

  Get parsed and structured content of any page, including link URLs, anchors, headings, and text.

  + **Target page URL**: Enter the complete URL of the page to be parsed.

  ## Labs

  ### Get Domain Rank Overview

  Get ranking and traffic data from organic search for a domain.

  + **Target Domain**: Enter the target domain to retrieve the rank overview. The domain should be specified without `https://` or `www`.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Ignore Synonyms**: Select whether to ignore synonyms in the search results.

  + **Limit**: Enter the maximum number of results to retrieve.

  + **Offset**: Enter the offset in the results array. For example, if set to 10, the first 10 results will be skipped, and the data will start from the subsequent result.

  ### Get Keyword Suggestions

  Get search terms that are relevant to the product or service categories of all the specified keywords.

   + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Keyword**: Enter the keyword for which you want to retrieve suggestions.

  + **Limit (up to 1000)**: Enter the maximum number of keyword suggestions to retrieve.

  + **Offset**: Enter the offset in the results array. For example, if set to 10, the first 10 results will be skipped, and the data will start from the subsequent result.

  + **Sort**: Enter the sorting criteria for keyword suggestions.

  ### Get Ranked Keywords

  Get the list of keywords that any domain or webpage is ranking for.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Target**: Enter the domain name of the target website. The domain should be specified without `https://` or `www`.

  + **Limit (up to 1000)**: Enter the maximum number of keywords to retrieve.

  + **Item Types**: Select the type of search results included in the response.

  + **Sort**: Enter the sorting criteria for keyword rankings.

  + **Ignore Synonyms**: Select whether to ignore synonyms in the search results.

  ### Get Keyword Difficulty

  Get keyword difficulty for the specified keywords.

  + **Target Keywords**: Enter the keywords you want to analyze for difficulty. Keywords should be in **UTF-8** encoding, at least three characters long, and will be converted to lowercase. You can specify up to 1000 keywords."

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  ### Get Organic Traffic Stats

  Get an estimation of the monthly organic traffic for a website or page.

  + **Target Domain or Subdomains**: Enter the target domain to retrieve the organic traffic stats. The domain should be specified without `https://` or `www`.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Item Types**: Select the type of search results included in the response.

  ### Get Historical Traffic Stats

  Get a historical estimate of organic traffic for a website or page.

  + **Target Domain or Subdomains**: Enter the target domain to retrieve the organic traffic stats. The domain should be specified without `https://` or `www`.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Item Types**: Select the type of search results included in the response.

  ### Get Keyword Ideas

  Get search terms that fall into the same Google product or service category as the specified keywords.

  + **Keywords**: Enter the keywords you want to retrieve suggestions for.

  + **Location**: Enter the full name of the search engine location. You can find the supported locations in the DataForSEO [Supported Locations page](https://docs.dataforseo.com/v3/serp/google/locations/).

  + **Language**: Enter the full name of the search engine language. You can find the list of supported languages in the DataForSEO [Supported Languages page](https://docs.dataforseo.com/v3/serp/google/languages/).

  + **Limit (up to 1000)**: Enter the maximum number of keyword ideas to retrieve.

  + **Offset**: Enter the offset in the results array. For example, if set to 10, the first 10 results will be skipped, and the data will start from the subsequent result.

  + **Sort**: Enter the sorting criteria for keyword ideas.

ai_documentation_summary:
  {"purpose":"Retrieves marketing and SEO data from the DataForSEO API, including Google rankings, keyword suggestions, and backlink reports.","capabilities":["Retrieve Google Organic SERP data (Regular, Advanced, HTML)","Retrieve Google AI Mode SERP data (Advanced, HTML)","Retrieve Google Maps SERP data (Advanced)","Retrieve Google Local Finder SERP data (Advanced)","Retrieve Google News SERP data (Advanced)","Retrieve Google Events SERP data (Advanced)","Retrieve Google Images SERP data (Advanced)","Retrieve Google Search By Image SERP data","Retrieve Google Jobs SERP data","Retrieve Google Autocomplete SERP data"],"authentication":"API Login and Password","commonUseCases":["Competitor keyword analysis","Search engine result page (SERP) monitoring","Local SEO data retrieval","Image search analysis","News and events SERP tracking"],"limitations":["Requires a paid DataForSEO account","API credentials must be manually entered in n8n","API password is only visible for 24 hours after registration"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-httpRequest","n8n-nodes-ai"]}


node_type: n8n-nodes-streamline.streamline
package_name: n8n-nodes-streamline
display_name: Streamline for Shopify
description: Call Streamline APIs
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: streamline-connector
author_github_url: https://github.com/streamline-connector/
npm_package_name: n8n-nodes-streamline
npm_version: 0.7.0
community_fetched_at: 2026-07-14T14:40:33.493Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "productActions",
      "options": [
        {
          "name": "Order",
          "value": "orderActions"
        },
        {
          "name": "Product",
          "value": "productActions"
        },
        {
          "name": "Additional",
          "value": "additionalActions"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getOne",
      "options": [
        {
          "name": "Get an Order",
          "value": "getOne",
          "action": "Get an order",
          "routing": {
            "request": {
              "url": "/api/order-data",
              "method": "GET"
            }
          },
          "description": "Get an order using email or order number"
        },
        {
          "name": "Get Many Orders",
          "value": "getMany",
          "action": "Get many orders",
          "routing": {
            "request": {
              "url": "/api/order-data",
              "method": "GET"
            }
          },
          "description": "Get paginated list of all orders"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "orderActions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRecommendations",
      "options": [
        {
          "name": "Get AI Product Recommendations",
          "value": "getRecommendations",
          "action": "Get AI product recommendations",
          "routing": {
            "request": {
              "url": "/products/recommendations",
              "method": "GET"
            }
          },
          "description": "Get AI-based product suggestions"
        },
        {
          "name": "Get Inventory Locations",
          "value": "getLocations",
          "action": "Get inventory locations",
          "routing": {
            "request": {
              "url": "/products/locations",
              "method": "GET"
            }
          },
          "description": "Retrieve store locations"
        },
        {
          "name": "Create a Discount",
          "value": "createDiscount",
          "action": "Create a discount",
          "routing": {
            "request": {
              "url": "/api/create-discount-code",
              "method": "POST"
            }
          },
          "description": "Create a new discount code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "additionalActions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getOne",
      "options": [
        {
          "name": "Create a Product",
          "value": "createProduct",
          "action": "Create a product",
          "routing": {
            "request": {
              "url": "/products/create-product",
              "method": "POST"
            }
          },
          "description": "Create a new product in your store"
        },
        {
          "name": "Create a Variant",
          "value": "createVariant",
          "action": "Create a variant",
          "routing": {
            "request": {
              "url": "/products/create-variant",
              "method": "POST"
            }
          },
          "description": "Add new variants to an existing product"
        },
        {
          "name": "Delete a Product",
          "value": "deleteProduct",
          "action": "Delete a product",
          "routing": {
            "request": {
              "url": "/products/delete-product",
              "method": "POST"
            }
          },
          "description": "Permanently delete a product"
        },
        {
          "name": "Delete a Variant",
          "value": "deleteVariant",
          "action": "Delete a variant",
          "routing": {
            "request": {
              "url": "/products/delete-variant",
              "method": "POST"
            }
          },
          "description": "Delete a variant from a product"
        },
        {
          "name": "Get a Product",
          "value": "getOne",
          "action": "Get a product",
          "routing": {
            "request": {
              "url": "/products/inventory",
              "method": "GET"
            }
          },
          "description": "Get a product by ID or title"
        },
        {
          "name": "Get Many Products",
          "value": "getMany",
          "action": "Get many products",
          "routing": {
            "request": {
              "url": "/products/inventory",
              "method": "GET"
            }
          },
          "description": "Get inventory for all products (by shop)"
        },
        {
          "name": "Update a Product",
          "value": "updateProduct",
          "action": "Update a product",
          "routing": {
            "request": {
              "url": "/products/update-product",
              "method": "POST"
            }
          },
          "description": "Update product title, vendor, tags, status, etc"
        },
        {
          "name": "Update a Variant",
          "value": "updateVariant",
          "action": "Update a variant",
          "routing": {
            "request": {
              "url": "/products/update-variant",
              "method": "POST"
            }
          },
          "description": "Update variant price, SKU, options, etc"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "productActions"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get an Order",
      "value": "getOne",
      "action": "Get an order",
      "routing": {
        "request": {
          "url": "/api/order-data",
          "method": "GET"
        }
      },
      "description": "Get an order using email or order number",
      "resource": "orderActions"
    },
    {
      "name": "Get Many Orders",
      "value": "getMany",
      "action": "Get many orders",
      "routing": {
        "request": {
          "url": "/api/order-data",
          "method": "GET"
        }
      },
      "description": "Get paginated list of all orders",
      "resource": "orderActions"
    },
    {
      "name": "Get AI Product Recommendations",
      "value": "getRecommendations",
      "action": "Get AI product recommendations",
      "routing": {
        "request": {
          "url": "/products/recommendations",
          "method": "GET"
        }
      },
      "description": "Get AI-based product suggestions",
      "resource": "additionalActions"
    },
    {
      "name": "Get Inventory Locations",
      "value": "getLocations",
      "action": "Get inventory locations",
      "routing": {
        "request": {
          "url": "/products/locations",
          "method": "GET"
        }
      },
      "description": "Retrieve store locations",
      "resource": "additionalActions"
    },
    {
      "name": "Create a Discount",
      "value": "createDiscount",
      "action": "Create a discount",
      "routing": {
        "request": {
          "url": "/api/create-discount-code",
          "method": "POST"
        }
      },
      "description": "Create a new discount code",
      "resource": "additionalActions"
    },
    {
      "name": "Create a Product",
      "value": "createProduct",
      "action": "Create a product",
      "routing": {
        "request": {
          "url": "/products/create-product",
          "method": "POST"
        }
      },
      "description": "Create a new product in your store",
      "resource": "productActions"
    },
    {
      "name": "Create a Variant",
      "value": "createVariant",
      "action": "Create a variant",
      "routing": {
        "request": {
          "url": "/products/create-variant",
          "method": "POST"
        }
      },
      "description": "Add new variants to an existing product",
      "resource": "productActions"
    },
    {
      "name": "Delete a Product",
      "value": "deleteProduct",
      "action": "Delete a product",
      "routing": {
        "request": {
          "url": "/products/delete-product",
          "method": "POST"
        }
      },
      "description": "Permanently delete a product",
      "resource": "productActions"
    },
    {
      "name": "Delete a Variant",
      "value": "deleteVariant",
      "action": "Delete a variant",
      "routing": {
        "request": {
          "url": "/products/delete-variant",
          "method": "POST"
        }
      },
      "description": "Delete a variant from a product",
      "resource": "productActions"
    },
    {
      "name": "Get a Product",
      "value": "getOne",
      "action": "Get a product",
      "routing": {
        "request": {
          "url": "/products/inventory",
          "method": "GET"
        }
      },
      "description": "Get a product by ID or title",
      "resource": "productActions"
    },
    {
      "name": "Get Many Products",
      "value": "getMany",
      "action": "Get many products",
      "routing": {
        "request": {
          "url": "/products/inventory",
          "method": "GET"
        }
      },
      "description": "Get inventory for all products (by shop)",
      "resource": "productActions"
    },
    {
      "name": "Update a Product",
      "value": "updateProduct",
      "action": "Update a product",
      "routing": {
        "request": {
          "url": "/products/update-product",
          "method": "POST"
        }
      },
      "description": "Update product title, vendor, tags, status, etc",
      "resource": "productActions"
    },
    {
      "name": "Update a Variant",
      "value": "updateVariant",
      "action": "Update a variant",
      "routing": {
        "request": {
          "url": "/products/update-variant",
          "method": "POST"
        }
      },
      "description": "Update variant price, SKU, options, etc",
      "resource": "productActions"
    }
  ]

npm_readme:
  # n8n-nodes-streamline

  ![n8n.io - Workflow Automation](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png)

  This is an n8n community node that connects your **Shopify eCommerce data** to [n8n](https://n8n.io) through the **Streamline Connector API**. It enables you to retrieve products, orders, and inventory data from Shopify to automate workflows and integrate with other services.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)
  [Version History](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### Community Nodes (Recommended)

  For users on n8n v0.187.0+:

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-streamline` in **Enter npm package name**
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes
  5. Select **Install**

  After installation, the Streamline node will be available in your nodes panel.

  ### Manual Installation

  For self-hosted n8n instances:

  ```bash
  cd ~/.n8n/custom
  npm install n8n-nodes-streamline
  ```

  Restart n8n and the **Streamline** node will appear in your node list.

  ### Docker

  To use this node with Docker:

  ```bash
  docker run -it --rm \
    -p 5678:5678 \
    -v ~/.n8n:/home/node/.n8n \
    -v ~/.n8n/custom:/home/node/custom \
    -e N8N_CUSTOM_EXTENSIONS="/home/node/custom/node_modules/n8n-nodes-streamline" \
    n8nio/n8n
  ```

  ## Operations

  The Streamline node supports three resources. Choose a resource, then an operation.

  ### Order

  | Operation        | Description                                                       |
  | ---------------- | ----------------------------------------------------------------- |
  | Get an Order     | Get an order by customer email or order number (`/api/order-data`) |
  | Get Many Orders  | Get paginated list of all orders (page & size) (`/api/order-data`) |

  ### Product

  | Operation        | Description                                                                 |
  | ---------------- | --------------------------------------------------------------------------- |
  | Get a Product    | Get a product by ID or title – inventory/stock (`/products/inventory`)     |
  | Get Many Products| Get inventory for all products, with pagination (`/products/inventory`)     |
  | Create a Product | Create a new product in your store (`/products/create-product`)             |
  | Create a Variant | Add new variants to an existing product (`/products/create-variant`)         |
  | Update a Product | Update product title, vendor, tags, status, etc. (`/products/update-product`)|
  | Update a Variant | Update a variant’s price, SKU, inventory, etc. (`/products/update-variant`)  |
  | Delete a Product | Permanently delete a product (`/products/delete-product`)                   |
  | Delete a Variant | Delete a variant from a product (`/products/delete-variant`)                 |

  ### Additional

  | Operation                  | Description                                              |
  | --------------------------| --------------------------------------------------------- |
  | Get AI Product Recommendations | Get AI-based product suggestions (`/products/recommendations`) |
  | Get Inventory Locations   | Retrieve store locations (`/products/locations`)          |
  | Create a Discount         | Create a new discount code (`/api/create-discount-code`) |

  ## Credentials

  To use the Streamline node, you need to set up Streamline API credentials:

  1. In n8n, go to **Credentials → New**
  2. Search for and select **Streamline API**
  3. Enter your credentials:
     - **Shop ID** – Your Shopify shop ID (found in the Streamline Connector app under **API Keys**)
     - **API Key** – Your secret API key (generate one in the Streamline Connector app under **API Keys**)
  4. Click **Save** and test the connection

  Once configured, select these credentials when using any Streamline node in your workflows.

  ### Getting API Credentials

  To obtain your Streamline API credentials:

  1. Visit [Streamline Connector](https://streamlineconnector.com)
  2. Sign up or log in to your account
  3. Navigate to your API settings
  4. Generate or copy your API key

  ## Compatibility

  - **Minimum n8n version:** 0.187.0
  - **Tested with n8n version:** 1.0.0+
  - **Node.js version:** 22+

  ## Usage

  ### Example Workflows

  Here are some common use cases for the Streamline node:

  **1. Sync Orders to Google Sheets**

  - Trigger: Schedule (every hour)
  - Streamline Node: Get Orders
  - Google Sheets: Append data
  - Use case: Create automated sales reports

  **2. Low Stock Alerts**

  - Trigger: Schedule (daily)
  - Streamline Node: Get Inventory
  - IF Node: Check if stock < threshold
  - Slack/Email Node: Send alert
  - Use case: Monitor inventory levels

  **3. Product Catalog Integration**

  - Trigger: Manual or Schedule
  - Streamline Node: Get Products
  - Your Service: Update product database
  - Use case: Maintain product information across platforms

  ### Tips

  - Use the **Schedule Trigger** node to automate regular data syncs
  - Combine with **IF** nodes to create conditional workflows
  - Use **Set** nodes to transform data before sending to other services
  - Enable **Error Workflows** to handle API errors gracefully

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Streamline Connector](https://streamlineconnector.com)
  - [n8n workflow examples](https://n8n.io/workflows)

  ### Support

  For issues and questions:

  - **Node issues:** [GitHub Issues](https://github.com/streamline-connector/n8n-nodes-streamline/issues)
  - **n8n help:** [n8n Community Forum](https://community.n8n.io/)
  - **Streamline API:** Contact devs@streamlineconnector.com

  ## Development

  ### Prerequisites

  - Node.js v22 or higher
  - npm
  - n8n (included as dev dependency)

  ### Setup

  ```bash
  # Clone the repository
  git clone https://github.com/streamline-connector/n8n-nodes-streamline.git
  cd n8n-nodes-streamline

  # Install dependencies
  npm install

  # Build the node
  npm run build
  ```

  ### Local Development

  Start n8n with your node loaded:

  ```bash
  npm run dev
  ```

  This command:

  - Builds your node with watch mode enabled
  - Starts n8n with your node available
  - Automatically rebuilds when you make changes
  - Opens n8n in your browser at http://localhost:5678

  ### Testing

  Run linting:

  ```bash
  npm run lint
  ```

  Auto-fix linting issues:

  ```bash
  npm run lint:fix
  ```

  ### Building for Production

  ```bash
  npm run build
  ```

  This compiles TypeScript code to the `dist/` folder.

  ## Version History

  See [CHANGELOG.md](CHANGELOG.md) for detailed version history.

  ## License

  [MIT](LICENSE.md)

  ## Contributing

  Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
  3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
  4. Push to the branch (`git push origin feature/AmazingFeature`)
  5. Open a Pull Request

  ---

  Made with ❤️ by [Streamline Connector](https://streamlineconnector.com)

ai_documentation_summary:
  {"purpose":"Connects Shopify eCommerce data to n8n via the Streamline Connector API to automate workflows for retrieving products, orders, inventory, and generating AI recommendations.","capabilities":["Retrieve single order by email or order number","Retrieve paginated list of all orders","Get AI-based product recommendations","Retrieve product details including inventory/stock levels","Retrieve store inventory locations","Create new discount codes"],"authentication":"API key required (Streamline Shop ID/Access Key)","commonUseCases":["Automated sales reporting by syncing orders to Google Sheets","Low stock alerts by monitoring inventory levels and sending notifications","Product catalog synchronization across multiple platforms"],"limitations":["Community node (requires approval and manual installation for self-hosted)","Requires n8n version 0.187.0 or higher","Requires Node.js version 22 or higher"],"relatedNodes":["Schedule Trigger","IF Node","Set Node","Google Sheets","Slack"]}


node_type: n8n-nodes-scraperapi-official.scraperApi
package_name: n8n-nodes-scraperapi-official
display_name: ScraperAPI
description: Official ScraperAPI nodes for n8n
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: scraperapi
author_github_url: https://github.com/scraperapi/
npm_package_name: n8n-nodes-scraperapi-official
npm_version: 1.3.0
community_fetched_at: 2026-07-14T14:40:33.494Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "api",
      "options": [
        {
          "name": "AI Parser",
          "value": "aiparser"
        },
        {
          "name": "API",
          "value": "api"
        },
        {
          "name": "Crawler",
          "value": "crawler"
        },
        {
          "name": "Structured Data Endpoint",
          "value": "sde"
        }
      ],
      "required": true,
      "description": "Choose your ScraperAPI resource",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "apiRequest",
      "options": [
        {
          "name": "Send a Request",
          "value": "apiRequest",
          "action": "Send a request to the API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "api"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "amazonProduct",
      "options": [
        {
          "name": "Offers",
          "value": "amazonOffers",
          "action": "Get product offers"
        },
        {
          "name": "Product",
          "value": "amazonProduct",
          "action": "Get product details"
        },
        {
          "name": "Search",
          "value": "amazonSearch",
          "action": "Search products"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "amazon"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ebaySearch",
      "options": [
        {
          "name": "Product",
          "value": "ebayProduct",
          "action": "Get product details"
        },
        {
          "name": "Search",
          "value": "ebaySearch",
          "action": "Search products"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "ebay"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "googleSearch",
      "options": [
        {
          "name": "Jobs",
          "value": "googleJobs",
          "action": "Get jobs results"
        },
        {
          "name": "Maps Search",
          "value": "googleMapsSearch",
          "action": "Search maps"
        },
        {
          "name": "News",
          "value": "googleNews",
          "action": "Get news results"
        },
        {
          "name": "Search",
          "value": "googleSearch",
          "action": "Get search results"
        },
        {
          "name": "Shopping",
          "value": "googleShopping",
          "action": "Get shopping results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "google"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "redfinForSale",
      "options": [
        {
          "name": "Agent",
          "value": "redfinAgent",
          "action": "Get agent details"
        },
        {
          "name": "For Rent",
          "value": "redfinForRent",
          "action": "Get rental listings"
        },
        {
          "name": "For Sale",
          "value": "redfinForSale",
          "action": "Get sale listings"
        },
        {
          "name": "Search",
          "value": "redfinSearch",
          "action": "Search listings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "redfin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "walmartSearch",
      "options": [
        {
          "name": "Category",
          "value": "walmartCategory",
          "action": "Browse category"
        },
        {
          "name": "Product",
          "value": "walmartProduct",
          "action": "Get product details"
        },
        {
          "name": "Review",
          "value": "walmartReview",
          "action": "Get product reviews"
        },
        {
          "name": "Search",
          "value": "walmartSearch",
          "action": "Search products"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "walmart"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "crawlerJobCreate",
      "options": [
        {
          "name": "Initiate a Crawler Job",
          "value": "crawlerJobCreate",
          "action": "Initiate a crawler job"
        },
        {
          "name": "Get a Job Status",
          "value": "crawlerJobGet",
          "action": "Get a job status"
        },
        {
          "name": "Cancel a Crawler Job",
          "value": "crawlerJobDelete",
          "action": "Cancel a crawler job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawler"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "aiParserCreate",
      "options": [
        {
          "name": "Create a Parser",
          "value": "aiParserCreate",
          "action": "Create a parser"
        },
        {
          "name": "Delete a Parser",
          "value": "aiParserDelete",
          "action": "Delete a parser"
        },
        {
          "name": "Get a Parser",
          "value": "aiParserGet",
          "action": "Get a parser"
        },
        {
          "name": "List Parsers",
          "value": "aiParserList",
          "action": "List parsers"
        },
        {
          "name": "Parse a URL",
          "value": "aiParserParse",
          "action": "Parse a URL"
        },
        {
          "name": "Update a Parser",
          "value": "aiParserUpdate",
          "action": "Update a parser"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiparser"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send a Request",
      "value": "apiRequest",
      "action": "Send a request to the API",
      "resource": "api"
    },
    {
      "name": "Offers",
      "value": "amazonOffers",
      "action": "Get product offers",
      "resource": "sde"
    },
    {
      "name": "Product",
      "value": "amazonProduct",
      "action": "Get product details",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "amazonSearch",
      "action": "Search products",
      "resource": "sde"
    },
    {
      "name": "Product",
      "value": "ebayProduct",
      "action": "Get product details",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "ebaySearch",
      "action": "Search products",
      "resource": "sde"
    },
    {
      "name": "Jobs",
      "value": "googleJobs",
      "action": "Get jobs results",
      "resource": "sde"
    },
    {
      "name": "Maps Search",
      "value": "googleMapsSearch",
      "action": "Search maps",
      "resource": "sde"
    },
    {
      "name": "News",
      "value": "googleNews",
      "action": "Get news results",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "googleSearch",
      "action": "Get search results",
      "resource": "sde"
    },
    {
      "name": "Shopping",
      "value": "googleShopping",
      "action": "Get shopping results",
      "resource": "sde"
    },
    {
      "name": "Agent",
      "value": "redfinAgent",
      "action": "Get agent details",
      "resource": "sde"
    },
    {
      "name": "For Rent",
      "value": "redfinForRent",
      "action": "Get rental listings",
      "resource": "sde"
    },
    {
      "name": "For Sale",
      "value": "redfinForSale",
      "action": "Get sale listings",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "redfinSearch",
      "action": "Search listings",
      "resource": "sde"
    },
    {
      "name": "Category",
      "value": "walmartCategory",
      "action": "Browse category",
      "resource": "sde"
    },
    {
      "name": "Product",
      "value": "walmartProduct",
      "action": "Get product details",
      "resource": "sde"
    },
    {
      "name": "Review",
      "value": "walmartReview",
      "action": "Get product reviews",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "walmartSearch",
      "action": "Search products",
      "resource": "sde"
    },
    {
      "name": "Initiate a Crawler Job",
      "value": "crawlerJobCreate",
      "action": "Initiate a crawler job",
      "resource": "crawler"
    },
    {
      "name": "Get a Job Status",
      "value": "crawlerJobGet",
      "action": "Get a job status",
      "resource": "crawler"
    },
    {
      "name": "Cancel a Crawler Job",
      "value": "crawlerJobDelete",
      "action": "Cancel a crawler job",
      "resource": "crawler"
    },
    {
      "name": "Create a Parser",
      "value": "aiParserCreate",
      "action": "Create a parser",
      "resource": "aiparser"
    },
    {
      "name": "Delete a Parser",
      "value": "aiParserDelete",
      "action": "Delete a parser",
      "resource": "aiparser"
    },
    {
      "name": "Get a Parser",
      "value": "aiParserGet",
      "action": "Get a parser",
      "resource": "aiparser"
    },
    {
      "name": "List Parsers",
      "value": "aiParserList",
      "action": "List parsers",
      "resource": "aiparser"
    },
    {
      "name": "Parse a URL",
      "value": "aiParserParse",
      "action": "Parse a URL",
      "resource": "aiparser"
    },
    {
      "name": "Update a Parser",
      "value": "aiParserUpdate",
      "action": "Update a parser",
      "resource": "aiparser"
    }
  ]

npm_readme:
  # ScraperAPI Official N8N Node

  This is an n8n community node that lets you use **ScraperAPI** in your n8n workflows.

  **ScraperAPI** is a solution to help you unlock and scrape any website, no matter the scale or difficulty. It handles proxies, browsers, and CAPTCHAs so you can focus on extracting the data you need.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Parameters](#parameters)
  - [Documentation](#documentation)
  - [Version History](#version-history)
  - [More ScraperAPI Integrations](#more-scraperapi-integrations)

  ## Installation

  1. In n8n, go to the **Nodes** panel.
  2. Search for **ScraperAPI**.
  3. Select **Install**: n8n installs the node and it becomes available in your workflows.

  ## Operations

    - API
      - Send a Request
    - Structured Data Endpoints (SDEs)
      - Amazon
        - Product
        - Search
        - Offers
      - Google
        - Search
        - Jobs
        - News
        - Shopping
        - Maps Search
      - Ebay
        - Search
        - Product
      - Walmart
        - Search
        - Category
        - Product
        - Review
      - Redfin
        - For Sale
        - For Rent
        - Search
        - Agent
    - Crawler
      - Initiate a crawler job
      - Get a job status
      - Cancel a crawler job
    - AI Parser
      - Create a parser
      - Get a parser
      - List parsers
      - Parse a URL
      - Update a parser
      - Delete a parser

  ## Credentials

  ### Getting Your API Key

  1. Sign up for a ScraperAPI account at [ScraperAPI Dashboard](https://dashboard.scraperapi.com/signup)
  2. Once logged in, navigate to your dashboard
  3. Copy your API key from the dashboard

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add a **ScraperAPI** node
  2. Click on the **Credential to connect with** field
  3. Click **Create New Credential**
  4. Enter your API key
  5. Click **Save**

  The credentials will be automatically tested to ensure they work correctly.

  For more information, see the [ScraperAPI API Key Documentation](https://docs.scraperapi.com/dashboard-and-billing/api-key).

  ## Usage

  The ScraperAPI node supports four resources:

  - **API**: Scrape a single URL with a GET request. The node handles proxies, browser automation, and CAPTCHA solving.
  - **Structured Data Endpoint**: Extract structured data from popular websites (Amazon, Google, eBay, Walmart, Redfin) using purpose-built endpoints that return clean, parsed JSON.
  - **Crawler**: Run multi-page crawler jobs that follow links from a start URL and stream results to a webhook.
  - **AI Parser**: Build a reusable AI-powered parser from a few example URLs, then apply it to extract structured JSON from any page with the same layout.

  1. Add a **ScraperAPI** node to your workflow
  2. Select the ScraperAPI resource, for example the **API**
  3. Enter the required parameters, for example the **URL** you want to scrape
  4. Configure any optional parameter you need
  5. Execute the workflow

  The node returns a JSON object with the following structure:

  ```json
  {
    "resource": "api",
    "response": {
      "body": "...",
      "headers": {...},
      "statusCode": 200,
      "statusMessage": "OK"
    }
  }
  ```

  ## Resources

  ### API

  The **API** resource allows you to scrape any website using ScraperAPI's endpoint. It supports JavaScript rendering, geo-targeting, device-specific user agents, premium proxies, automatic parsing, and multiple output formats.

  <details>
  <summary><strong>Send a Request</strong></summary>

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Target URL to scrape (e.g., `https://example.com`) | Yes |
  | `render` | boolean | Enable JavaScript rendering for dynamic content (default: `false`) | No |
  | `countryCode` | string | Two-letter ISO country code (e.g., `US`, `GB`, `DE`) for geo-targeted scraping | No |
  | `desktopDevice` | boolean | Scrape the page as a desktop device (incompatible with `mobileDevice`) | No |
  | `mobileDevice` | boolean | Scrape the page as a mobile device (incompatible with `desktopDevice`) | No |
  | `outputFormat` | string | Output format: `'markdown'`, `'text'`, `'csv'`, or `'json'`. CSV and JSON are only available for autoparse websites. Default: HTML | No |
  | `autoparse` | boolean | Enable automatic parsing for select websites (default: `false`) | No |
  | `premium` | boolean | Use premium residential/mobile proxies for higher success rates (incompatible with `ultraPremium`) | No |
  | `ultraPremium` | boolean | Activate advanced bypass mechanisms for the most difficult websites (incompatible with `premium`) | No |
  | `zipCode` | string | US ZIP code for Amazon location-specific results (Amazon US only, e.g., `92223`) | No |
  | `sessionNumber` | number | Reuse the same proxy session by passing an integer (incompatible with `premium`/`ultraPremium`) | No |
  | `keepHeaders` | boolean | Keep the original response headers (not available with `ultraPremium`) | No |
  | `followRedirect` | boolean | Follow HTTP redirects when fetching the page (default: `true`) | No |
  | `retry404` | boolean | Retry requests that return a 404 status code (not available with `premium`/`ultraPremium`) | No |

  </details>

  ### Crawler

  The **Crawler** resource uses the [ScraperAPI Crawler API](https://docs.scraperapi.com/scraperapi-crawler-v2.0/crawler-api/job-lifecycle) to run crawling jobs to discover and scrape multiple pages, streaming results to a webhook you provide.

  <details>
  <summary><strong>Initiate a Crawler Job</strong></summary>

  Create and start a new crawler job. You receive a `jobId` to track or cancel the job.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `startUrl` | string | The URL where crawling begins (depth 0) | Yes |
  | `maxDepth` | number | Maximum depth level (start URL = 0). Either `maxDepth` or `crawlBudget` must be set | Yes* |
  | `crawlBudget` | number | Maximum ScraperAPI credits the job may consume. Either `maxDepth` or `crawlBudget` must be set | Yes* |
  | `urlRegexpInclude` | string | Regex to decide which links to crawl from each page. Use `.*` to allow all pages on the site | Yes |
  | `callbackUrl` | string | Webhook URL where ScraperAPI sends results. Both successful and failed scrape attempts are streamed here; when the job finishes, a job summary is also sent | Yes |
  | `urlRegexpExclude` | string | Regex to skip URLs (e.g., `.*/product/.*`). Leave empty to crawl all URLs that pass the include regex | No |
  | `apiParameters` | object | Per-page scrape settings (country code, device, render, premium, output format, etc.). See the API resource for supported options | No |
  | `enabled` | boolean | When `true`, the crawler runs according to the schedule. When `false`, only the configuration is created (default: `true`) | No |
  | `scheduleName` | string | Name for the crawler (e.g., for the dashboard) | No |
  | `scheduleInterval` | string | When the crawler runs: `'once'`, `'hourly'`, `'daily'`, `'weekly'`, or `'monthly'` | No |

  </details>

  <details>
  <summary><strong>Get a Job Status</strong></summary>

  Check the current state of a crawler job.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `jobId` | string | The crawler job ID returned when you initiated the job | Yes |

  </details>

  <details>
  <summary><strong>Cancel a Crawler Job</strong></summary>

  Stop a running crawler job.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `jobId` | string | The crawler job ID returned when you initiated the job | Yes |

  </details>

  ### AI Parser

  The **AI Parser** resource uses the [ScraperAPI AI Parser](https://docs.scraperapi.com/ai-parser) to generate a reusable parser from a handful of example URLs. Once a parser finishes generating, you can apply it to any page that shares the same layout to extract clean, structured JSON. All AI Parser operations are accessed via `https://aiparser.scraperapi.com`.

  <details>
  <summary><strong>Create a Parser</strong></summary>

  Create a new parser from example URLs. The parser is generated asynchronously; you receive an `id` and `version` to track its status. Use **Get a Parser** to check when generation has finished.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `name` | string | A name to identify the parser | Yes |
  | `urls` | string[] | One to three example URLs of pages with the same structure (max 3). The AI uses these to learn how to extract the fields. | Yes |
  | `fields` | collection | Optional list of fields to extract (`name`, `description`, `type`, `selector`). Leave empty to let the AI infer the fields automatically. | No |
  | `scraperParams` | object | Optional scrape settings applied when fetching the example pages (see below) | No |

  </details>

  <details>
  <summary><strong>Get a Parser</strong></summary>

  Retrieve a parser's details, including its generation status (`GENERATING`, `FINISHED`, or `FAILED`), its fields, and example results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `parserId` | string | The ID of the parser returned when it was created | Yes |
  | `version` | number | A specific parser version to retrieve. Leave as `-1` for the latest version. | No |

  </details>

  <details>
  <summary><strong>List Parsers</strong></summary>

  List all parsers associated with your account. This operation takes no parameters.

  </details>

  <details>
  <summary><strong>Parse a URL</strong></summary>

  Apply a finished parser to a target URL and return the extracted structured data.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `parserId` | string | The ID of the parser to apply | Yes |
  | `url` | string | The target URL to scrape and parse | Yes |
  | `version` | number | A specific parser version to apply. Leave as `-1` for the latest version. | No |
  | `scraperParams` | object | Optional scrape settings applied when fetching the target page (see below) | No |

  </details>

  <details>
  <summary><strong>Update a Parser</strong></summary>

  Modify an existing parser's fields. Adding or modifying fields triggers a new parser version to be generated; renaming and removing fields are applied immediately. At least one of the parameters below must be set.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `parserId` | string | The ID of the parser to update | Yes |
  | `version` | number | The parser version to update (a new parser starts at version `0`). Leave as `-1` to update the latest version. | No |
  | `addFields` | collection | Fields to add (`name`, `description`, `type`, `selector`) | No |
  | `modifyFields` | collection | Existing fields to redefine (`name`, `description`, `type`, `selector`) | No |
  | `renameFields` | collection | Fields to rename (`name`, `new_name`) | No |
  | `removeFields` | string[] | Names of fields to remove | No |

  </details>

  <details>
  <summary><strong>Delete a Parser</strong></summary>

  Permanently delete a parser.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `parserId` | string | The ID of the parser to delete | Yes |

  </details>

  #### Scraper Parameters

  The optional `scraperParams` collection (available on **Create a Parser** and **Parse a URL**) controls how ScraperAPI fetches pages:

  | Parameter | Type | Description |
  |-----------|------|-------------|
  | `countryCode` | string | Two-letter country code for geo-specific scraping (e.g. `us`, `gb`, `de`) |
  | `desktopDevice` | boolean | Scrape the page as a desktop device |
  | `followRedirect` | boolean | Follow HTTP redirects when fetching the page (default: `true`) |
  | `keepHeaders` | boolean | Keep the original response headers (not available with `ultraPremium`) |
  | `mobileDevice` | boolean | Scrape the page as a mobile device |
  | `premium` | boolean | Use premium residential/mobile proxies (incompatible with `ultraPremium`) |
  | `render` | boolean | Enable JavaScript rendering for dynamic content |
  | `retry404` | boolean | Retry requests that return a 404 status code (not available with `premium`/`ultraPremium`) |
  | `sessionNumber` | number | Reuse the same proxy session by passing an integer (incompatible with `premium`/`ultraPremium`) |
  | `ultraPremium` | boolean | Activate advanced bypass mechanisms (incompatible with `premium`) |

  ### Structured Data Endpoints (SDEs)

  The **Structured Data Endpoints** resource provides purpose-built endpoints for extracting structured data from popular platforms. Each endpoint returns clean, parsed JSON without requiring manual parsing. All SDE endpoints are accessed via `https://api.scraperapi.com/structured/{platform}/{endpoint}`.

  <details>
  <summary><strong>Amazon</strong></summary>

  #### Amazon Product

  Extract detailed product information from Amazon.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `asin` | string | The Amazon Standard Identification Number (e.g., `B08N5WRWNW`) | Yes |
  | `tld` | string | Amazon top-level domain (e.g., `com`, `co.uk`, `de`) | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |

  #### Amazon Search

  Search for products on Amazon.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query (e.g., `laptop`) | Yes |
  | `tld` | string | Amazon top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `page` | number | Page number of search results | No |
  | `sort` | string | Sort parameter | No |
  | `department` | string | Department/category filter | No |

  #### Amazon Offers

  Get all offers (sellers) for a specific Amazon product.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `asin` | string | The Amazon Standard Identification Number | Yes |
  | `tld` | string | Amazon top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `condition` | string | Filter by item condition | No |
  | `filterNew` | boolean | Filter for new items | No |
  | `filterUsedGood` | boolean | Filter for used - good condition | No |
  | `filterUsedLikeNew` | boolean | Filter for used - like new condition | No |
  | `filterUsedVeryGood` | boolean | Filter for used - very good condition | No |
  | `filterUsedAcceptable` | boolean | Filter for used - acceptable condition | No |

  </details>

  <details>
  <summary><strong>Google</strong></summary>

  #### Google Search

  Get Google search results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query | Yes |
  | `tld` | string | Google top-level domain (e.g., `com`, `co.uk`) | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `timePeriod` | string | Predefined time period filter: `'qdr:h'`, `'qdr:d'`, `'qdr:w'`, `'qdr:m'`, `'qdr:y'` | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |

  #### Google Jobs

  Get Google Jobs search results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Job search query | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |

  #### Google News

  Get Google News results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | News search query | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `timePeriod` | string | Predefined time period filter: `'qdr:h'`, `'qdr:d'`, `'qdr:w'`, `'qdr:m'`, `'qdr:y'` | No |

  #### Google Shopping

  Get Google Shopping results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Shopping search query | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |

  #### Google Maps Search

  Search for businesses and places on Google Maps.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query (e.g., `pizza near Times Square`) | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `latitude` | string | Latitude for location-based search | No |
  | `longitude` | string | Longitude for location-based search | No |
  | `zoom` | number | Zoom level for the map search | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |

  </details>

  <details>
  <summary><strong>eBay</strong></summary>

  #### eBay Search

  Search for items on eBay.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query | Yes |
  | `tld` | string | eBay top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `page` | number | Page number of search results | No |
  | `itemsPerPage` | number | Number of items per page (`60`, `120`, or `240`) | No |
  | `sellerId` | string | Filter by specific seller | No |
  | `condition` | string | Filter by item condition | No |
  | `buyingFormat` | string | Filter by buying format: `'buy_it_now'`, `'auction'`, `'accepts_offers'` | No |
  | `showOnly` | string | Additional filters: `'returns_accepted'`, `'authorized_seller'`, `'completed_items'`, `'sold_items'`, `'sale_items'`, `'listed_as_lots'`, `'search_in_description'`, `'benefits_charity'`, `'authenticity_guarantee'` | No |
  | `sortBy` | string | Sort order: `'ending_soonest'`, `'newly_listed'`, `'price_lowest'`, `'price_highest'`, `'distance_nearest'`, `'best_match'` | No |

  #### eBay Product

  Get detailed product information from eBay.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `productId` | string | The eBay product/item ID | Yes |
  | `tld` | string | eBay top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |

  </details>

  <details>
  <summary><strong>Walmart</strong></summary>

  #### Walmart Search

  Search for products on Walmart.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `page` | number | Page number of search results | No |

  #### Walmart Category

  Browse products by Walmart category.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `category` | string | Walmart category ID | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `page` | number | Page number of results | No |

  #### Walmart Product

  Get detailed product information from Walmart.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `productId` | string | The Walmart product ID | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |

  #### Walmart Review

  Get customer reviews for a Walmart product.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `productId` | string | The Walmart product ID | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `outputFormat` | string | Output format: `'json'` (default) or `'csv'` | No |
  | `page` | number | Page number of reviews | No |
  | `sort` | string | Sort order for reviews | No |
  | `ratings` | string | Filter by rating | No |
  | `verifiedPurchase` | boolean | Filter for verified purchases only | No |

  </details>

  <details>
  <summary><strong>Redfin</strong></summary>

  #### Redfin For Sale

  Get property listings for sale on Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin URL for the search | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `raw` | boolean | Whether to return raw data | No |

  #### Redfin For Rent

  Get rental property listings on Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin URL for the search | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `raw` | boolean | Whether to return raw data | No |

  #### Redfin Search

  Search for properties on Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin URL for the search | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  #### Redfin Agent

  Get real estate agent information from Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin agent URL | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  </details>

  ## Documentation

  - [ScraperAPI Official Documentation](https://docs.scraperapi.com)

  ## Version History

  - **0.1.1**: Initial release with API resource support
  - **0.1.2**: Usage added to Documentation
  - **0.2.0**: Replace device_type options field with desktopDevice and mobileDevice boolean fields to support AI model auto-definition.
  - **1.0.0**: output_format and autoparse parameters supported.
  - **1.1.0**: Crawler resource: initiate crawler jobs, get job status, and cancel jobs.
  - **1.2.0**: Structured Data Endpoints (SDEs) resource for Amazon, Google, Walmart, eBay, and Redfin.
  - **1.2.1**: Refactor SDE optional parameters into per-operation collections to satisfy the n8n community node validator.
  - **1.2.2**: Publish via GitHub Actions with npm provenance attestation; bump `@n8n/node-cli` to `^0.29.1`.
  - **1.2.3**: Preserve original error types (e.g. `NodeOperationError`) when `continueOnFail` is off.
  - **1.3.0**: AI Parser resource: create, get, list, parse, update, and delete AI-powered parsers. API resource: add the `zipCode` parameter for Amazon location-specific results (Amazon US only).

  ## More ScraperAPI Integrations

  ### MCP Server

  ScraperAPI also provides an **MCP (Model Context Protocol) server** that enables AI models and agents to scrape websites.

  #### Hosted MCP Server

  ScraperAPI offers a hosted MCP server that you can use with n8n's [MCP Client Tool](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/).

  **Configuration Steps:**

  1. Add an **MCP Client Tool** node to your workflow
  2. Configure the following settings:
     - **Endpoint**: `https://mcp.scraperapi.com/mcp`
     - **Server Transport**: `HTTP Streamable`
     - **Authentication**: `Bearer Auth`
     - **Credential for Bearer Auth**: Enter your ScraperAPI API key as a Bearer Token.
     - **Tools to include**: `All` (or select specific tools as needed)

  #### Self-Hosted MCP Server

  If you prefer to self-host the MCP server, you can find the implementation and setup instructions in the [scraperapi-mcp repository](https://github.com/scraperapi/scraperapi-mcp).

ai_documentation_summary:
  {"purpose":"This n8n community node enables scraping any website by handling proxies, browser automation, and CAPTCHAs, or extracting structured data from popular e-commerce and business sites.","capabilities":["Scrape single URLs with GET requests","Handle JavaScript rendering for dynamic content","Geo-target scraping by country","Simulate desktop or mobile device user agents","Extract structured data from Amazon, Google, eBay, Walmart, and Redfin","Run multi-page crawler jobs with webhook streaming","Support multiple output formats (HTML, markdown, text, CSV, JSON)","Use premium proxies and advanced bypass mechanisms"],"authentication":"API key required (entered in node credentials)","commonUseCases":["Extract product data from Amazon or eBay","Monitor competitor pricing","Scrape job listings from Google or Indeed","Gather real estate listings from Redfin","Automate data collection from dynamic websites"],"limitations":["Requires a paid ScraperAPI account and API key","Desktop and mobile device options are mutually exclusive","Premium and ultraPremium proxy options are mutually exclusive","CSV and JSON output formats only available for autoparse websites","Crawler jobs require a webhook endpoint for result streaming"],"relatedNodes":["HTTP Request","Webhook","Code","JSON","Split In Batches"]}


node_type: n8n-nodes-openmic.openMicAi
package_name: n8n-nodes-openmic
display_name: OpenMicAI
description: Interact with OpenMicAI API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: openmic
author_github_url: https://github.com/OpenMicAI/
npm_package_name: n8n-nodes-openmic
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:33.495Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "phoneCall",
      "options": [
        {
          "name": "Phone Call",
          "value": "phoneCall"
        },
        {
          "name": "Bot",
          "value": "bot"
        },
        {
          "name": "Call",
          "value": "call"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create a Phone Call",
          "value": "create",
          "action": "Create a phone call"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "phoneCall"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Find Bot",
          "value": "get",
          "action": "Find a bot by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many bots"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Find Call",
          "value": "get",
          "action": "Find a call by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many calls"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create a Phone Call",
      "value": "create",
      "action": "Create a phone call",
      "resource": "phoneCall"
    },
    {
      "name": "Find Bot",
      "value": "get",
      "action": "Find a bot by ID",
      "resource": "bot"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many bots",
      "resource": "bot"
    },
    {
      "name": "Find Call",
      "value": "get",
      "action": "Find a call by ID",
      "resource": "call"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many calls",
      "resource": "call"
    }
  ]

npm_readme:
  # n8n-nodes-openmic

  This is the official n8n node for OpenMic. It provides nodes to interact with the OpenMic API for creating and managing voice AI agents.

  [OpenMic](https://openmic.ai) provides APIs for creating conversational AI agents with natural-sounding voices.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Phone Call

  - **Create a Phone Call** - Initiate a phone call between two numbers with optional agent override, customer ID, dynamic variables, and callback URL.

  ### Bot

  - **Find Bot** - Retrieve a specific bot by its Agent UID.
  - **Get Many** - List all bots with optional filters (name, created date range) and limit.

  ### Call

  - **Find Call** - Retrieve a specific call by its Call UID.
  - **Get Many** - List all calls with optional filters (customer ID, phone numbers, bot ID, date range, call status, call type) and limit.
  - **Watch Call (Webhook Trigger)** - Watch a call by its Bot UID and trigger a webhook when the call is completed.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [OpenMic API Documentation](https://docs.openmic.ai)

  ## Support

  For support with this integration, please contact OpenMic support at team@openmic.ai or visit our [documentation](https://docs.openmic.ai).

ai_documentation_summary:
  {"purpose":"This node enables interaction with the OpenMic API to create and manage voice AI agents, including initiating phone calls and managing bot/call data.","capabilities":["Create phone calls between two numbers","Override agent during phone calls","Pass customer IDs and dynamic variables to calls","Set callback URLs for call events","Retrieve specific bots by Agent UID","List all bots with filtering options","Retrieve specific calls by Call UID","List all calls with filtering options","Trigger webhooks when calls complete"],"authentication":"API key required","commonUseCases":["Automated customer support via voice calls","Scheduling appointments through voice agents","Monitoring call activity and status","Managing multiple voice AI agents"],"limitations":[],"relatedNodes":["n8n-nodes-webhook.webhook","n8n-nodes-http.request"]}


node_type: @custom-js/n8n-nodes-pdf-toolkit-v2.pdfToolkit
package_name: @custom-js/n8n-nodes-pdf-toolkit-v2
display_name: CustomJS (PDF & File Toolkit)
description: All-in-one toolkit for PDF, HTML, JSON, and file conversions.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: henriklippke
author_github_url: https://github.com/customjs/n8n-nodes-pdf-toolkit-v2.git
npm_package_name: @custom-js/n8n-nodes-pdf-toolkit-v2
npm_version: 0.12.0
community_fetched_at: 2026-07-14T14:40:33.496Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "convert",
      "options": [
        {
          "name": "Convert",
          "value": "convert"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Web",
          "value": "web"
        },
        {
          "name": "Data",
          "value": "data"
        },
        {
          "name": "HTML Hosting",
          "value": "page"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pdfToPng",
      "options": [
        {
          "name": "PDF to PNG",
          "value": "pdfToPng",
          "action": "Convert PDF to PNG"
        },
        {
          "name": "PDF to Text",
          "value": "pdfToText",
          "action": "Convert PDF to Text"
        },
        {
          "name": "HTML to DOCX",
          "value": "htmlToDocx",
          "action": "Convert HTML to DOCX"
        },
        {
          "name": "HTML to PDF",
          "value": "htmlToPdf",
          "action": "Convert HTML to PDF"
        },
        {
          "name": "JSON to TOON",
          "value": "jsonToToon",
          "action": "Convert JSON to TOON"
        },
        {
          "name": "TOON to JSON",
          "value": "toonToJson",
          "action": "Convert TOON to JSON"
        },
        {
          "name": "Markdown to HTML",
          "value": "markdownToHtml",
          "action": "Convert Markdown to HTML"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "convert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "compress",
      "options": [
        {
          "name": "Compress",
          "value": "compress",
          "action": "Compress PDF"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge PDFs"
        },
        {
          "name": "Extract Pages",
          "value": "extractPages",
          "action": "Extract Pages from PDF"
        },
        {
          "name": "Get Form Fields",
          "value": "getFormFields",
          "action": "Get PDF Form Fields"
        },
        {
          "name": "Fill Form",
          "value": "fillForm",
          "action": "Fill PDF Form"
        },
        {
          "name": "Generate Invoice",
          "value": "generateInvoice",
          "action": "Generate Invoice PDF"
        },
        {
          "name": "Split Pages",
          "value": "splitPages",
          "action": "Split PDF into individual pages"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape Website"
        },
        {
          "name": "Screenshot",
          "value": "screenshot",
          "action": "Take Screenshot"
        },
        {
          "name": "SSL Check",
          "value": "sslCheck",
          "action": "Check SSL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "web"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "jsonSelect",
      "options": [
        {
          "name": "JSON Select",
          "value": "jsonSelect",
          "action": "Select JSON Data"
        },
        {
          "name": "Regex",
          "value": "regex",
          "action": "Regex Tool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "data"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Get HTML Pages",
          "value": "getAll",
          "action": "Get HTML Pages"
        },
        {
          "name": "Host HTML Page",
          "value": "upload",
          "action": "Upload new HTML Page"
        },
        {
          "name": "Update HTML Page",
          "value": "update",
          "action": "Update existing HTML Page"
        },
        {
          "name": "Upsert HTML Page",
          "value": "upsert",
          "action": "Upsert HTML Page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "PDF to PNG",
      "value": "pdfToPng",
      "action": "Convert PDF to PNG",
      "resource": "convert"
    },
    {
      "name": "PDF to Text",
      "value": "pdfToText",
      "action": "Convert PDF to Text",
      "resource": "convert"
    },
    {
      "name": "HTML to DOCX",
      "value": "htmlToDocx",
      "action": "Convert HTML to DOCX",
      "resource": "convert"
    },
    {
      "name": "HTML to PDF",
      "value": "htmlToPdf",
      "action": "Convert HTML to PDF",
      "resource": "convert"
    },
    {
      "name": "JSON to TOON",
      "value": "jsonToToon",
      "action": "Convert JSON to TOON",
      "resource": "convert"
    },
    {
      "name": "TOON to JSON",
      "value": "toonToJson",
      "action": "Convert TOON to JSON",
      "resource": "convert"
    },
    {
      "name": "Markdown to HTML",
      "value": "markdownToHtml",
      "action": "Convert Markdown to HTML",
      "resource": "convert"
    },
    {
      "name": "Compress",
      "value": "compress",
      "action": "Compress PDF",
      "resource": "pdf"
    },
    {
      "name": "Merge",
      "value": "merge",
      "action": "Merge PDFs",
      "resource": "pdf"
    },
    {
      "name": "Extract Pages",
      "value": "extractPages",
      "action": "Extract Pages from PDF",
      "resource": "pdf"
    },
    {
      "name": "Get Form Fields",
      "value": "getFormFields",
      "action": "Get PDF Form Fields",
      "resource": "pdf"
    },
    {
      "name": "Fill Form",
      "value": "fillForm",
      "action": "Fill PDF Form",
      "resource": "pdf"
    },
    {
      "name": "Generate Invoice",
      "value": "generateInvoice",
      "action": "Generate Invoice PDF",
      "resource": "pdf"
    },
    {
      "name": "Split Pages",
      "value": "splitPages",
      "action": "Split PDF into individual pages",
      "resource": "pdf"
    },
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape Website",
      "resource": "web"
    },
    {
      "name": "Screenshot",
      "value": "screenshot",
      "action": "Take Screenshot",
      "resource": "web"
    },
    {
      "name": "SSL Check",
      "value": "sslCheck",
      "action": "Check SSL",
      "resource": "web"
    },
    {
      "name": "JSON Select",
      "value": "jsonSelect",
      "action": "Select JSON Data",
      "resource": "data"
    },
    {
      "name": "Regex",
      "value": "regex",
      "action": "Regex Tool",
      "resource": "data"
    },
    {
      "name": "Get HTML Pages",
      "value": "getAll",
      "action": "Get HTML Pages",
      "resource": "page"
    },
    {
      "name": "Host HTML Page",
      "value": "upload",
      "action": "Upload new HTML Page",
      "resource": "page"
    },
    {
      "name": "Update HTML Page",
      "value": "update",
      "action": "Update existing HTML Page",
      "resource": "page"
    },
    {
      "name": "Upsert HTML Page",
      "value": "upsert",
      "action": "Upsert HTML Page",
      "resource": "page"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # @custom-js/n8n-nodes-pdf-toolkit-v2

  This is an n8n community node. It lets interact with official API of [customJS API](https://www.customjs.space/)

  This package contains nodes to help you generate PDF from HTML, merge multiple PDF files, take a screenshot of specific website using URL, convert PDF to PNG, convert PDF to Text and extract pages from PDF.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Usage](#usage)
  - [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  Use the package at [here](https://www.npmjs.com/package/@custom-js/n8n-nodes-pdf-toolkit).

  ## Credentials

  Add your Api Key and store securely


  ## Usage

  ### "HTML to PDF" node

  - Add the HTML to PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input your HTML content
  - Execute the workflow to generate PDF

  ### "Merge PDFs" node

  - Add the Merge PDFs node to your workflow
  - Configure your CustomJS API credentials
  - Input PDF files as an array with the same field name to merge.
  - If total size of files exceeds 6MB, pass it as an array of URL seperated by comma.
  - Execute the workflow to get merged PDF file.

  ### "Website Screenshot" node

  - Add the Website Screenshot node to your workflow
  - Configure your CustomJS API credentials
  - Input your URL of website to take screenshot
  - Execute the workflow to take a screenshot of that website

  ### "Compress PDF" node

  - Add the Compress PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for compression to compress
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get a compression of PDF file.

  ### "PDF To PNG" node

  - Add the PDF To PNG node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted PNG file.

  ### "PDF To Text" node

  - Add the PDF To Text node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted Text file.

  ### "Extract Pages From PDF" node

  - Add the Extract Pages From PDF node to your workflow
  - Configure your CustomJS API credentials
  - Input Binary PDF file for conversion
  - If size of the binary file exceeds 6MB, pass it as URL.
  - Execute the workflow to get converted Pages from PDF file.

  ### "SSL Checker" node

  - Add the **SSL Checker** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the domain you want to check (e.g., `example.com`).
  - Execute the workflow to get information about the SSL certificate, including the expiration date.

  ### "Scraper" node

  - Add the **Scraper** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the website URL you want to scrape (must start with `https://`).
  - Optionally, define user actions (click, type, wait) to interact with page elements using selectors.
  - Choose the return type:  
    - **Raw HTML**: Get the HTML content of the page.  
    - **Screenshot (PNG)**: Get a screenshot of the page.
  - Enable or disable debug mode to control error handling for missing elements.
  - Execute the workflow to scrape the website and receive the desired output.

  ### "Markdown to HTML" node

  - Add the **Markdown to HTML** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the Markdown content you want to convert to HTML.
  - Execute the workflow to get the converted HTML content.

  ### "HTML to Docx (Word)" node

  - Add the **HTML to Docx (Word)** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the HTML content you want to convert to Docx (Word).
  - Execute the workflow to get the converted Docx (Word) file.


  ### "PDF Form Fill" node

  - Add the **PDF Form Fill** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the PDF file you want to fill out.
  - Define the form fields and their values.
  - Execute the workflow to get the filled-out PDF file.

  ### "Get PDF Form Field Names" node

  - Add the **Get PDF Form Field Names** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input the PDF file you want to get form field names from.
  - Execute the workflow to get the form field names.

  ### "Split PDF into Pages" node

  - Add the **Split PDF into Pages** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input a PDF file (binary) or provide a URL.
  - Optionally set an **Output Filename Prefix** (default: `page`) — each page is returned as `page_1.pdf`, `page_2.pdf`, etc.
  - Execute the workflow — the node **returns one n8n item per page**, each containing the page as a binary PDF and the JSON fields `page` (page number) and `totalPages`.

  ### "Invoice Generator" node

  - Add the **Invoice Generator** node to your workflow.
  - Configure your CustomJS API credentials.
  - Select a PDF template.
  - Fill in the issuer, payment, recipient, and billing information.
  - Add items to the invoice.
  - Execute the workflow to generate the PDF invoice.

  ### "JSON to TOON" node

  - Add the **JSON to TOON** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your JSON data.
  - Execute the workflow to convert JSON to TOON format.
  - TOON format can reduce AI tokenization by 40% to 60% when working with language models.

  ### "TOON to JSON" node

  - Add the **TOON to JSON** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your TOON data.
  - Execute the workflow to convert TOON to JSON format.

  ### Host HTML Page node

  - Add the **Host HTML Page** node to your workflow.
  - Configure your CustomJS API credentials.
  - Input your HTML content.
  - Execute the workflow to host the HTML page.
  - You can then access the hosted page via the provided URL.

ai_documentation_summary:
  {"purpose":"This n8n community node acts as an all-in-one toolkit for PDF manipulation, file conversions, website interactions, and document generation using the CustomJS API.","capabilities":["Convert HTML to PDF","Merge multiple PDF files","Take website screenshots","Convert PDF to PNG","Convert PDF to text","Extract pages from PDF","Compress PDF files","Check SSL certificate status","Scrape websites with optional user actions","Convert Markdown to HTML"],"authentication":"API Key required (CustomJS API credentials)","commonUseCases":["Automated document generation for invoices","Converting web content to PDF or image formats","Extracting text from scanned documents","Automating website scraping and data collection","Filling out digital forms programmatically"],"limitations":["Large files (exceeding 6MB) must be passed as URLs instead of binary files for most operations","Requires valid CustomJS API credentials","Community node status may indicate less official support compared to core n8n nodes"],"relatedNodes":["HTTP Request","Binary File","Code","Webhook"]}


node_type: n8n-nodes-outplay.outplay
package_name: n8n-nodes-outplay
display_name: Outplay
description: Interact with Outplay API
category: CRM
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: pj_pratik
author_github_url: https://github.com/outplay-hq/
npm_package_name: n8n-nodes-outplay
npm_version: 0.2.15
community_fetched_at: 2026-07-14T14:40:33.497Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prospect",
      "options": [
        {
          "name": "Prospect",
          "value": "prospect"
        },
        {
          "name": "Scheduler",
          "value": "scheduler"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "save",
      "options": [
        {
          "name": "Save Prospect",
          "value": "save",
          "action": "Save a prospect",
          "description": "Save a new prospect"
        },
        {
          "name": "Get Prospect",
          "value": "get",
          "action": "Get a prospect",
          "description": "Get a prospect by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prospect"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a scheduler lead",
          "description": "Create a scheduler lead with meeting type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scheduler"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Save Prospect",
      "value": "save",
      "action": "Save a prospect",
      "description": "Save a new prospect",
      "resource": "prospect"
    },
    {
      "name": "Get Prospect",
      "value": "get",
      "action": "Get a prospect",
      "description": "Get a prospect by ID",
      "resource": "prospect"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a scheduler lead",
      "description": "Create a scheduler lead with meeting type",
      "resource": "scheduler"
    }
  ]

npm_readme:
  # n8n-nodes-outplay

  This is an n8n community node. It lets you use Outplay in your n8n workflows.

  Outplay is a sales engagement platform that helps sales teams automate their outreach and manage prospects effectively.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Usage](#usage)  
  [Compatibility](#compatibility)  
  [Resources](#resources)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### Quick Install

  In your n8n instance, navigate to **Settings > Community Nodes** and search for `n8n-nodes-outplay`, then click install.

  Alternatively, install via npm in your n8n installation:

  ```bash
  npm install n8n-nodes-outplay
  ```

  ## Operations

  This package provides two nodes for interacting with Outplay:

  ### 1. Outplay Node (Actions)

  The Outplay node provides the following operations for managing prospects:

  #### Prospect Resource

  - **Save Prospect** - Create or update a prospect in Outplay
    - Required fields: Email, First Name, Last Name
    - Optional fields: Company, Designation, Phone, LinkedIn, Twitter, Facebook, City, State, Country, Timezone, Sequence Identifier
    - Support for custom fields and tags
    - Use this to add new prospects or update existing ones based on email

  - **Get Prospect** - Retrieve prospect details by ID
    - Required field: Prospect ID
    - Returns complete prospect information including all custom fields and tags

  ### 2. Outplay Trigger Node (Triggers)

  The Outplay Trigger node listens for real-time events from Outplay via webhooks:

  - **Mail Received** (Event ID: 4) - Triggers when an email is received from a prospect
  - **Prospect Created** (Event ID: 1) - Triggers when a new prospect is created in Outplay
  - **Prospect Updated** (Event ID: 3) - Triggers when a prospect's information is updated
  - **Prospect Opt-Out** (Event ID: 2) - Triggers when a prospect opts out of communications

  ## Credentials

  To use this node, you need an Outplay account with API access.

  ### Prerequisites

  1. Sign up for an [Outplay account](https://www.outplayhq.com/)
  2. Navigate to **Settings > API Settings** in your Outplay dashboard
  3. Generate your API credentials (Client ID and Client Secret)

  ### Authentication Setup

  This node uses API Key authentication with the following required fields:

  - **Location**: Your Outplay instance location (e.g., "US", "EU", "DEV")
    - This determines the API endpoint: `https://{location}-api.outplayhq.com/api/v1`
  - **Client ID**: Your Outplay API Client ID
  - **Client Secret**: Your Outplay API Client Secret

  The credentials are authenticated using custom headers (`X-CLIENT-SECRET`) and query parameters (`client_id`).

  ### Setting Up Credentials in n8n

  1. In your n8n workflow, click on the Outplay node
  2. Click on the **Credential to connect with** dropdown
  3. Click **Create New Credential**
  4. Enter your Outplay API credentials:
     - Location (e.g., "US", "EU")
     - Client ID
     - Client Secret
  5. Click **Save**

  ## Usage

  ### Example Workflow: Save a New Prospect

  1. Add an **Outplay** node to your workflow
  2. Select **Prospect** as the resource
  3. Select **Save Prospect** as the operation
  4. Fill in the required fields:
     - Email: `john.doe@example.com`
     - First Name: `John`
     - Last Name: `Doe`
  5. Optionally add additional fields like Company, Designation, Phone, etc.
  6. Add tags or custom fields as needed
  7. Execute the node to create the prospect in Outplay

  ### Example Workflow: Listen for New Prospects

  1. Add an **Outplay Trigger** node to your workflow
  2. Select **Prospect Created** as the event
  3. The trigger will automatically register a webhook with Outplay
  4. When a new prospect is created in Outplay, the workflow will be triggered
  5. Use subsequent nodes to process the prospect data (e.g., send notifications, update CRM, etc.)

  ### Example Workflow: Get Prospect Details

  1. Add an **Outplay** node to your workflow
  2. Select **Prospect** as the resource
  3. Select **Get Prospect** as the operation
  4. Enter the Prospect ID
  5. Execute the node to retrieve the prospect's complete information

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with n8n version**: 1.119.1
  - **n8n API version**: 1

  ## Development

  This node was built using the official n8n-node-dev tool and follows all n8n community node guidelines:

  - ✅ No external dependencies
  - ✅ MIT License
  - ✅ TypeScript implementation
  - ✅ Passes n8n linter (`npm run lint`)
  - ✅ English language only
  - ✅ No environment variable or file system access
  - ✅ Proper error handling and validation

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Outplay API Documentation](https://support.outplay.ai/#/article/3749)
  * [Outplay Website](https://www.outplayhq.com/)
  * [GitHub Repository](https://github.com/outplay/n8n-nodes-outplay)

  ## License

  [MIT](LICENSE.md)

  ## Support

  For issues or questions:
  - Create an issue on [GitHub](https://github.com/outplay-hq/n8n-nodes-outplay/issues)
  - Contact Outplay support at [support.outplay.ai](https://support.outplay.ai/#/)

  ## Version History

  See [CHANGELOG.md](CHANGELOG.md) for version history and updates.

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Outplay sales engagement platform API to manage prospects and listen for real-time events.","capabilities":["Save/Create prospects with email, name, and optional custom fields","Update existing prospects","Retrieve prospect details by ID","Listen for Mail Received events","Listen for Prospect Created events","Listen for Prospect Updated events","Listen for Prospect Opt-Out events","Support for custom fields and tags","Webhook-based event triggers"],"authentication":"API Key (Client ID and Client Secret)","commonUseCases":["Automating prospect data entry into Outplay","Triggering workflows when new leads are created","Updating CRM records based on Outplay events","Retrieving prospect information for downstream processing"],"limitations":["Requires an Outplay account with API access","Limited to prospect management and event listening (no other Outplay features mentioned)"],"relatedNodes":["Outplay Trigger","Outplay (Actions)","Webhook","HTTP Request"]}


node_type: @coginiti/n8n-nodes-coginiti.coginiti
package_name: @coginiti/n8n-nodes-coginiti
display_name: Coginiti
description: Interact with Coginiti API (Catalog, Execute, Identity Management)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: dimabreeze
author_github_url: https://github.com/coginiti-dev/n8n-nodes-coginiti.git
npm_package_name: @coginiti/n8n-nodes-coginiti
npm_version: 1.2.0
community_fetched_at: 2026-07-14T14:40:33.498Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Catalog",
          "value": "catalog",
          "description": "Browse and manage catalog items"
        },
        {
          "name": "Execute",
          "value": "execute",
          "description": "Execute scripts, blocks, and tests"
        },
        {
          "name": "Group",
          "value": "group",
          "description": "Manage groups"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Manage users"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAssets",
      "options": [
        {
          "name": "Create Asset",
          "value": "createAsset",
          "action": "Create asset",
          "description": "Create a new asset"
        },
        {
          "name": "Create Folder",
          "value": "createFolder",
          "action": "Create folder",
          "description": "Create a new folder"
        },
        {
          "name": "Delete Asset",
          "value": "deleteAsset",
          "action": "Delete asset",
          "description": "Delete an existing asset"
        },
        {
          "name": "Delete Folder",
          "value": "deleteFolder",
          "action": "Delete folder",
          "description": "Delete an existing folder"
        },
        {
          "name": "Get Item by Path",
          "value": "getAsset",
          "action": "Get item by path",
          "description": "Get a single item by path"
        },
        {
          "name": "List Items",
          "value": "listAssets",
          "action": "List catalog items",
          "description": "List catalog items by given path"
        },
        {
          "name": "Update Asset",
          "value": "updateAsset",
          "action": "Update asset",
          "description": "Update an existing asset"
        },
        {
          "name": "Update Folder",
          "value": "updateFolder",
          "action": "Update folder",
          "description": "Update an existing folder"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "catalog"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "executeScript",
      "options": [
        {
          "name": "Execute Block",
          "value": "executeBlock",
          "action": "Execute block",
          "description": "Execute a specific CoginitiScript block from a catalog asset"
        },
        {
          "name": "Execute Script",
          "value": "executeScript",
          "action": "Execute script",
          "description": "Execute a script from the catalog and get a single result set. If the script produces multiple result sets, only the first one is returned."
        },
        {
          "name": "Execute SQL",
          "value": "executeSQL",
          "action": "Execute SQL",
          "description": "Execute a SQL query directly against a connection and get a single result set. This endpoint lets you run queries without first saving them as catalog assets."
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "execute"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create user",
          "description": "Create a new user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete user",
          "description": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get user",
          "description": "Get a user by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List users",
          "description": "List all users"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update user",
          "description": "Update a user"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create group",
          "description": "Create a new group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete group",
          "description": "Delete a group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get group",
          "description": "Get a group by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List groups",
          "description": "List all groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update group",
          "description": "Update a group"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Asset",
      "value": "createAsset",
      "action": "Create asset",
      "description": "Create a new asset",
      "resource": "catalog"
    },
    {
      "name": "Create Folder",
      "value": "createFolder",
      "action": "Create folder",
      "description": "Create a new folder",
      "resource": "catalog"
    },
    {
      "name": "Delete Asset",
      "value": "deleteAsset",
      "action": "Delete asset",
      "description": "Delete an existing asset",
      "resource": "catalog"
    },
    {
      "name": "Delete Folder",
      "value": "deleteFolder",
      "action": "Delete folder",
      "description": "Delete an existing folder",
      "resource": "catalog"
    },
    {
      "name": "Get Item by Path",
      "value": "getAsset",
      "action": "Get item by path",
      "description": "Get a single item by path",
      "resource": "catalog"
    },
    {
      "name": "List Items",
      "value": "listAssets",
      "action": "List catalog items",
      "description": "List catalog items by given path",
      "resource": "catalog"
    },
    {
      "name": "Update Asset",
      "value": "updateAsset",
      "action": "Update asset",
      "description": "Update an existing asset",
      "resource": "catalog"
    },
    {
      "name": "Update Folder",
      "value": "updateFolder",
      "action": "Update folder",
      "description": "Update an existing folder",
      "resource": "catalog"
    },
    {
      "name": "Execute Block",
      "value": "executeBlock",
      "action": "Execute block",
      "description": "Execute a specific CoginitiScript block from a catalog asset",
      "resource": "execute"
    },
    {
      "name": "Execute Script",
      "value": "executeScript",
      "action": "Execute script",
      "description": "Execute a script from the catalog and get a single result set. If the script produces multiple result sets, only the first one is returned.",
      "resource": "execute"
    },
    {
      "name": "Execute SQL",
      "value": "executeSQL",
      "action": "Execute SQL",
      "description": "Execute a SQL query directly against a connection and get a single result set. This endpoint lets you run queries without first saving them as catalog assets.",
      "resource": "execute"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create user",
      "description": "Create a new user",
      "resource": "user"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete user",
      "description": "Delete a user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get user",
      "description": "Get a user by ID",
      "resource": "user"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List users",
      "description": "List all users",
      "resource": "user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update user",
      "description": "Update a user",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create group",
      "description": "Create a new group",
      "resource": "group"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete group",
      "description": "Delete a group",
      "resource": "group"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get group",
      "description": "Get a group by ID",
      "resource": "group"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List groups",
      "description": "List all groups",
      "resource": "group"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update group",
      "description": "Update a group",
      "resource": "group"
    }
  ]

npm_readme:
  # @coginiti/n8n-nodes-coginiti

  This is an n8n community node. It lets you use [Coginiti API](https://support.coginiti.co/hc/categories/18554190258711-API) in your n8n workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  Supports all of the Coginiti API operations as of Nov-11, 2025

  ## Credentials

  Coginiti API Token is required to run Coginiti automations, read more about [managing personal access tokens](https://support.coginiti.co/hc/articles/18723746168087-Managing-Personal-Access-Tokens).

  ## Compatibility

  Coginiti node was tested against n8n 1.116.2

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Coginiti API documentation](https://support.coginiti.co/hc/categories/18554190258711-API)

  ## Version history

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Coginiti API to manage catalogs, execute tasks, and handle identity management within automated workflows.","capabilities":["Catalog operations","Task execution","Identity management","API integration with Coginiti"],"authentication":"API Token required (Personal Access Token)","commonUseCases":["Automating catalog management tasks","Executing Coginiti services via workflow automation","Handling user identity operations in Coginiti"],"limitations":["Limited to operations supported as of November 11, 2025","Tested only against n8n version 1.116.2"],"relatedNodes":["n8n community nodes","API nodes"]}


node_type: n8n-nodes-browserbase.browserbase
package_name: n8n-nodes-browserbase
display_name: Browserbase
description: Browser automation, web search, and page fetches with Browserbase.
category: Community
development_style: declarative
version: 3
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: desaadi
author_github_url: https://github.com/browserbase/n8n-node.git
npm_package_name: n8n-nodes-browserbase
npm_version: 1.4.0
community_fetched_at: 2026-07-14T14:40:33.499Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Run an Agent",
          "value": "execute",
          "action": "Run an agent",
          "description": "Run an AI agent to perform browser automation tasks"
        },
        {
          "name": "Fetch a Webpage",
          "value": "fetch",
          "action": "Fetch a webpage",
          "description": "Fetch a page without starting a browser session"
        },
        {
          "name": "Search the Web",
          "value": "search",
          "action": "Search the web",
          "description": "Search the web and return structured results"
        }
      ],
      "displayName": "Action",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 3
              }
            }
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Fetch",
          "value": "fetch"
        },
        {
          "name": "Search",
          "value": "search"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lt": 3
              }
            }
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Run an Agent",
          "value": "execute",
          "action": "Run an agent",
          "description": "Run an AI agent to perform browser automation tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lt": 3
              }
            }
          ],
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetch",
      "options": [
        {
          "name": "Fetch",
          "value": "fetch",
          "action": "Fetch a page",
          "description": "Fetch a page without starting a browser session"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lt": 3
              }
            }
          ],
          "resource": [
            "fetch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search the web",
          "description": "Search the web and return structured results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lt": 3
              }
            }
          ],
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Run an Agent",
      "value": "execute",
      "action": "Run an agent",
      "description": "Run an AI agent to perform browser automation tasks"
    },
    {
      "name": "Fetch a Webpage",
      "value": "fetch",
      "action": "Fetch a webpage",
      "description": "Fetch a page without starting a browser session"
    },
    {
      "name": "Search the Web",
      "value": "search",
      "action": "Search the web",
      "description": "Search the web and return structured results"
    },
    {
      "name": "Run an Agent",
      "value": "execute",
      "action": "Run an agent",
      "description": "Run an AI agent to perform browser automation tasks",
      "resource": "agent"
    },
    {
      "name": "Fetch",
      "value": "fetch",
      "action": "Fetch a page",
      "description": "Fetch a page without starting a browser session",
      "resource": "fetch"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search the web",
      "description": "Search the web and return structured results",
      "resource": "search"
    }
  ]

npm_readme:
  # n8n-nodes-browserbase

  This is an n8n community node for [Browserbase](https://browserbase.com). It gives your workflows three Browserbase capabilities in one node:

  1. `Agent`: run Stagehand-powered browser automation
  2. `Search`: find relevant URLs without creating a browser session
  3. `Fetch`: retrieve page content without creating a browser session

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Development / Testing with Docker

  ```bash
  npm install
  npm run build
  docker-compose up --build
  ```

  Open `http://localhost:5678` and search for `Browserbase`.

  To rebuild after changes:

  ```bash
  npm run build && docker-compose up --build
  ```

  ## Capabilities

  ### Agent

  Use Browserbase browser sessions plus Stagehand to complete browser tasks from a prompt.

  Required fields:

  | Field | Description |
  | --- | --- |
  | `Starting URL` | The page where the agent begins |
  | `Instruction` | Natural language task for the agent to complete |

  The Agent resource supports:

  - CUA, DOM, and Hybrid modes
  - Browserbase Model Gateway or your own model API key
  - Session options like region, proxies, context reuse, and keep-alive
  - Variables for DOM and Hybrid flows

  ### Search

  Use Browserbase Search to find relevant URLs quickly without launching a browser.

  Required fields:

  | Field | Description |
  | --- | --- |
  | `Query` | Search query to execute |

  Optional fields:

  | Field | Description |
  | --- | --- |
  | `Number of Results` | How many results to return, from 1 to 25 |

  Search output includes:

  - `requestId`
  - `query`
  - `results`
  - `resultCount`

  ### Fetch

  Use Browserbase Fetch to retrieve raw page content without launching a browser.

  Required fields:

  | Field | Description |
  | --- | --- |
  | `URL` | URL to fetch |

  Optional fetch settings:

  - Follow redirects
  - Allow insecure SSL
  - Use Browserbase proxies

  Fetch output includes:

  - `statusCode`
  - `headers`
  - `content`
  - `contentType`
  - `encoding`

  ## Credentials

  The node uses one Browserbase credential:

  | Credential | Description |
  | --- | --- |
  | `Browserbase API Key` | Required for all resources |
  | `Browserbase Project ID (Deprecated)` | Optional legacy header |
  | `Anthropic / OpenAI / Google API Key` | Optional. Bring your own model API key per provider for the Agent. Leave all empty to use the Browserbase Model Gateway. |

  ## Example Usage

  ### Search

  - Resource: `Search`
  - Query: `browserbase documentation`

  ### Fetch

  - Resource: `Fetch`
  - URL: `https://browserbase.com`

  ### Agent

  - Resource: `Agent`
  - Starting URL: `https://github.com`
  - Instruction: `Search for "stagehand" and open the first repository result`

  ## Compatibility

  Compatible with n8n `1.60.0` or later.

  ## Resources

  - [Browserbase Documentation](https://docs.browserbase.com)
  - [Fetch Overview](https://docs.browserbase.com/platform/fetch/overview)
  - [Search Overview](https://docs.browserbase.com/platform/search/overview)
  - [Stagehand Documentation](https://docs.stagehand.dev)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Automates browser tasks using AI agents powered by Browserbase and Stagehand, allowing users to navigate websites and perform actions via natural language instructions.","capabilities":["Browser session creation and management","Natural language task execution","Computer Use Agent (CUA) mode for visual UI interactions","DOM mode for selector-based interactions","Hybrid mode combining both approaches","Support for multiple LLM providers (Google, OpenAI, Anthropic)","Automatic session cleanup after task completion"],"authentication":"API key required (Browserbase API key, Project ID, and Model provider API key)","commonUseCases":["Web form filling and submission","Data extraction from websites","Navigation and clicking on specific elements","Complex UI automation with visual recognition"],"limitations":["Requires separate credentials for Browserbase and the chosen LLM provider","Model availability depends on the selected agent mode","Requires n8n version 1.60.0 or later","CUA mode may have higher latency compared to DOM mode"],"relatedNodes":["n8n-nodes-browserbase.browserbase","n8n-nodes-http.request","n8n-nodes-webhook.webhook"]}


node_type: @thingsboard/n8n-nodes-thingsboard.thingsBoard
package_name: @thingsboard/n8n-nodes-thingsboard
display_name: ThingsBoard
description: Interact with ThingsBoard REST API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: thingsboardiot
author_github_url: https://github.com/thingsboard/thingsboard-n8n-node.git
npm_package_name: @thingsboard/n8n-nodes-thingsboard
npm_version: 1.1.1
community_fetched_at: 2026-07-14T14:40:33.500Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "device",
      "options": [
        {
          "name": "Alarm",
          "value": "alarm"
        },
        {
          "name": "Asset",
          "value": "asset"
        },
        {
          "name": "Customer",
          "value": "customer"
        },
        {
          "name": "Dashboard",
          "value": "dashboard"
        },
        {
          "name": "Device",
          "value": "device"
        },
        {
          "name": "Entity Group",
          "value": "entityGroup"
        },
        {
          "name": "Relation",
          "value": "relation"
        },
        {
          "name": "Telemetry",
          "value": "telemetry"
        }
      ],
      "description": "Select which ThingsBoard resource to work with",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDeviceById",
      "options": [
        {
          "name": "Create",
          "value": "createDevice",
          "action": "Create a device",
          "description": "Create a device"
        },
        {
          "name": "Delete",
          "value": "deleteDevice",
          "action": "Delete a device",
          "description": "Delete a device"
        },
        {
          "name": "Get by ID",
          "value": "getDeviceById",
          "action": "Get a device by ID",
          "description": "Fetch a device based on the provided Device ID"
        },
        {
          "name": "Get by Name",
          "value": "getTenantDevice",
          "action": "Get a device by name",
          "description": "Fetch a device by name"
        },
        {
          "name": "Get Many",
          "value": "getTenantDevices",
          "action": "Get devices",
          "description": "Returns a page of devices"
        },
        {
          "name": "Get Many by Customer",
          "value": "getCustomerDevices",
          "action": "Get customer devices",
          "description": "Returns a page of devices assigned to the customer"
        },
        {
          "name": "Get Many by Entity Group",
          "value": "getDevicesByEntityGroupId",
          "action": "Get entity group devices",
          "description": "Returns a page of devices that belongs to the specified Entity Group ID"
        },
        {
          "name": "Get Many for Current User",
          "value": "getUserDevices",
          "action": "Get user devices",
          "description": "Returns a page of devices accessible to the current user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAssetById",
      "options": [
        {
          "name": "Create",
          "value": "createAsset",
          "action": "Create an asset",
          "description": "Create an asset"
        },
        {
          "name": "Delete",
          "value": "deleteAsset",
          "action": "Delete an asset",
          "description": "Delete an asset"
        },
        {
          "name": "Get by ID",
          "value": "getAssetById",
          "action": "Get asset by id",
          "description": "Fetch an asset based on the provided Asset ID"
        },
        {
          "name": "Get by Name",
          "value": "getTenantAsset",
          "action": "Get asset by name",
          "description": "Fetch an asset by name"
        },
        {
          "name": "Get Many",
          "value": "getTenantAssets",
          "action": "Get tenant assets",
          "description": "Returns a page of assets"
        },
        {
          "name": "Get Many by Customer",
          "value": "getCustomerAssets",
          "action": "Get customer assets",
          "description": "Returns a page of assets assigned to the customer"
        },
        {
          "name": "Get Many by Entity Group",
          "value": "getAssetsByEntityGroupId",
          "action": "Get assets by entity group",
          "description": "Returns a page of devices that belongs to the specified Entity Group ID"
        },
        {
          "name": "Get Many for Current User",
          "value": "getUserAssets",
          "action": "Get user assets",
          "description": "Returns a page of assets accessible to the current user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAlarmById",
      "options": [
        {
          "name": "Get All",
          "value": "getAllAlarms",
          "action": "Get all alarms",
          "description": "Returns a page of alarms that belongs to the current owner"
        },
        {
          "name": "Get by ID",
          "value": "getAlarmById",
          "action": "Get alarm by id",
          "description": "Fetch an alarm based on the provided Alarm ID"
        },
        {
          "name": "Get by originator",
          "value": "getAlarms",
          "action": "Get alarms by originator",
          "description": "Returns a page of alarms for the selected entity"
        },
        {
          "name": "Get Highest Severity",
          "value": "getHighestAlarmSeverity",
          "action": "Get alarm highest severity",
          "description": "Search the alarms by originator and return the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE)"
        },
        {
          "name": "Get Info by ID",
          "value": "getAlarmInfoById",
          "action": "Get alarm info by id",
          "description": "Fetch an alarm Info based on the provided Alarm ID"
        },
        {
          "name": "Get Types",
          "value": "getAlarmTypes",
          "action": "Get alarm types",
          "description": "Returns a set of unique alarm types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "alarm"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCustomerById",
      "options": [
        {
          "name": "Create",
          "value": "createCustomer",
          "action": "Create a customer",
          "description": "Create a customer"
        },
        {
          "name": "Delete",
          "value": "deleteCustomer",
          "action": "Delete a customer",
          "description": "Delete a customer"
        },
        {
          "name": "Get by ID",
          "value": "getCustomerById",
          "action": "Get customer by id",
          "description": "Fetch a customer based on the provided Customer ID"
        },
        {
          "name": "Get by Title",
          "value": "getTenantCustomer",
          "action": "Get customer by title",
          "description": "Fetch a customer by title"
        },
        {
          "name": "Get Many",
          "value": "getCustomers",
          "action": "Get customers",
          "description": "Returns a page of customers"
        },
        {
          "name": "Get Many by Entity Group",
          "value": "getCustomersByEntityGroupId",
          "action": "Get customers by entity group",
          "description": "Returns a list of customers based on the provided Entity ID"
        },
        {
          "name": "Get Many for Current User",
          "value": "getUserCustomers",
          "action": "Get user customers",
          "description": "Returns a page of customers available for the current user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRelation",
      "options": [
        {
          "name": "By From",
          "value": "findByFrom",
          "action": "Get relation by from",
          "description": "Returns list of relation objects for the specified entity by the \"from\" direction"
        },
        {
          "name": "By From (with Relation Type)",
          "value": "findByFromWithRelationType",
          "action": "Get relation by from with relation type",
          "description": "Returns list of relation objects for the specified entity by the \"from\" direction with relation type"
        },
        {
          "name": "By To",
          "value": "findByTo",
          "action": "Get relation by to",
          "description": "Returns list of relation objects for the specified entity by the \"to\" direction"
        },
        {
          "name": "By to (with Relation Type)",
          "value": "findByToWithRelationType",
          "action": "Get relation by to with relation type",
          "description": "Returns list of relation objects for the specified entity by the \"to\" direction with relation type"
        },
        {
          "name": "Get",
          "value": "getRelation",
          "action": "Get a relation",
          "description": "Fetch a specific relation based on the provided parameters"
        },
        {
          "name": "Info by From",
          "value": "findInfoByFrom",
          "action": "Get relation info by from",
          "description": "Fetch relation information for the specified entity by the \"from\" direction"
        },
        {
          "name": "Info by To",
          "value": "findInfoByTo",
          "action": "Get relation info by to",
          "description": "Fetch relation information for the specified entity by the \"to\" direction"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "relation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTimeseries",
      "options": [
        {
          "name": "Attribute Keys",
          "value": "getAttributeKeys",
          "action": "Get attribute keys",
          "description": "Returns a set of unique attribute key names for the selected entity"
        },
        {
          "name": "Attribute Keys (by Scope)",
          "value": "getAttributeKeysByScope",
          "action": "Get attribute keys by scope",
          "description": "Returns a set of unique attribute key names for the selected entity and scope"
        },
        {
          "name": "Attributes",
          "value": "getAttributes",
          "action": "Get attributes",
          "description": "Returns a list of attributes for the selected entity"
        },
        {
          "name": "Delete Device Attributes",
          "value": "deleteDeviceAttributes",
          "action": "Delete device attributes",
          "description": "Delete device attributes by keys"
        },
        {
          "name": "Delete Entity Attributes",
          "value": "deleteEntityAttributes",
          "action": "Delete entity attributes",
          "description": "Delete entity attributes by keys"
        },
        {
          "name": "Delete Entity Timeseries",
          "value": "deleteEntityTimeseries",
          "action": "Delete entity timeseries",
          "description": "Delete entity time series data"
        },
        {
          "name": "Save Device Attributes",
          "value": "saveDeviceAttributes",
          "action": "Save device attributes",
          "description": "Creates or updates device attributes"
        },
        {
          "name": "Save Entity Attributes",
          "value": "saveEntityAttributes",
          "action": "Save entity attributes",
          "description": "Creates or updates entity attributes for any entity type"
        },
        {
          "name": "Save Entity Telemetry",
          "value": "saveEntityTelemetry",
          "action": "Save entity telemetry",
          "description": "Creates or updates entity time series data"
        },
        {
          "name": "Save Entity Telemetry with TTL",
          "value": "saveEntityTelemetryWithTTL",
          "action": "Save entity telemetry with ttl",
          "description": "Creates or updates entity time series data with TTL"
        },
        {
          "name": "Timeseries (Latest)",
          "value": "getLatestTimeseries",
          "action": "Get latest timeseries",
          "description": "Returns the latest timeseries data for the selected entity"
        },
        {
          "name": "Timeseries (Range)",
          "value": "getTimeseries",
          "action": "Get timeseries",
          "description": "Returns timeseries data for the selected entity within a specified range"
        },
        {
          "name": "Timeseries Keys",
          "value": "getTimeseriesKeys",
          "action": "Get timeseries keys",
          "description": "Returns a set of unique timeseries key names for the selected entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "telemetry"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getEntityGroupById",
      "options": [
        {
          "name": "Get by ID",
          "value": "getEntityGroupById",
          "action": "Get entity group by id",
          "description": "Fetch an entity group based on the provided Entity Group ID"
        },
        {
          "name": "Get by Owner/Name/Type",
          "value": "getEntityGroupByOwnerAndNameAndType",
          "action": "Get entity group by owner name and type",
          "description": "Fetch an entity group based on the provided owner, name, and type"
        },
        {
          "name": "Get Many by Entity",
          "value": "getEntityGroupsForEntity",
          "action": "Get entity groups for entity",
          "description": "Fetch entity groups associated with the provided entity"
        },
        {
          "name": "Get Many by Owner and Type",
          "value": "getEntityGroupsByOwnerAndType",
          "action": "Get entity groups by owner and type",
          "description": "Fetch entity groups based on the provided owner and type"
        },
        {
          "name": "Get Many by Type",
          "value": "getEntityGroupsByType",
          "action": "Get entity groups by type",
          "description": "Fetch entity groups based on the provided type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entityGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDashboardById",
      "options": [
        {
          "name": "Create",
          "value": "createDashboard",
          "action": "Create a dashboard",
          "description": "Create a dashboard"
        },
        {
          "name": "Delete",
          "value": "deleteDashboard",
          "action": "Delete a dashboard",
          "description": "Delete a dashboard"
        },
        {
          "name": "Get by ID",
          "value": "getDashboardById",
          "action": "Get dashboard by id",
          "description": "Fetch a dashboard based on the provided Dashboard ID"
        },
        {
          "name": "Get Customer Dashboards",
          "value": "getCustomerDashboards",
          "action": "Get customer dashboards",
          "description": "Returns a page of dashboards based on the provided Customer ID"
        },
        {
          "name": "Get Dashboards",
          "value": "getDashboards",
          "action": "Get dashboards",
          "description": "Returns a page of dashboards owned by the tenant of a current user"
        },
        {
          "name": "Get User Dashboards",
          "value": "getUserDashboards",
          "action": "Get user dashboards",
          "description": "Returns a page of dashboards available for the current user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "createDevice",
      "action": "Create a device",
      "description": "Create a device",
      "resource": "device"
    },
    {
      "name": "Delete",
      "value": "deleteDevice",
      "action": "Delete a device",
      "description": "Delete a device",
      "resource": "device"
    },
    {
      "name": "Get by ID",
      "value": "getDeviceById",
      "action": "Get a device by ID",
      "description": "Fetch a device based on the provided Device ID",
      "resource": "device"
    },
    {
      "name": "Get by Name",
      "value": "getTenantDevice",
      "action": "Get a device by name",
      "description": "Fetch a device by name",
      "resource": "device"
    },
    {
      "name": "Get Many",
      "value": "getTenantDevices",
      "action": "Get devices",
      "description": "Returns a page of devices",
      "resource": "device"
    },
    {
      "name": "Get Many by Customer",
      "value": "getCustomerDevices",
      "action": "Get customer devices",
      "description": "Returns a page of devices assigned to the customer",
      "resource": "device"
    },
    {
      "name": "Get Many by Entity Group",
      "value": "getDevicesByEntityGroupId",
      "action": "Get entity group devices",
      "description": "Returns a page of devices that belongs to the specified Entity Group ID",
      "resource": "device"
    },
    {
      "name": "Get Many for Current User",
      "value": "getUserDevices",
      "action": "Get user devices",
      "description": "Returns a page of devices accessible to the current user",
      "resource": "device"
    },
    {
      "name": "Create",
      "value": "createAsset",
      "action": "Create an asset",
      "description": "Create an asset",
      "resource": "asset"
    },
    {
      "name": "Delete",
      "value": "deleteAsset",
      "action": "Delete an asset",
      "description": "Delete an asset",
      "resource": "asset"
    },
    {
      "name": "Get by ID",
      "value": "getAssetById",
      "action": "Get asset by id",
      "description": "Fetch an asset based on the provided Asset ID",
      "resource": "asset"
    },
    {
      "name": "Get by Name",
      "value": "getTenantAsset",
      "action": "Get asset by name",
      "description": "Fetch an asset by name",
      "resource": "asset"
    },
    {
      "name": "Get Many",
      "value": "getTenantAssets",
      "action": "Get tenant assets",
      "description": "Returns a page of assets",
      "resource": "asset"
    },
    {
      "name": "Get Many by Customer",
      "value": "getCustomerAssets",
      "action": "Get customer assets",
      "description": "Returns a page of assets assigned to the customer",
      "resource": "asset"
    },
    {
      "name": "Get Many by Entity Group",
      "value": "getAssetsByEntityGroupId",
      "action": "Get assets by entity group",
      "description": "Returns a page of devices that belongs to the specified Entity Group ID",
      "resource": "asset"
    },
    {
      "name": "Get Many for Current User",
      "value": "getUserAssets",
      "action": "Get user assets",
      "description": "Returns a page of assets accessible to the current user",
      "resource": "asset"
    },
    {
      "name": "Get All",
      "value": "getAllAlarms",
      "action": "Get all alarms",
      "description": "Returns a page of alarms that belongs to the current owner",
      "resource": "alarm"
    },
    {
      "name": "Get by ID",
      "value": "getAlarmById",
      "action": "Get alarm by id",
      "description": "Fetch an alarm based on the provided Alarm ID",
      "resource": "alarm"
    },
    {
      "name": "Get by originator",
      "value": "getAlarms",
      "action": "Get alarms by originator",
      "description": "Returns a page of alarms for the selected entity",
      "resource": "alarm"
    },
    {
      "name": "Get Highest Severity",
      "value": "getHighestAlarmSeverity",
      "action": "Get alarm highest severity",
      "description": "Search the alarms by originator and return the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE)",
      "resource": "alarm"
    },
    {
      "name": "Get Info by ID",
      "value": "getAlarmInfoById",
      "action": "Get alarm info by id",
      "description": "Fetch an alarm Info based on the provided Alarm ID",
      "resource": "alarm"
    },
    {
      "name": "Get Types",
      "value": "getAlarmTypes",
      "action": "Get alarm types",
      "description": "Returns a set of unique alarm types",
      "resource": "alarm"
    },
    {
      "name": "Create",
      "value": "createCustomer",
      "action": "Create a customer",
      "description": "Create a customer",
      "resource": "customer"
    },
    {
      "name": "Delete",
      "value": "deleteCustomer",
      "action": "Delete a customer",
      "description": "Delete a customer",
      "resource": "customer"
    },
    {
      "name": "Get by ID",
      "value": "getCustomerById",
      "action": "Get customer by id",
      "description": "Fetch a customer based on the provided Customer ID",
      "resource": "customer"
    },
    {
      "name": "Get by Title",
      "value": "getTenantCustomer",
      "action": "Get customer by title",
      "description": "Fetch a customer by title",
      "resource": "customer"
    },
    {
      "name": "Get Many",
      "value": "getCustomers",
      "action": "Get customers",
      "description": "Returns a page of customers",
      "resource": "customer"
    },
    {
      "name": "Get Many by Entity Group",
      "value": "getCustomersByEntityGroupId",
      "action": "Get customers by entity group",
      "description": "Returns a list of customers based on the provided Entity ID",
      "resource": "customer"
    },
    {
      "name": "Get Many for Current User",
      "value": "getUserCustomers",
      "action": "Get user customers",
      "description": "Returns a page of customers available for the current user",
      "resource": "customer"
    },
    {
      "name": "By From",
      "value": "findByFrom",
      "action": "Get relation by from",
      "description": "Returns list of relation objects for the specified entity by the \"from\" direction",
      "resource": "relation"
    },
    {
      "name": "By From (with Relation Type)",
      "value": "findByFromWithRelationType",
      "action": "Get relation by from with relation type",
      "description": "Returns list of relation objects for the specified entity by the \"from\" direction with relation type",
      "resource": "relation"
    },
    {
      "name": "By To",
      "value": "findByTo",
      "action": "Get relation by to",
      "description": "Returns list of relation objects for the specified entity by the \"to\" direction",
      "resource": "relation"
    },
    {
      "name": "By to (with Relation Type)",
      "value": "findByToWithRelationType",
      "action": "Get relation by to with relation type",
      "description": "Returns list of relation objects for the specified entity by the \"to\" direction with relation type",
      "resource": "relation"
    },
    {
      "name": "Get",
      "value": "getRelation",
      "action": "Get a relation",
      "description": "Fetch a specific relation based on the provided parameters",
      "resource": "relation"
    },
    {
      "name": "Info by From",
      "value": "findInfoByFrom",
      "action": "Get relation info by from",
      "description": "Fetch relation information for the specified entity by the \"from\" direction",
      "resource": "relation"
    },
    {
      "name": "Info by To",
      "value": "findInfoByTo",
      "action": "Get relation info by to",
      "description": "Fetch relation information for the specified entity by the \"to\" direction",
      "resource": "relation"
    },
    {
      "name": "Attribute Keys",
      "value": "getAttributeKeys",
      "action": "Get attribute keys",
      "description": "Returns a set of unique attribute key names for the selected entity",
      "resource": "telemetry"
    },
    {
      "name": "Attribute Keys (by Scope)",
      "value": "getAttributeKeysByScope",
      "action": "Get attribute keys by scope",
      "description": "Returns a set of unique attribute key names for the selected entity and scope",
      "resource": "telemetry"
    },
    {
      "name": "Attributes",
      "value": "getAttributes",
      "action": "Get attributes",
      "description": "Returns a list of attributes for the selected entity",
      "resource": "telemetry"
    },
    {
      "name": "Delete Device Attributes",
      "value": "deleteDeviceAttributes",
      "action": "Delete device attributes",
      "description": "Delete device attributes by keys",
      "resource": "telemetry"
    },
    {
      "name": "Delete Entity Attributes",
      "value": "deleteEntityAttributes",
      "action": "Delete entity attributes",
      "description": "Delete entity attributes by keys",
      "resource": "telemetry"
    },
    {
      "name": "Delete Entity Timeseries",
      "value": "deleteEntityTimeseries",
      "action": "Delete entity timeseries",
      "description": "Delete entity time series data",
      "resource": "telemetry"
    },
    {
      "name": "Save Device Attributes",
      "value": "saveDeviceAttributes",
      "action": "Save device attributes",
      "description": "Creates or updates device attributes",
      "resource": "telemetry"
    },
    {
      "name": "Save Entity Attributes",
      "value": "saveEntityAttributes",
      "action": "Save entity attributes",
      "description": "Creates or updates entity attributes for any entity type",
      "resource": "telemetry"
    },
    {
      "name": "Save Entity Telemetry",
      "value": "saveEntityTelemetry",
      "action": "Save entity telemetry",
      "description": "Creates or updates entity time series data",
      "resource": "telemetry"
    },
    {
      "name": "Save Entity Telemetry with TTL",
      "value": "saveEntityTelemetryWithTTL",
      "action": "Save entity telemetry with ttl",
      "description": "Creates or updates entity time series data with TTL",
      "resource": "telemetry"
    },
    {
      "name": "Timeseries (Latest)",
      "value": "getLatestTimeseries",
      "action": "Get latest timeseries",
      "description": "Returns the latest timeseries data for the selected entity",
      "resource": "telemetry"
    },
    {
      "name": "Timeseries (Range)",
      "value": "getTimeseries",
      "action": "Get timeseries",
      "description": "Returns timeseries data for the selected entity within a specified range",
      "resource": "telemetry"
    },
    {
      "name": "Timeseries Keys",
      "value": "getTimeseriesKeys",
      "action": "Get timeseries keys",
      "description": "Returns a set of unique timeseries key names for the selected entity",
      "resource": "telemetry"
    },
    {
      "name": "Get by ID",
      "value": "getEntityGroupById",
      "action": "Get entity group by id",
      "description": "Fetch an entity group based on the provided Entity Group ID",
      "resource": "entityGroup"
    },
    {
      "name": "Get by Owner/Name/Type",
      "value": "getEntityGroupByOwnerAndNameAndType",
      "action": "Get entity group by owner name and type",
      "description": "Fetch an entity group based on the provided owner, name, and type",
      "resource": "entityGroup"
    },
    {
      "name": "Get Many by Entity",
      "value": "getEntityGroupsForEntity",
      "action": "Get entity groups for entity",
      "description": "Fetch entity groups associated with the provided entity",
      "resource": "entityGroup"
    },
    {
      "name": "Get Many by Owner and Type",
      "value": "getEntityGroupsByOwnerAndType",
      "action": "Get entity groups by owner and type",
      "description": "Fetch entity groups based on the provided owner and type",
      "resource": "entityGroup"
    },
    {
      "name": "Get Many by Type",
      "value": "getEntityGroupsByType",
      "action": "Get entity groups by type",
      "description": "Fetch entity groups based on the provided type",
      "resource": "entityGroup"
    },
    {
      "name": "Create",
      "value": "createDashboard",
      "action": "Create a dashboard",
      "description": "Create a dashboard",
      "resource": "dashboard"
    },
    {
      "name": "Delete",
      "value": "deleteDashboard",
      "action": "Delete a dashboard",
      "description": "Delete a dashboard",
      "resource": "dashboard"
    },
    {
      "name": "Get by ID",
      "value": "getDashboardById",
      "action": "Get dashboard by id",
      "description": "Fetch a dashboard based on the provided Dashboard ID",
      "resource": "dashboard"
    },
    {
      "name": "Get Customer Dashboards",
      "value": "getCustomerDashboards",
      "action": "Get customer dashboards",
      "description": "Returns a page of dashboards based on the provided Customer ID",
      "resource": "dashboard"
    },
    {
      "name": "Get Dashboards",
      "value": "getDashboards",
      "action": "Get dashboards",
      "description": "Returns a page of dashboards owned by the tenant of a current user",
      "resource": "dashboard"
    },
    {
      "name": "Get User Dashboards",
      "value": "getUserDashboards",
      "action": "Get user dashboards",
      "description": "Returns a page of dashboards available for the current user",
      "resource": "dashboard"
    }
  ]

npm_readme:
  # ThingsBoard n8n Node

  ![Banner image](images/banner.png)

  [n8n](https://n8n.io/) is a workflow automation platform that combines traditional business process automation with AI capabilities.

  The **ThingsBoard n8n Node** provides deep and native integration between n8n and the ThingsBoard IoT Platform, enabling you to manage IoT infrastructure directly from n8n workflows.

  ## ✨ Features

  - **Manage IoT devices, assets, and customers** directly from n8n workflows
  - **Access and manipulate telemetry data** in real-time with attribute and time-series operations
  - **Monitor alarms** and create automated responses based on alarm severity and type
  - **Navigate entity relationships** to understand your IoT infrastructure topology
  - **Build AI-powered IoT automation** using n8n AI Agents with natural language commands
  - **Automate complex IoT workflows** with 61 operations across 8 resources (51 operations for Community Edition)

  ## 📖 Documentation

  For detailed documentation including usage examples, workflow patterns, and API reference, visit:

  **[ThingsBoard n8n Node Documentation](https://thingsboard.io/docs/samples/analytics/n8n-node/)**

  ## 🚀 Quick Start

  ### Installation

  ```bash
  npm install @thingsboard/n8n-nodes-thingsboard
  ```

  ### Configuration

  1. In n8n, add ThingsBoard credentials:
     - **Base URL**: `https://demo.thingsboard.io`, `https://thingsboard.cloud` or your instance URL
     - **Authentication Type**: Choose **API Key** (recommended) or **Username / Password**
     - **API Key**: Your ThingsBoard API key (see [API Key documentation](https://thingsboard.io/docs/user-guide/security/api-keys/))
  2. Add the ThingsBoard node to your workflow
  3. Select a resource (Device, Asset, etc.) and operation


  ## 📦 Installation

  ### GUI Installation

  For self-hosted n8n instances, you can install directly via the web interface:

  1. Open n8n in your browser
  2. Navigate to **Settings** → **Community Nodes**
  3. Click **Install a community node**
  4. Enter package name: `@thingsboard/n8n-nodes-thingsboard`
  5. Click **Install**
  6. Wait for installation to complete
  7. Refresh your browser

  **Note**: This method requires owner/admin permissions and is only available for self-hosted n8n (not n8n Cloud).

  ### n8n Cloud

  The ThingsBoard node requires verification to be available on n8n Cloud. n8n Cloud supports a select group of verified community nodes included in their official catalog.

  **Current Status**: Until the node is verified and included in the Cloud-available catalog, use self-hosted n8n (local or Docker) with any installation method above.

  ## 🔧 Verify Installation

  After installation and restart:

  1. Open n8n in your browser (typically `http://localhost:5678`)
  2. Create a new workflow
  3. Click the **+** button to add a node
  4. Search for **"ThingsBoard"** in the node picker
  5. The **ThingsBoard** node should appear in the search results

  If you don't see the node:
  - Verify the npm installation completed without errors
  - Ensure you restarted n8n after installation (for Method 2)
  - Check n8n logs for any loading errors

  ## 🔑 Setting Up Credentials

  Before using the ThingsBoard node, configure your connection credentials:

  1. In n8n, navigate to **Credentials** → **New Credential**
  2. Search for **"ThingsBoard API"**
  3. Fill in the required fields:

  #### Option A: API Key (recommended)

  | Field | Description | Example |
  |-------|-------------|---------|
  | **Base URL** | ThingsBoard instance URL | `https://demo.thingsboard.io` or `https://thingsboard.cloud` |
  | **Authentication Type** | Select **API Key** | |
  | **API Key** | Your ThingsBoard API key | `your-api-key-here` |

  To create an API key, go to your ThingsBoard instance → **API Keys** and generate a new key. See the [API Key documentation](https://thingsboard.io/docs/user-guide/security/api-keys/) for details.

  #### Option B: Username / Password

  | Field | Description | Example |
  |-------|-------------|---------|
  | **Base URL** | ThingsBoard instance URL | `https://demo.thingsboard.io` or `https://thingsboard.cloud` |
  | **Authentication Type** | Select **Username / Password** | |
  | **Username** | Your ThingsBoard account email | `tenant@thingsboard.org` |
  | **Password** | Your ThingsBoard account password | `tenant` |

  4. Click **Save** to store the credentials

  The credentials are encrypted and stored securely by n8n. You can reuse the same credentials across multiple ThingsBoard nodes in different workflows.

  ## 📋 Supported Operations

  ### Device (8 operations)
  - ✅ Create Device (Params/JSON mode)
  - ✅ Delete Device
  - ✅ Get Device by ID
  - ✅ Get Device by Name
  - ✅ Get Tenant Devices
  - ✅ Get Customer Devices
  - ✅ Get Devices by Entity Group (PE only)
  - ✅ Get User Devices (PE only)

  ### Asset (7 operations)
  - ✅ Create Asset (Params/JSON mode)
  - ✅ Delete Asset
  - ✅ Get Asset by ID
  - ✅ Get Asset by Name
  - ✅ Get Tenant Assets
  - ✅ Get Customer Assets
  - ✅ Get Assets by Entity Group (PE only)
  - ✅ Get User Assets (PE only)

  ### Customer (7 operations)
  - ✅ Create Customer (Params/JSON mode)
  - ✅ Delete Customer
  - ✅ Get Customer by ID
  - ✅ Get Customer by Title
  - ✅ Get Customers
  - ✅ Get Customers by Entity Group (PE only)
  - ✅ Get User Customers (PE only)

  ### Dashboard (5 operations)
  - ✅ Create Dashboard (JSON mode)
  - ✅ Delete Dashboard
  - ✅ Get Dashboard by ID
  - ✅ Get Dashboards
  - ✅ Get Customer Dashboards

  ### Telemetry (14 operations)
  - ✅ Get Attributes
  - ✅ Get Attribute Keys
  - ✅ Get Attribute Keys (by Scope)
  - ✅ Get Latest Timeseries
  - ✅ Get Timeseries (Time Range)
  - ✅ Get Timeseries Keys
  - ✅ Save Entity Attributes
  - ✅ Save Device Attributes
  - ✅ Save Entity Telemetry
  - ✅ Save Entity Telemetry with TTL
  - ✅ Delete Entity Attributes
  - ✅ Delete Device Attributes
  - ✅ Delete Entity Timeseries

  ### Alarm (6 operations)
  - ✅ Get All Alarms
  - ✅ Get Alarm by ID
  - ✅ Get Alarm Info by ID
  - ✅ Get Alarms by Originator
  - ✅ Get Highest Severity Alarm
  - ✅ Get Alarm Types

  ### Relation (7 operations)
  - ✅ Get Relation
  - ✅ Find by From
  - ✅ Find by From with Relation Type
  - ✅ Find by To
  - ✅ Find by To with Relation Type
  - ✅ Find Info by From
  - ✅ Find Info by To

  ### Entity Group (5 operations - PE only)
  - ✅ Get Entity Group by ID
  - ✅ Get Entity Groups by Type
  - ✅ Get Entity Groups by Owner and Type
  - ✅ Get Entity Group by Owner/Name/Type
  - ✅ Get Entity Groups for Entity

  **Total: 61 operations across 8 resources**

  ## 🛠️ Development

  ### Quick Start

  ```bash
  # Clone the repository
  git clone https://github.com/thingsboard/thingsboard-n8n-node.git
  cd thingsboard-n8n-node

  # Install dependencies
  npm install

  # Build the project
  npm run build

  # Run in development mode (watch)
  npm run dev
  ```

  ### Testing Locally

  ```bash
  # Link the package
  npm link

  # In your n8n directory
  npm link @thingsboard/n8n-nodes-thingsboard

  # Start n8n
  n8n start
  ```

  ## 💡 Usage Examples

  ### Example 1: 🤖 AI Agent Tool - Conversational IoT Control

  Use the ThingsBoard node as a **tool for AI Agents** to enable intelligent, natural language IoT automation.

  ![AI Agent Use Case](images/ai-agent-usecase.png)

  #### How it works

  1. User sends a chat message: *"What devices do I have and what's their status?"*
  2. AI Agent (powered by Google Gemini or OpenAI GPT-4) has access to ThingsBoard tools
  3. Agent autonomously calls:
     - `Get devices in ThingsBoard` → Retrieves device list
     - `Get timeseries in ThingsBoard` → Fetches latest telemetry
  4. Agent responds in natural language with the actual data

  #### Natural language commands

  - *"Show me the temperature of my living room sensor"*
  - *"Which devices are offline right now?"*
  - *"Update the threshold on device X to 30 degrees"*
  - *"Send me an alert if any temperature exceeds 25°C"*

  The AI agent understands context and calls the appropriate ThingsBoard operations automatically!

  ---

  ### Example 2: 💡 Daily Telemetry Export to AWS S3

  **Real-world scenario**: Every night, export device telemetry to S3, but also enrich it with device metadata from your CRM, convert to Parquet format for Athena, and trigger a Lambda function to update your data warehouse. One workflow, multiple outputs.

  **Why use n8n instead of ThingsBoard's native export**:
  - **Multi-destination** - Send the same data to S3 + Snowflake + email report in one workflow
  - **Data transformation** - Enrich telemetry with business context (customer names, locations from CRM)
  - **Custom formats** - Convert to Parquet, Avro, or CSV with specific schemas for your analytics tools
  - **Conditional logic** - Export only specific devices, filter by customer tier, or aggregate before storage
  - **Integration chains** - After S3 upload → Trigger AWS Lambda → Update tracking database → Send Slack notification

  ![Daily telemetry export](images/telemetry-export.png)
  ![Daily telemetry export result](images/telemetry-export-result.png)

  For a complete step-by-step guide with detailed screenshots, see the [full documentation](https://thingsboard.io/docs/samples/analytics/n8n-node/).

  ## 📚 API Reference

  The ThingsBoard n8n node is built on top of the ThingsBoard REST API. For detailed information about API endpoints, request/response formats, and additional parameters, refer to the [ThingsBoard REST API documentation](https://thingsboard.io/docs/reference/rest-api/).

  ## 🔗 Links

  - **npm Package**: [@thingsboard/n8n-nodes-thingsboard](https://www.npmjs.com/package/@thingsboard/n8n-nodes-thingsboard)
  - **GitHub Repository**: [thingsboard/thingsboard-n8n-node](https://github.com/thingsboard/thingsboard-n8n-node)
  - **n8n Documentation**: [docs.n8n.io](https://docs.n8n.io/)
  - **n8n Community**: [community.n8n.io](https://community.n8n.io/)
  - **ThingsBoard REST API**: [REST API Reference](https://thingsboard.io/docs/reference/rest-api/)

  ## 🫶 Support

  If you encounter issues or have questions about the ThingsBoard n8n node:

  - **GitHub Issues**: [Report bugs or request features](https://github.com/thingsboard/thingsboard-n8n-node/issues)
  - **ThingsBoard Community**: [Get help from the community](https://thingsboard.io/community/)
  - **n8n Community**: [n8n community](https://community.n8n.io/)

  ## 📄 License

  MIT License - see the [LICENSE file](https://github.com/thingsboard/thingsboard-n8n-node/blob/master/LICENSE.md) for details.

  ---

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the ThingsBoard IoT Platform REST API to manage devices, assets, customers, telemetry data, alarms, and dashboards within automated workflows.","capabilities":["Create and delete IoT devices, assets, customers, dashboards, and alarms","Retrieve device, asset, and customer information by ID, name, or group","Access and manipulate telemetry data including attributes and time-series","Monitor alarms and retrieve alarm information by severity or originator","Save entity attributes and telemetry data with optional Time-To-Live (TTL)","Delete entity attributes and timeseries data","Navigate entity relationships for IoT infrastructure topology","Support for 61 operations across 8 resources (51 for Community Edition)","Integration with n8n AI Agents for natural language IoT automation"],"authentication":"API Key (recommended) or Username/Password","commonUseCases":["Automated monitoring of IoT sensor data and alerts","Dynamic device provisioning and lifecycle management","Real-time telemetry analysis and historical data retrieval","Automated response workflows triggered by alarm events","Customer-specific dashboard creation and data filtering"],"limitations":["Some operations (e.g., Entity Group queries, User Devices/Assets) require Premium Edition (PE)","Not available on n8n Cloud until verified and added to the official catalog","Self-hosted n8n instances required for installation if not yet verified on Cloud"],"relatedNodes":["HTTP Request","Code","IF","SplitInBatches","Set"]}


node_type: @asyncai/n8n-nodes-asyncai.asyncAi
package_name: @asyncai/n8n-nodes-asyncai
display_name: Async
description: Interact with Async API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: ashotbagh
author_github_url: https://github.com/AsyncOrg/asyncai-n8n.git
npm_package_name: @asyncai/n8n-nodes-asyncai
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:33.501Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "voice",
      "options": [
        {
          "name": "Voice",
          "value": "voice"
        },
        {
          "name": "Speech",
          "value": "speech"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a voice",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "enabled": "={{$parameter[\"simplify\"]}}",
                  "properties": {
                    "name": "={{$responseItem.name}}",
                    "labels": "={{$responseItem.labels}}",
                    "category": "={{$responseItem.category}}",
                    "voice_id": "={{$responseItem.voice_id}}",
                    "description": "={{$responseItem.description}}",
                    "preview_url": "={{$responseItem.preview_url}}"
                  }
                }
              ]
            },
            "request": {
              "url": "={{\"/voices/\"  + $parameter[\"voice\"] }}",
              "method": "GET"
            }
          },
          "description": "Returns metadata about a specific voice"
        },
        {
          "name": "Create Clone",
          "value": "createClone",
          "action": "Create a voice clone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/voices/clone",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true
            }
          },
          "description": "Create a voice clone from audio files"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a voice",
          "routing": {
            "request": {
              "url": "={{\"/voices/\" + $parameter[\"voice\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a specific voice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "textToSpeech",
      "options": [
        {
          "name": "Text to Speech",
          "value": "textToSpeech",
          "action": "Convert text to speech",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "={{\"/text_to_speech\"}}",
              "method": "POST",
              "headers": {
                "content-type": "application/json"
              },
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Converts text into speech and returns audio"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "speech"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a voice",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "enabled": "={{$parameter[\"simplify\"]}}",
              "properties": {
                "name": "={{$responseItem.name}}",
                "labels": "={{$responseItem.labels}}",
                "category": "={{$responseItem.category}}",
                "voice_id": "={{$responseItem.voice_id}}",
                "description": "={{$responseItem.description}}",
                "preview_url": "={{$responseItem.preview_url}}"
              }
            }
          ]
        },
        "request": {
          "url": "={{\"/voices/\"  + $parameter[\"voice\"] }}",
          "method": "GET"
        }
      },
      "description": "Returns metadata about a specific voice",
      "resource": "voice"
    },
    {
      "name": "Create Clone",
      "value": "createClone",
      "action": "Create a voice clone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/voices/clone",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true
        }
      },
      "description": "Create a voice clone from audio files",
      "resource": "voice"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a voice",
      "routing": {
        "request": {
          "url": "={{\"/voices/\" + $parameter[\"voice\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a specific voice",
      "resource": "voice"
    },
    {
      "name": "Text to Speech",
      "value": "textToSpeech",
      "action": "Convert text to speech",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "={{\"/text_to_speech\"}}",
          "method": "POST",
          "headers": {
            "content-type": "application/json"
          },
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Converts text into speech and returns audio",
      "resource": "speech"
    }
  ]

npm_readme:
  # @asyncai/n8n-nodes-asyncai

  This is the official AsyncAI n8n community node.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)
  [Resources](#resources)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Speech
  - Text to Speech

  ### Voice
  - Get
  - Create Clone
  - Delete

  ## Credentials

  This node requires an API Key from AsyncAI, You can generate one by going to your [Account](https://app.async.ai/auth).


  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [AsyncAI Documentation](https://docs.async.ai)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the AsyncAI API for speech generation and voice cloning services.","capabilities":["Text to Speech conversion","Retrieve voice clones","Create new voice clones","Delete existing voice clones"],"authentication":"API Key required (generated from AsyncAI account)","commonUseCases":["Automated voiceovers for content creation","Voice cloning for personalized audio responses","Batch text-to-speech processing in workflows"],"limitations":[],"relatedNodes":["HTTP Request","Code"]}


node_type: @jetbrains/n8n-nodes-youtrack.youtrack
package_name: @jetbrains/n8n-nodes-youtrack
display_name: YouTrack
description: Get data from YouTrack API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: jetbrains-admin
author_github_url: https://github.com/JetBrains/n8n-nodes-youtrack.git
npm_package_name: @jetbrains/n8n-nodes-youtrack
npm_version: 0.1.8
community_fetched_at: 2026-07-14T14:40:33.502Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "issue",
      "options": [
        {
          "name": "Command",
          "value": "command",
          "description": "Execute YouTrack commands on issues (tags, assignees, comments, work items, votes, etc.)"
        },
        {
          "name": "Comment",
          "value": "comment",
          "description": "Add and manage comments on issues"
        },
        {
          "name": "Issue",
          "value": "issue",
          "description": "Create and manage issues in YouTrack"
        },
        {
          "name": "Issue Draft",
          "value": "issueDraft",
          "description": "Create and manage issue drafts"
        },
        {
          "name": "Project",
          "value": "project",
          "description": "Access project information"
        },
        {
          "name": "Saved Query",
          "value": "savedQueries",
          "description": "Get many and create saved searches"
        },
        {
          "name": "Tag",
          "value": "tag",
          "description": "Add and manage tags on issues"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Find and manage users"
        },
        {
          "name": "User Group",
          "value": "userGroup",
          "description": "Find user groups and get group members"
        },
        {
          "name": "Work Item",
          "value": "workItem",
          "description": "Track time spent on issues"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a comment",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/comments",
              "method": "POST"
            }
          },
          "description": "Add a comment to an issue"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many comments",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/comments",
              "method": "GET"
            }
          },
          "description": "Get many comments on an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a command",
          "routing": {
            "request": {
              "url": "/commands",
              "method": "POST"
            }
          },
          "description": "Execute a YouTrack command on one or more issues (bulk operations supported). Supports all YouTrack commands: tags, assignees, comments, work items, votes, watchers, links, custom fields, and more. For star/watcher commands, use \"star username\" or \"watcher username\"."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "command"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an issue",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.project}}/issues",
              "method": "POST"
            }
          },
          "description": "Create a new issue"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an issue",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/issues/{{$parameter.issueId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an issue"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an issue",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}",
              "method": "GET"
            }
          },
          "description": "Get an issue by ID"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many issues",
          "routing": {
            "request": {
              "url": "/issues",
              "method": "GET"
            }
          },
          "description": "Get many issues"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an issue",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}",
              "method": "POST"
            }
          },
          "description": "Update an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "issue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an issue draft",
          "routing": {
            "request": {
              "url": "/users/me/drafts",
              "method": "POST"
            }
          },
          "description": "Create a new issue draft"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an issue draft",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/me/drafts/{{$parameter.draftId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an issue draft"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an issue draft",
          "routing": {
            "request": {
              "url": "=/users/me/drafts/{{$parameter.draftId}}",
              "method": "GET"
            }
          },
          "description": "Get an issue draft by ID"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many issue drafts",
          "routing": {
            "request": {
              "url": "/users/me/drafts",
              "method": "GET"
            }
          },
          "description": "Get many issue drafts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an issue draft",
          "routing": {
            "request": {
              "url": "=/users/me/drafts/{{$parameter.draftId}}",
              "method": "POST"
            }
          },
          "description": "Update an issue draft"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "issueDraft"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.projectId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific project"
        },
        {
          "name": "Get Fields Schema",
          "value": "getFieldsSchema",
          "action": "Get issue fields schema",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.projectId}}/customFields",
              "method": "GET"
            }
          },
          "description": "Get the JSON schema for custom fields in the specified project"
        },
        {
          "name": "Get Issues",
          "value": "getIssues",
          "action": "Get project issues",
          "routing": {
            "request": {
              "url": "=/admin/projects/{{$parameter.projectId}}/issues",
              "method": "GET"
            }
          },
          "description": "Get issues for a specific project"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many projects",
          "routing": {
            "request": {
              "url": "/admin/projects",
              "method": "GET"
            }
          },
          "description": "Get many projects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addToIssue",
      "options": [
        {
          "name": "Add to Issue",
          "value": "addToIssue",
          "action": "Add tag to issue",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/tags",
              "method": "POST"
            }
          },
          "description": "Add a tag to an issue"
        },
        {
          "name": "Get Issue Tags",
          "value": "getIssueTags",
          "action": "Get issue tags",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/tags",
              "method": "GET"
            }
          },
          "description": "Get all tags on a specific issue"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many tags",
          "routing": {
            "request": {
              "url": "/tags",
              "method": "GET"
            }
          },
          "description": "Get many available tags"
        },
        {
          "name": "Remove From Issue",
          "value": "removeFromIssue",
          "action": "Remove tag from issue",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"deleted\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/tags/{{$parameter.tagId}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a tag from an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a work item",
          "routing": {
            "request": {
              "url": "=/issues/{{$parameter.issueId}}/timeTracking/workItems",
              "method": "POST"
            }
          },
          "description": "Add a work item (time tracking) to an issue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workItem"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific user by ID or login"
        },
        {
          "name": "Get Current",
          "value": "getCurrent",
          "action": "Get current user",
          "routing": {
            "request": {
              "url": "/users/me",
              "method": "GET"
            }
          },
          "description": "Get current authenticated user"
        },
        {
          "name": "Get General Profile",
          "value": "getGeneralProfile",
          "action": "Get user general profile",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/profiles/general",
              "method": "GET"
            }
          },
          "description": "Get general profile settings for a specific user"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many users",
          "routing": {
            "request": {
              "url": "/users",
              "method": "GET"
            }
          },
          "description": "Get many users"
        },
        {
          "name": "Get Notifications Profile",
          "value": "getNotificationsProfile",
          "action": "Get user notifications profile",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/profiles/notifications",
              "method": "GET"
            }
          },
          "description": "Get notification settings for a specific user"
        },
        {
          "name": "Get Saved Queries",
          "value": "getSavedQueries",
          "action": "Get user saved queries",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/savedQueries",
              "method": "GET"
            }
          },
          "description": "Get saved queries for a specific user"
        },
        {
          "name": "Get Tags",
          "value": "getTags",
          "action": "Get user tags",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/tags",
              "method": "GET"
            }
          },
          "description": "Get tags for a specific user"
        },
        {
          "name": "Get Time Tracking Profile",
          "value": "getTimeTrackingProfile",
          "action": "Get user time tracking profile",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}/profiles/timetracking",
              "method": "GET"
            }
          },
          "description": "Get time tracking settings for a specific user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many user groups",
          "routing": {
            "request": {
              "url": "/groups",
              "method": "GET"
            }
          },
          "description": "Get many user groups"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user group",
          "routing": {
            "request": {
              "url": "=/groups/{{$parameter.groupId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific user group by ID"
        },
        {
          "name": "Get Members",
          "value": "getMembers",
          "action": "Get user group members",
          "routing": {
            "request": {
              "url": "=/groups/{{$parameter.groupId}}",
              "method": "GET"
            }
          },
          "description": "Get members of a user group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many saved queries",
          "routing": {
            "request": {
              "url": "/savedQueries",
              "method": "GET"
            }
          },
          "description": "Get many saved queries visible to the current user"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create saved query",
          "routing": {
            "request": {
              "url": "/savedQueries",
              "method": "POST"
            }
          },
          "description": "Create a new saved query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedQueries"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add",
      "value": "add",
      "action": "Add a comment",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/comments",
          "method": "POST"
        }
      },
      "description": "Add a comment to an issue",
      "resource": "comment"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many comments",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/comments",
          "method": "GET"
        }
      },
      "description": "Get many comments on an issue",
      "resource": "comment"
    },
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute a command",
      "routing": {
        "request": {
          "url": "/commands",
          "method": "POST"
        }
      },
      "description": "Execute a YouTrack command on one or more issues (bulk operations supported). Supports all YouTrack commands: tags, assignees, comments, work items, votes, watchers, links, custom fields, and more. For star/watcher commands, use \"star username\" or \"watcher username\".",
      "resource": "command"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an issue",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.project}}/issues",
          "method": "POST"
        }
      },
      "description": "Create a new issue",
      "resource": "issue"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an issue",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/issues/{{$parameter.issueId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an issue",
      "resource": "issue"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an issue",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}",
          "method": "GET"
        }
      },
      "description": "Get an issue by ID",
      "resource": "issue"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many issues",
      "routing": {
        "request": {
          "url": "/issues",
          "method": "GET"
        }
      },
      "description": "Get many issues",
      "resource": "issue"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an issue",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}",
          "method": "POST"
        }
      },
      "description": "Update an issue",
      "resource": "issue"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an issue draft",
      "routing": {
        "request": {
          "url": "/users/me/drafts",
          "method": "POST"
        }
      },
      "description": "Create a new issue draft",
      "resource": "issueDraft"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an issue draft",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/me/drafts/{{$parameter.draftId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an issue draft",
      "resource": "issueDraft"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an issue draft",
      "routing": {
        "request": {
          "url": "=/users/me/drafts/{{$parameter.draftId}}",
          "method": "GET"
        }
      },
      "description": "Get an issue draft by ID",
      "resource": "issueDraft"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many issue drafts",
      "routing": {
        "request": {
          "url": "/users/me/drafts",
          "method": "GET"
        }
      },
      "description": "Get many issue drafts",
      "resource": "issueDraft"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an issue draft",
      "routing": {
        "request": {
          "url": "=/users/me/drafts/{{$parameter.draftId}}",
          "method": "POST"
        }
      },
      "description": "Update an issue draft",
      "resource": "issueDraft"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.projectId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific project",
      "resource": "project"
    },
    {
      "name": "Get Fields Schema",
      "value": "getFieldsSchema",
      "action": "Get issue fields schema",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.projectId}}/customFields",
          "method": "GET"
        }
      },
      "description": "Get the JSON schema for custom fields in the specified project",
      "resource": "project"
    },
    {
      "name": "Get Issues",
      "value": "getIssues",
      "action": "Get project issues",
      "routing": {
        "request": {
          "url": "=/admin/projects/{{$parameter.projectId}}/issues",
          "method": "GET"
        }
      },
      "description": "Get issues for a specific project",
      "resource": "project"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many projects",
      "routing": {
        "request": {
          "url": "/admin/projects",
          "method": "GET"
        }
      },
      "description": "Get many projects",
      "resource": "project"
    },
    {
      "name": "Add to Issue",
      "value": "addToIssue",
      "action": "Add tag to issue",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/tags",
          "method": "POST"
        }
      },
      "description": "Add a tag to an issue",
      "resource": "tag"
    },
    {
      "name": "Get Issue Tags",
      "value": "getIssueTags",
      "action": "Get issue tags",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/tags",
          "method": "GET"
        }
      },
      "description": "Get all tags on a specific issue",
      "resource": "tag"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many tags",
      "routing": {
        "request": {
          "url": "/tags",
          "method": "GET"
        }
      },
      "description": "Get many available tags",
      "resource": "tag"
    },
    {
      "name": "Remove From Issue",
      "value": "removeFromIssue",
      "action": "Remove tag from issue",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"deleted\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/tags/{{$parameter.tagId}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a tag from an issue",
      "resource": "tag"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add a work item",
      "routing": {
        "request": {
          "url": "=/issues/{{$parameter.issueId}}/timeTracking/workItems",
          "method": "POST"
        }
      },
      "description": "Add a work item (time tracking) to an issue",
      "resource": "workItem"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific user by ID or login",
      "resource": "user"
    },
    {
      "name": "Get Current",
      "value": "getCurrent",
      "action": "Get current user",
      "routing": {
        "request": {
          "url": "/users/me",
          "method": "GET"
        }
      },
      "description": "Get current authenticated user",
      "resource": "user"
    },
    {
      "name": "Get General Profile",
      "value": "getGeneralProfile",
      "action": "Get user general profile",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/profiles/general",
          "method": "GET"
        }
      },
      "description": "Get general profile settings for a specific user",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many users",
      "routing": {
        "request": {
          "url": "/users",
          "method": "GET"
        }
      },
      "description": "Get many users",
      "resource": "user"
    },
    {
      "name": "Get Notifications Profile",
      "value": "getNotificationsProfile",
      "action": "Get user notifications profile",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/profiles/notifications",
          "method": "GET"
        }
      },
      "description": "Get notification settings for a specific user",
      "resource": "user"
    },
    {
      "name": "Get Saved Queries",
      "value": "getSavedQueries",
      "action": "Get user saved queries",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/savedQueries",
          "method": "GET"
        }
      },
      "description": "Get saved queries for a specific user",
      "resource": "user"
    },
    {
      "name": "Get Tags",
      "value": "getTags",
      "action": "Get user tags",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/tags",
          "method": "GET"
        }
      },
      "description": "Get tags for a specific user",
      "resource": "user"
    },
    {
      "name": "Get Time Tracking Profile",
      "value": "getTimeTrackingProfile",
      "action": "Get user time tracking profile",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}/profiles/timetracking",
          "method": "GET"
        }
      },
      "description": "Get time tracking settings for a specific user",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many user groups",
      "routing": {
        "request": {
          "url": "/groups",
          "method": "GET"
        }
      },
      "description": "Get many user groups",
      "resource": "userGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user group",
      "routing": {
        "request": {
          "url": "=/groups/{{$parameter.groupId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific user group by ID",
      "resource": "userGroup"
    },
    {
      "name": "Get Members",
      "value": "getMembers",
      "action": "Get user group members",
      "routing": {
        "request": {
          "url": "=/groups/{{$parameter.groupId}}",
          "method": "GET"
        }
      },
      "description": "Get members of a user group",
      "resource": "userGroup"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many saved queries",
      "routing": {
        "request": {
          "url": "/savedQueries",
          "method": "GET"
        }
      },
      "description": "Get many saved queries visible to the current user",
      "resource": "savedQueries"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create saved query",
      "routing": {
        "request": {
          "url": "/savedQueries",
          "method": "POST"
        }
      },
      "description": "Create a new saved query",
      "resource": "savedQueries"
    }
  ]

npm_readme:
  # @jetbrains/n8n-nodes-youtrack

  [![official JetBrains project](https://jb.gg/badges/official-flat-square.svg)](https://github.com/JetBrains#jetbrains-on-github)

  This is an n8n community node. It lets you use YouTrack in your n8n workflows.

  YouTrack is a project management and issue tracking tool by JetBrains that helps teams manage projects, track issues, and collaborate effectively.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node provides two components: the YouTrack node for API operations and the YouTrack Trigger node for webhook-based automation.

  ### YouTrack Node

  The YouTrack node supports the following resources and operations:

  ### Command
  - **Execute** - Execute YouTrack commands on one or more issues (bulk operations supported). Supports all YouTrack commands: tags, assignees, comments, work items, votes, watchers, links, custom fields, and more.

  ### Comment
  - **Add** - Add a comment to an issue
  - **List** - List all comments on an issue

  ### Issue
  - **Create** - Create a new issue
  - **Delete** - Delete an issue
  - **Get** - Get an issue by ID
  - **List** - List issues
  - **Update** - Update an issue

  ### Issue Draft
  - **Create** - Create a new issue draft
  - **Delete** - Delete an issue draft
  - **Get** - Get an issue draft by ID
  - **List** - List issue drafts
  - **Update** - Update an issue draft

  ### Project
  - **Get** - Get a specific project
  - **Get Fields Schema** - Get the JSON schema for custom fields in the specified project
  - **Get Issues** - Get issues for a specific project
  - **List** - List all projects

  ### Saved Query
  - **Create** - Create a new saved query
  - **List** - List all saved queries visible to the current user

  ### Tag
  - **Add to Issue** - Add a tag to an issue
  - **Get Issue Tags** - Get all tags on a specific issue
  - **List** - List all available tags
  - **Remove From Issue** - Remove a tag from an issue

  ### User
  - **Get** - Get a specific user by ID or login
  - **Get Current** - Get current authenticated user
  - **Get General Profile** - Get general profile settings for a specific user
  - **Get Notifications Profile** - Get notification settings for a specific user
  - **Get Saved Queries** - Get saved queries for a specific user
  - **Get Tags** - Get tags for a specific user
  - **Get Time Tracking Profile** - Get time tracking settings for a specific user
  - **List** - List users

  ### User Group
  - **Get** - Get a specific user group by ID
  - **Get Members** - Get members of a user group
  - **List** - List user groups

  ### Work Item
  - **Add** - Add a work item (time tracking) to an issue

  ### YouTrack Trigger Node

  The YouTrack Trigger node allows you to start workflows automatically when events occur in YouTrack.

  **Supported Events:**
  - Issue Created
  - Issue Updated
  - Issue Deleted
  - Comment Added
  - Comment Updated
  - Comment Deleted
  - Work Item Added
  - Work Item Updated
  - Work Item Deleted
  - Issue Attachment Added
  - Issue Attachment Deleted

  ## Credentials

  This node uses permanent token authentication to connect to YouTrack.

  ### Prerequisites

  1. Access to a YouTrack instance (cloud or self-hosted)
  2. A YouTrack account with appropriate permissions

  ### Authentication Setup

  1. **Generate a Permanent Token:**
     - Log in to your YouTrack instance
     - Navigate to your Hub profile under **Authentication > Tokens**
     - Create a new permanent token

  2. **Configure Credentials in n8n:**
     - In n8n, go to **Credentials** > **New Credential**
     - Select **YouTrack API**
     - Enter your **YouTrack URL** (e.g., `https://your-instance.myjetbrains.com/youtrack` for cloud
        - **Important:** Enter the base URL without `/api` at the end
     - Enter your **Permanent Token**
     - Click **Save**

  ## Compatibility

  - **Minimum n8n version:** Requires n8n version that supports community nodes with API version 1
  - **YouTrack API:** Compatible with YouTrack REST API (cloud and self-hosted instances)

  ## Usage

  ### Command Execute

  The **Command Execute** operation allows you to apply YouTrack commands to issues using natural language syntax:

  - `tag MyTag for me` - Adds the tag "MyTag" to an issue and assigns it to you
  - `tag To Deploy for jane.doe` - Adds the "To Deploy" tag to an issue and assigns to jane.doe
  - `work 2h Fixed bug` - Logs 2 hours of work on the issue with a comment

  **Note:** The `vote+1` command cannot be used on your own issues, and usernames must be valid YouTrack logins.

  ### Custom Fields

  To discover available custom fields for a project, use the **Project > Get Fields Schema** operation, which returns the JSON schema for all custom fields in the specified project.

  ### Issue Queries

  When listing or filtering issues, YouTrack uses its own query language. See the [YouTrack Query Syntax documentation](https://www.jetbrains.com/help/youtrack/incloud/Search-and-Command-Attributes.html) for details.

  ### Webhooks

  For webhook triggers, configure the Webhook Triggers app in your YouTrack instance. The YouTrack Trigger node will provide the webhook URL during setup.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [YouTrack REST API documentation](https://www.jetbrains.com/help/youtrack/devportal/youtrack-rest-api.html)
  * [YouTrack documentation](https://www.jetbrains.com/help/youtrack/)

  ## License
  [MIT License](http://www.opensource.org/licenses/MIT)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation with JetBrains YouTrack by providing API operations for issues, projects, users, and webhooks.","capabilities":["Execute YouTrack commands on issues (bulk operations supported)","Manage issues (create, delete, get, list, update)","Manage issue drafts (create, delete, get, list, update)","Manage projects (get, list, get fields schema, get issues)","Manage saved queries (create, list)","Manage tags (add, remove, list, get issue tags)","Manage users (get, list, get profiles, get notifications, get saved queries, get tags, get time tracking)","Manage user groups (get, list members, list)","Manage work items (add, update, delete)","Add comments to issues (add, list)"],"authentication":"Permanent token authentication","commonUseCases":["Automating issue creation and updates based on external triggers","Bulk updating issue properties via natural language commands","Integrating YouTrack events into n8n workflows via webhooks","Automating time tracking and work item logging","Managing project and user data programmatically"],"limitations":["The `vote+1` command cannot be used on your own issues","Usernames in commands must be valid YouTrack logins","Requires YouTrack REST API access (cloud or self-hosted)","Requires n8n version that supports community nodes with API version 1"],"relatedNodes":["Webhook Trigger","HTTP Request","Code"]}


node_type: n8n-nodes-zenlayer.zenlayer
package_name: n8n-nodes-zenlayer
display_name: Zenlayer
description: For advanced usage with an AI Gateway from Zenlayer
category: AI
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: gaoyaming
author_github_url: https://github.com/gwraith/
npm_package_name: n8n-nodes-zenlayer
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.503Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "text",
      "options": [
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "Text",
          "value": "text"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "analyze",
      "options": [
        {
          "name": "Analyze Image",
          "value": "analyze",
          "action": "Analyze image",
          "description": "Analyze images and get descriptions or insights"
        },
        {
          "name": "Generate an Image",
          "value": "generate",
          "action": "Generate an image",
          "description": "Creates an image from a text prompt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message a Model",
          "value": "message",
          "action": "Message a model",
          "description": "Send messages to a language model and receive responses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "text"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Analyze Image",
      "value": "analyze",
      "action": "Analyze image",
      "description": "Analyze images and get descriptions or insights",
      "resource": "image"
    },
    {
      "name": "Generate an Image",
      "value": "generate",
      "action": "Generate an image",
      "description": "Creates an image from a text prompt",
      "resource": "image"
    },
    {
      "name": "Message a Model",
      "value": "message",
      "action": "Message a model",
      "description": "Send messages to a language model and receive responses",
      "resource": "text"
    }
  ]

npm_readme:
  # 介绍
  Zenlayer AI Gateway提供全球领先的 AI 大模型推理服务，依托 Zenlayer 的全球私有网络与分布式边缘架构，为用户带来超低时延、高可靠性的使用体验。平台支持多种主流与前沿 AI 模型，覆盖文本、图像、音频、视频等多模态任务，并集成了业界最受欢迎的模型生态。开发者无需深入理解底层机器学习或基础设施架构，即可轻松使用最先进的 AI 能力，快速构建智能化应用。

  ## 创建 Zenlayer 账户并获取 API Key
  1.前往 ZenlayerAI 控制台创建并管理 API Key (入口见 https://console.zenlayer.com/aigw/aigateway).

  2.点击 [产品]-[创建AI网关]
  ![img1.png](icons/img1.png)

  3.点击 [创建AI网关] 生成新的API Key
  ![img2.png](icons/img2.png)

  4.请注意：API Key 只会在生成时展示一次。请务必复制并妥善保存，以确保未来能够持续使用

  5.在 n8n 中配置 Zenlayer AI Gateway 节点，填写 API Key 以完成集成。
  ![img3.png](icons/img3.png)

  ## 主要功能
  ### 全球加速的模型访问能力
  基于 Zenlayer 的全球私有网络，在全球范围内提供低延迟的模型推理服务，无论用户身在何处都能获得一致稳定的体验。

  ### 丰富的 AI 模型生态
  - 支持多领域多模态 AI 模型，包括但不限于：
  - 大语言模型（LLM）
  - 文本生成与文本理解
  - 图像、音频、视频生成与处理模型

  ### 分布式边缘推理加速
  依托 Zenlayer 的边缘节点网络，实现更快的响应速度与更高吞吐能力，为实时性（如对话、音视频处理）场景提供强劲支持。

  ### 开发者友好与易集成
  只需简单的 API 调用即可接入，无需复杂部署；灵活的配置可满足不同规模应用的接入需求。

  ### 高性价比的 AI 推理服务
  提供灵活的计费方式，适用于创业团队、中小企业乃至大型分布式应用，确保成本可控且性能卓越。

ai_documentation_summary:
  {"purpose":"This n8n node enables integration with Zenlayer AI Gateway for accessing global AI model inference services with low latency and high reliability.","capabilities":["Access large language models (LLM)","Text generation and text understanding","Image generation and processing","Audio generation and processing","Video generation and processing","Multi-modal AI tasks","Global edge-based inference acceleration"],"authentication":"API Key required","commonUseCases":["Integrating AI models into n8n workflows","Building multi-modal AI applications","Reducing latency for global AI inference","Cost-effective AI deployment for businesses"],"limitations":["API Key is displayed only once during generation and must be saved securely","Requires manual configuration of API Key in n8n node settings"],"relatedNodes":["HTTP Request","Function","Code"]}


node_type: n8n-nodes-evomi.evomi
package_name: n8n-nodes-evomi
display_name: Evomi
description: Scrape web pages using the Evomi Scraper API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: evomi
author_github_url: https://github.com/evomi/
npm_package_name: n8n-nodes-evomi
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:33.504Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "webPage",
      "options": [
        {
          "name": "Web Page",
          "value": "webPage"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape a web page",
          "description": "Scrape content from a web page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webPage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape a web page",
      "description": "Scrape content from a web page",
      "resource": "webPage"
    }
  ]

npm_readme:
  # Evomi n8n Node

  This repository provides an n8n community node for **Evomi's Scraper API**, a powerful web scraping tool with intelligent mode detection, automatic CAPTCHA solving, and residential proxy support.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform that lets you connect apps, APIs, and services to build automated workflows.

  ## Features

  - **Intelligent Auto Mode**: Automatically detects whether to use fast HTTP requests or full browser rendering
  - **Three Scraping Modes**: Choose between `auto`, `request`, or `browser` modes
  - **Multiple Output Formats**: Get results as JSON, Markdown, or Screenshot
  - **AI Tool Compatible**: Use as an AI agent tool for intelligent web scraping
  - **Automatic CAPTCHA Solving**: Built-in CAPTCHA handling with browser mode
  - **Geo-Targeting**: Route requests through proxies in 195+ countries
  - **Robust Error Handling**: Comprehensive validation with helpful error messages

  ---

  ## Prerequisites

  To use this node, you need:

  1. **An Evomi account** - Sign up at [evomi.com](https://evomi.com)
  2. **Active Scraper API subscription or Pay-As-You-Go credits** - Required to make API requests

  > **🎁 Free Trial Available!** New users can get started with a free trial at [my.evomi.com/scraper-api](https://my.evomi.com/scraper-api).

  ---

  ## Installation

  ### From n8n Community Nodes

  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Select **Install**
  4. Enter `n8n-nodes-evomi` and confirm

  ### Manual Installation

  ```bash
  npm install n8n-nodes-evomi
  ```

  ---

  ## Getting Started

  ### Step 1: Get Your API Key

  1. Log in to your [Evomi Dashboard](https://my.evomi.com)
  2. Navigate to **Products** → **Scraper API** → **[Playground](https://my.evomi.com/my/products/scraper-api-universal/playground)**
  3. Your API key is displayed in the top-right section of the dashboard

  <img src="images/evomi_dashboard.png" width="600" alt="Evomi Dashboard - API Key Location">

  Copy the API key from the highlighted field (click the copy icon next to it).

  ### Step 2: Add the Evomi Node to Your Workflow

  1. In your n8n workflow editor, click the **+** button to add a new node

  <img src="images/n8n_plus_node.png" width="500" alt="Click the + button">

  2. Search for **"Evomi"** in the node selector

  <img src="images/n8n_search_evomi_node.png" width="400" alt="Search for Evomi">

  3. Click on the **Evomi** node to add it to your workflow

  ### Step 3: Configure Your Credentials

  1. In the Evomi node panel, click on **"Select Credential"** → **"+ Create new credential"**

  <img src="images/n8n_create_new_credential.png" width="400" alt="Create new credential">

  2. Enter your API key from the Evomi dashboard and click **Save**

  <img src="images/n8n_new_credential_enter_apikey.png" width="500" alt="Enter API Key">

  3. You should see **"Connection tested successfully"** - your credentials are now saved!

  <img src="images/n8n_crediential_saved_successfully.png" width="500" alt="Credential saved successfully">

  ### Step 4: Configure and Execute

  1. Enter the URL you want to scrape
  2. Choose your preferred mode and output format
  3. Click **Execute step** to run the scraper!

  <img src="images/n8n_node_success_result.png" width="700" alt="Successful scrape result">

  ---

  ## Node Parameters

  ### URL (Required)

  The web page URL to scrape. Must include `http://` or `https://`.

  ```
  https://example.com
  https://news.ycombinator.com
  ```

  ### Mode

  Choose how the page should be fetched:

  | Mode | Description | Best For | JavaScript |
  |------|-------------|----------|------------|
  | **Auto** (Default) | Automatically detects the best approach. Tries HTTP first, upgrades to browser if needed. | Most use cases | Auto-detected |
  | **Request** | Fast HTTP request without browser rendering. | Static sites, blogs, news, APIs | No |
  | **Browser** | Full browser with JavaScript execution. | SPAs, React/Vue/Angular apps, dynamic content | Yes |

  ### Output

  Choose the format for the scraped content:

  | Output | Description | Use Case |
  |--------|-------------|----------|
  | **JSON** (Default) | Structured JSON with metadata. Toggle "Include Content" to get the full HTML. | When you need metadata (title, status, etc.) |
  | **Markdown** | Clean, readable text format. | AI processing, content analysis, LLM input |
  | **Screenshot** | Full-page PNG image. Automatically enables Browser mode. | Visual verification, archiving, thumbnails |

  ### Include Content (JSON only)

  When using JSON output, toggle this to include the full HTML content in the response. Disable to save bandwidth when you only need metadata.

  - **Default**: Off
  - **When enabled**: Response includes `content` field with full HTML

  ### Wait Seconds (Auto & Browser modes)

  Seconds to wait after page load before capturing content. Useful for pages that load content dynamically via JavaScript.

  - **Default**: 5 seconds
  - **Range**: 0-30 seconds
  - **Tip**: Increase for slow-loading pages, decrease for fast static sites

  ### Proxy Country

  Route your request through a proxy in a specific country using ISO 3166-1 alpha-2 codes.

  - **Default**: US
  - **Examples**: `US`, `CA`, `DE`, `GB`, `JP`, `AU`, `FR`, `BR`

  **Common Country Codes:**
  | Code | Country |
  |------|---------|
  | US | United States |
  | CA | Canada |
  | GB | United Kingdom |
  | DE | Germany |
  | FR | France |
  | JP | Japan |
  | AU | Australia |
  | BR | Brazil |

  ---

  ## Usage Examples

  ### As a Standalone Node

  **Basic scraping:**
  1. Set URL: `https://example.com`
  2. Mode: `Auto`
  3. Output: `JSON`
  4. Execute

  **Get markdown for AI processing:**
  1. Set URL: `https://blog.example.com/article`
  2. Mode: `Auto`
  3. Output: `Markdown`
  4. Execute → Feed result to AI node

  **Take a screenshot:**
  1. Set URL: `https://dashboard.example.com`
  2. Mode: `Browser` (auto-selected)
  3. Output: `Screenshot`
  4. Execute

  **Geo-targeted scraping:**
  1. Set URL: `https://amazon.de`
  2. Proxy Country: `DE`
  3. Execute → Get German localized content

  ### As an AI Agent Tool

  Connect the Evomi node to an AI Agent node as a tool. The AI can scrape websites based on natural language prompts.

  **Example Prompts:**
  - "Scrape https://news.ycombinator.com and summarize the top 5 stories"
  - "Get the content from https://example.com/pricing and extract the pricing tiers"
  - "Take a screenshot of https://competitor.com/landing-page"

  ---

  ## Response Formats

  ### JSON Output

  ```json
  {
    "success": true,
    "url": "https://example.com",
    "domain": "example.com",
    "title": "Example Domain",
    "status_code": 200,
    "credits_used": 2.0,
    "credits_remaining": 98.0,
    "mode_used": "auto (request)",
    "content": "<html>...</html>"
  }
  ```

  ### Markdown Output

  Returns clean, formatted text:

  ```markdown
  # Example Domain

  This domain is for use in illustrative examples in documents...
  ```

  ### Screenshot Output

  Returns binary PNG image data that can be:
  - Saved to file
  - Uploaded to cloud storage
  - Processed by image nodes

  ---

  ## Error Handling

  The node provides comprehensive error handling with helpful messages:

  ### Input Validation Errors

  | Error | Cause | Solution |
  |-------|-------|----------|
  | "URL is required" | Empty URL field | Enter a valid URL |
  | "Invalid URL format" | Missing http:// or https:// | Add protocol to URL |
  | "Invalid proxy country code" | Not a 2-letter code | Use ISO 3166-1 alpha-2 (e.g., US, DE) |

  ### API Errors

  | Error | Cause | Solution |
  |-------|-------|----------|
  | "Invalid API key" | Wrong or expired key | Check credentials in n8n |
  | "Insufficient credits" | Account out of credits | [Add credits](https://my.evomi.com) or start a [free trial](https://my.evomi.com/scraper-api) |
  | "Rate limit exceeded" | Too many requests | Wait and retry, or upgrade plan |
  | "Failed to connect" | Network issue | Check internet connection |

  ### Continue on Fail

  Enable **"Continue on Fail"** in node settings to handle errors gracefully. Failed items will return:

  ```json
  {
    "success": false,
    "error": "Error message here",
    "itemIndex": 0
  }
  ```

  ---

  ## Credits & Pricing

  | Mode | Output | Approximate Cost |
  |------|--------|------------------|
  | Request | JSON/Markdown | 1-2 credits |
  | Auto (request used) | JSON/Markdown | 2 credits |
  | Auto (browser used) | JSON/Markdown | 6 credits |
  | Browser | JSON/Markdown | 5 credits |
  | Browser | Screenshot | 6 credits |

  Check your credit balance at [my.evomi.com](https://my.evomi.com).

  > **💡 Tip:** Start with a [free trial](https://my.evomi.com/scraper-api) to test the API before committing to a subscription.

  ---

  ## Development

  ### Setup

  ```bash
  # Clone the repository
  git clone https://github.com/evomi/n8n-nodes-evomi.git
  cd n8n-nodes-evomi

  # Install dependencies
  npm install

  # Build the project
  npm run build
  ```

  ### Testing Locally

  ```bash
  # 1. Build the node
  npm run build

  # 2. Link the package
  npm link

  # 3. Create n8n custom folder and link
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-evomi

  # 4. Start n8n
  n8n start
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lint:fix
  ```

  ---

  ## Compatibility

  - **Node.js**: >=20.15
  - **n8n**: Latest version recommended
  - **n8n Nodes API Version**: 1

  ---

  ## Resources

  - [Evomi Scraper API Documentation](https://docs.evomi.com/scraping-products-instructions/scraper-api/)
  - [Evomi Dashboard & API Playground](https://my.evomi.com/my/products/scraper-api-universal/playground)
  - [Start Free Trial](https://my.evomi.com/scraper-api)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ---

  ## Support

  | Issue Type | Where to Get Help |
  |------------|-------------------|
  | **This node** | [GitHub Issues](https://github.com/evomi/n8n-nodes-evomi/issues) |
  | **Evomi API** | [support@evomi.com](mailto:support@evomi.com) |
  | **n8n** | [n8n Community Forum](https://community.n8n.io/) |

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A n8n community node that scrapes web pages using Evomi's Scraper API, supporting intelligent mode detection, CAPTCHA solving, and geo-targeting.","capabilities":["Web page scraping via HTTP or browser rendering","Automatic mode detection (HTTP vs browser)","Three scraping modes: auto, request, and browser","Multiple output formats: JSON, Markdown, and Screenshot","Built-in CAPTCHA solving in browser mode","Geo-targeting through proxies in 195+ countries","Comprehensive error handling and validation","AI tool compatibility for agent workflows","Dynamic content loading support with wait time configuration"],"authentication":"API key required (entered via credential manager)","commonUseCases":["Extracting structured data from websites for automation","Generating Markdown content for AI processing","Capturing website screenshots for archiving or verification","Scraping JavaScript-heavy single-page applications (SPAs)","Geographic targeting for localized content scraping"],"limitations":["Requires an active Evomi account and Scraper API subscription or credits","Free trial available but not unlimited","Browser mode automatically selected for screenshot output","Wait time limited to 0-30 seconds in Auto and Browser modes"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.webhookResponse"]}


node_type: n8n-nodes-pdf-api-hub.pdfSplitMerge
package_name: n8n-nodes-pdf-api-hub
display_name: PDF Api Hub
description: HTML to PDF
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: htmlcsstoimage
author_github_url: https://github.com/Pdfapihub/
npm_package_name: n8n-nodes-pdf-api-hub
npm_version: 4.0.27
community_fetched_at: 2026-07-14T14:40:33.505Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "pdfCreation",
      "options": [
        {
          "name": "HTML / URL to PDF",
          "value": "pdfCreation",
          "description": "Turn any webpage or HTML into a polished PDF"
        },
        {
          "name": "Sign & Watermark PDF",
          "value": "watermark",
          "description": "Stamp a signature or add text/image watermarks onto your PDFs"
        },
        {
          "name": "Screenshot Website to Image",
          "value": "imageGeneration",
          "description": "Capture any webpage or HTML as a PNG screenshot"
        },
        {
          "name": "OCR — Read Scanned PDFs & Image",
          "value": "ocrParsing",
          "description": "Extract text from scanned documents and photos using OCR"
        },
        {
          "name": "Extract PDF Text & Table",
          "value": "pdfParsing",
          "description": "Pull out text, tables, or structured data from any PDF"
        },
        {
          "name": "PDF to Excel / CSV / Word / PowerPoint",
          "value": "documentConversion",
          "description": "Convert PDFs into editable formats — Excel, Word, CSV, HTML, PPTX"
        },
        {
          "name": "Merge / Split PDF",
          "value": "pdfManipulation",
          "description": "Combine multiple PDFs or split one into parts"
        },
        {
          "name": "Compress PDF",
          "value": "compressResource",
          "description": "Shrink PDF file size without losing quality"
        },
        {
          "name": "Protect / Unlock PDF",
          "value": "pdfSecurity",
          "description": "Add or remove password protection on PDFs"
        },
        {
          "name": "Scrape Website HTML",
          "value": "urlToHtml",
          "description": "Fetch the fully-rendered HTML of any page — great for SPAs"
        },
        {
          "name": "Images to PDF",
          "value": "imageToPdf",
          "description": "Combine JPG, PNG, or WebP images into a single PDF"
        },
        {
          "name": "PDF to Image",
          "value": "pdfToImage",
          "description": "Render PDF pages as PNG, JPG, or WebP images"
        },
        {
          "name": "Compare Document",
          "value": "documentIntelligence",
          "description": "Check how similar two PDFs or images are"
        },
        {
          "name": "File Management",
          "value": "fileManagement",
          "description": "Upload, list, or delete files in your cloud storage"
        },
        {
          "name": "Template",
          "value": "templates",
          "description": "Save and manage reusable HTML/CSS templates for PDF and image generation"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urlToPdf",
      "options": [
        {
          "name": "URL to PDF",
          "value": "urlToPdf",
          "action": "Capture a screenshot of a website in PDF format",
          "description": "Capture website screenshot to PDF"
        },
        {
          "name": "HTML to PDF",
          "value": "htmlToPdf",
          "action": "Convert HTML to PDF",
          "description": "Generate PDF from HTML/CSS"
        },
        {
          "name": "Template to PDF",
          "value": "templateToPdf",
          "action": "Generate PDF from a saved template",
          "description": "Generate PDF from a saved reusable template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfCreation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urlToImage",
      "options": [
        {
          "name": "URL to Image",
          "value": "urlToImage",
          "action": "Capture a screenshot of a website as an image",
          "description": "Capture website screenshot as image"
        },
        {
          "name": "HTML to Image",
          "value": "htmlToImage",
          "action": "Convert HTML to image",
          "description": "Generate image from HTML/CSS"
        },
        {
          "name": "Template to Image",
          "value": "templateToImage",
          "action": "Generate image from a saved template",
          "description": "Generate image from a saved reusable template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "imageGeneration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pdfOcrParse",
      "options": [
        {
          "name": "PDF OCR Parse",
          "value": "pdfOcrParse",
          "action": "Parse text from scanned PDF images",
          "description": "Parse text from PDFs, including scanned pages"
        },
        {
          "name": "Image OCR Parse",
          "value": "imageOcrParse",
          "action": "Parse text from images",
          "description": "Extract text from image using OCR"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ocrParsing"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pngToPdf",
      "options": [
        {
          "name": "PNG to PDF",
          "value": "pngToPdf",
          "action": "Convert PNG images to PDF",
          "description": "Convert PNG image(s) to PDF"
        },
        {
          "name": "WebP to PDF",
          "value": "webpToPdf",
          "action": "Convert webp images to PDF",
          "description": "Convert WebP image(s) to PDF"
        },
        {
          "name": "JPG to PDF",
          "value": "jpgToPdf",
          "action": "Convert JPG images to PDF",
          "description": "Convert JPG image(s) to PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "imageToPdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "docxToPdf",
      "options": [
        {
          "name": "PDF to Excel (XLSX)",
          "value": "pdfToXlsx",
          "action": "Convert pdf to excel",
          "description": "Extract tables and text from PDF into an Excel spreadsheet — one sheet per page"
        },
        {
          "name": "PDF to DOCX",
          "value": "pdfToDocx",
          "action": "Convert a pdf to docx",
          "description": "Convert PDF to DOCX"
        },
        {
          "name": "PDF to CSV",
          "value": "pdfToCsv",
          "action": "Convert PDF to CSV",
          "description": "Extract tables and text from PDF into CSV format"
        },
        {
          "name": "PDF to Text",
          "value": "pdfToTxt",
          "action": "Convert PDF to plain text",
          "description": "Extract plain text from all or selected PDF pages"
        },
        {
          "name": "PDF to HTML",
          "value": "pdfToHtml",
          "action": "Convert PDF to HTML",
          "description": "Convert PDF pages to a styled HTML document"
        },
        {
          "name": "PDF to PowerPoint (PPTX)",
          "value": "pdfToPptx",
          "action": "Convert pdf to power point",
          "description": "Convert each PDF page into a PowerPoint slide"
        },
        {
          "name": "DOCX / Document to PDF",
          "value": "docxToPdf",
          "action": "Convert a document to PDF",
          "description": "Convert Office-like documents (DOCX, PPTX, XLSX, etc.) to PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentConversion"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "documentSimilarity",
      "options": [
        {
          "name": "Similarity Check",
          "value": "documentSimilarity",
          "action": "Compare similarity between two documents",
          "description": "Compare similarity between two images/PDF documents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentIntelligence"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pdfToPng",
      "options": [
        {
          "name": "PDF to PNG",
          "value": "pdfToPng",
          "action": "Convert PDF to PNG images",
          "description": "Convert PDF pages to PNG images"
        },
        {
          "name": "PDF to WebP",
          "value": "pdfToWebp",
          "action": "Convert pdf to webp images",
          "description": "Convert PDF pages to WebP images"
        },
        {
          "name": "PDF to JPG",
          "value": "pdfToJpg",
          "action": "Convert PDF to JPG images",
          "description": "Convert PDF pages to JPG images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfToImage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchHtml",
      "options": [
        {
          "name": "Fetch HTML",
          "value": "fetchHtml",
          "action": "Fetch rendered HTML from a URL",
          "description": "Navigate to a URL and return the fully-rendered HTML"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "urlToHtml"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "signPdf",
      "options": [
        {
          "name": "Sign PDF",
          "value": "signPdf",
          "action": "Sign a PDF with a signature image",
          "description": "Stamp a signature image onto one or all pages"
        },
        {
          "name": "Add Watermark",
          "value": "addWatermark",
          "action": "Add watermark to PDF or image",
          "description": "Overlay text or a logo across every page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "watermark"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "mergePdf",
      "options": [
        {
          "name": "Merge PDF",
          "value": "mergePdf",
          "action": "Merge multiple pd fs into one",
          "description": "Combine multiple PDFs into one document"
        },
        {
          "name": "Split PDF",
          "value": "splitPdf",
          "action": "Split a PDF into parts",
          "description": "Split a PDF into separate pages or chunks"
        },
        {
          "name": "Compress PDF",
          "value": "compressPdf",
          "action": "Compress a PDF file",
          "description": "Reduce PDF file size — choose from low to max compression"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfManipulation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "compressPdf",
      "options": [
        {
          "name": "Compress PDF",
          "value": "compressPdf",
          "action": "Compress a PDF file",
          "description": "Reduce PDF file size — choose from low to max compression"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "compressResource"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "lockPdf",
      "options": [
        {
          "name": "Lock PDF",
          "value": "lockPdf",
          "action": "Password protect a pdf file",
          "description": "Add password protection to a PDF"
        },
        {
          "name": "Unlock PDF",
          "value": "unlockPdf",
          "action": "Remove password protection from PDF",
          "description": "Remove password protection from a PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfSecurity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parsePdf",
      "options": [
        {
          "name": "Extract Text / Parse PDF",
          "value": "parsePdf",
          "action": "Parse PDF to JSON",
          "description": "Extract text or structured data from a PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfParsing"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadFile",
      "options": [
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload a file",
          "description": "Upload a file to cloud storage — auto-deleted after 30 days"
        },
        {
          "name": "List Files",
          "value": "listFiles",
          "action": "List uploaded files",
          "description": "List all files uploaded with your API key"
        },
        {
          "name": "Delete File",
          "value": "deleteFile",
          "action": "Delete an uploaded file",
          "description": "Delete a file from cloud storage by URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fileManagement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createTemplate",
      "options": [
        {
          "name": "Create Template",
          "value": "createTemplate",
          "action": "Create a template",
          "description": "Save a reusable HTML/CSS template with optional default parameters"
        },
        {
          "name": "Delete Template",
          "value": "deleteTemplate",
          "action": "Delete a template",
          "description": "Permanently delete a template"
        },
        {
          "name": "Get Template",
          "value": "getTemplate",
          "action": "Get a template",
          "description": "Retrieve the full template including HTML and CSS content"
        },
        {
          "name": "List Templates",
          "value": "listTemplates",
          "action": "List all templates",
          "description": "List all templates owned by your API key"
        },
        {
          "name": "Update Template",
          "value": "updateTemplate",
          "action": "Update a template",
          "description": "Update one or more fields on an existing template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "templates"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "URL to PDF",
      "value": "urlToPdf",
      "action": "Capture a screenshot of a website in PDF format",
      "description": "Capture website screenshot to PDF",
      "resource": "pdfCreation"
    },
    {
      "name": "HTML to PDF",
      "value": "htmlToPdf",
      "action": "Convert HTML to PDF",
      "description": "Generate PDF from HTML/CSS",
      "resource": "pdfCreation"
    },
    {
      "name": "Template to PDF",
      "value": "templateToPdf",
      "action": "Generate PDF from a saved template",
      "description": "Generate PDF from a saved reusable template",
      "resource": "pdfCreation"
    },
    {
      "name": "URL to Image",
      "value": "urlToImage",
      "action": "Capture a screenshot of a website as an image",
      "description": "Capture website screenshot as image",
      "resource": "imageGeneration"
    },
    {
      "name": "HTML to Image",
      "value": "htmlToImage",
      "action": "Convert HTML to image",
      "description": "Generate image from HTML/CSS",
      "resource": "imageGeneration"
    },
    {
      "name": "Template to Image",
      "value": "templateToImage",
      "action": "Generate image from a saved template",
      "description": "Generate image from a saved reusable template",
      "resource": "imageGeneration"
    },
    {
      "name": "PDF OCR Parse",
      "value": "pdfOcrParse",
      "action": "Parse text from scanned PDF images",
      "description": "Parse text from PDFs, including scanned pages",
      "resource": "ocrParsing"
    },
    {
      "name": "Image OCR Parse",
      "value": "imageOcrParse",
      "action": "Parse text from images",
      "description": "Extract text from image using OCR",
      "resource": "ocrParsing"
    },
    {
      "name": "PNG to PDF",
      "value": "pngToPdf",
      "action": "Convert PNG images to PDF",
      "description": "Convert PNG image(s) to PDF",
      "resource": "imageToPdf"
    },
    {
      "name": "WebP to PDF",
      "value": "webpToPdf",
      "action": "Convert webp images to PDF",
      "description": "Convert WebP image(s) to PDF",
      "resource": "imageToPdf"
    },
    {
      "name": "JPG to PDF",
      "value": "jpgToPdf",
      "action": "Convert JPG images to PDF",
      "description": "Convert JPG image(s) to PDF",
      "resource": "imageToPdf"
    },
    {
      "name": "PDF to Excel (XLSX)",
      "value": "pdfToXlsx",
      "action": "Convert pdf to excel",
      "description": "Extract tables and text from PDF into an Excel spreadsheet — one sheet per page",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to DOCX",
      "value": "pdfToDocx",
      "action": "Convert a pdf to docx",
      "description": "Convert PDF to DOCX",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to CSV",
      "value": "pdfToCsv",
      "action": "Convert PDF to CSV",
      "description": "Extract tables and text from PDF into CSV format",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to Text",
      "value": "pdfToTxt",
      "action": "Convert PDF to plain text",
      "description": "Extract plain text from all or selected PDF pages",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to HTML",
      "value": "pdfToHtml",
      "action": "Convert PDF to HTML",
      "description": "Convert PDF pages to a styled HTML document",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to PowerPoint (PPTX)",
      "value": "pdfToPptx",
      "action": "Convert pdf to power point",
      "description": "Convert each PDF page into a PowerPoint slide",
      "resource": "documentConversion"
    },
    {
      "name": "DOCX / Document to PDF",
      "value": "docxToPdf",
      "action": "Convert a document to PDF",
      "description": "Convert Office-like documents (DOCX, PPTX, XLSX, etc.) to PDF",
      "resource": "documentConversion"
    },
    {
      "name": "Similarity Check",
      "value": "documentSimilarity",
      "action": "Compare similarity between two documents",
      "description": "Compare similarity between two images/PDF documents",
      "resource": "documentIntelligence"
    },
    {
      "name": "PDF to PNG",
      "value": "pdfToPng",
      "action": "Convert PDF to PNG images",
      "description": "Convert PDF pages to PNG images",
      "resource": "pdfToImage"
    },
    {
      "name": "PDF to WebP",
      "value": "pdfToWebp",
      "action": "Convert pdf to webp images",
      "description": "Convert PDF pages to WebP images",
      "resource": "pdfToImage"
    },
    {
      "name": "PDF to JPG",
      "value": "pdfToJpg",
      "action": "Convert PDF to JPG images",
      "description": "Convert PDF pages to JPG images",
      "resource": "pdfToImage"
    },
    {
      "name": "Fetch HTML",
      "value": "fetchHtml",
      "action": "Fetch rendered HTML from a URL",
      "description": "Navigate to a URL and return the fully-rendered HTML",
      "resource": "urlToHtml"
    },
    {
      "name": "Sign PDF",
      "value": "signPdf",
      "action": "Sign a PDF with a signature image",
      "description": "Stamp a signature image onto one or all pages",
      "resource": "watermark"
    },
    {
      "name": "Add Watermark",
      "value": "addWatermark",
      "action": "Add watermark to PDF or image",
      "description": "Overlay text or a logo across every page",
      "resource": "watermark"
    },
    {
      "name": "Merge PDF",
      "value": "mergePdf",
      "action": "Merge multiple pd fs into one",
      "description": "Combine multiple PDFs into one document",
      "resource": "pdfManipulation"
    },
    {
      "name": "Split PDF",
      "value": "splitPdf",
      "action": "Split a PDF into parts",
      "description": "Split a PDF into separate pages or chunks",
      "resource": "pdfManipulation"
    },
    {
      "name": "Compress PDF",
      "value": "compressPdf",
      "action": "Compress a PDF file",
      "description": "Reduce PDF file size — choose from low to max compression",
      "resource": "pdfManipulation"
    },
    {
      "name": "Compress PDF",
      "value": "compressPdf",
      "action": "Compress a PDF file",
      "description": "Reduce PDF file size — choose from low to max compression",
      "resource": "compressResource"
    },
    {
      "name": "Lock PDF",
      "value": "lockPdf",
      "action": "Password protect a pdf file",
      "description": "Add password protection to a PDF",
      "resource": "pdfSecurity"
    },
    {
      "name": "Unlock PDF",
      "value": "unlockPdf",
      "action": "Remove password protection from PDF",
      "description": "Remove password protection from a PDF",
      "resource": "pdfSecurity"
    },
    {
      "name": "Extract Text / Parse PDF",
      "value": "parsePdf",
      "action": "Parse PDF to JSON",
      "description": "Extract text or structured data from a PDF",
      "resource": "pdfParsing"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload a file",
      "description": "Upload a file to cloud storage — auto-deleted after 30 days",
      "resource": "fileManagement"
    },
    {
      "name": "List Files",
      "value": "listFiles",
      "action": "List uploaded files",
      "description": "List all files uploaded with your API key",
      "resource": "fileManagement"
    },
    {
      "name": "Delete File",
      "value": "deleteFile",
      "action": "Delete an uploaded file",
      "description": "Delete a file from cloud storage by URL",
      "resource": "fileManagement"
    },
    {
      "name": "Create Template",
      "value": "createTemplate",
      "action": "Create a template",
      "description": "Save a reusable HTML/CSS template with optional default parameters",
      "resource": "templates"
    },
    {
      "name": "Delete Template",
      "value": "deleteTemplate",
      "action": "Delete a template",
      "description": "Permanently delete a template",
      "resource": "templates"
    },
    {
      "name": "Get Template",
      "value": "getTemplate",
      "action": "Get a template",
      "description": "Retrieve the full template including HTML and CSS content",
      "resource": "templates"
    },
    {
      "name": "List Templates",
      "value": "listTemplates",
      "action": "List all templates",
      "description": "List all templates owned by your API key",
      "resource": "templates"
    },
    {
      "name": "Update Template",
      "value": "updateTemplate",
      "action": "Update a template",
      "description": "Update one or more fields on an existing template",
      "resource": "templates"
    }
  ]

npm_readme:
  [![Banner image](images/bannerpdfapihub.png)](https://pdfapihub.com)

  # n8n-nodes-pdf-api-hub

  > **The most powerful PDF toolkit for n8n** — 30+ operations, one node.

  Turn any webpage into a PDF, sign documents, extract tables to Excel, OCR scanned pages, merge/split/compress PDFs, and much more — all inside your n8n workflows.

  🔑 **[Get your free API key →](https://pdfapihub.com)**

  ---

  ## 🚀 Install

  1. In n8n, go to **Settings → Community Nodes**
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-pdf-api-hub`
  4. Click **Install**

  > Official guide: [n8n Community Nodes Installation](https://docs.n8n.io/integrations/community-nodes/installation/)

  ## 🔑 Get your API key

  1. Go to **[pdfapihub.com](https://pdfapihub.com)** and sign up (free tier available)
  2. Copy your **API key** from the dashboard

  > 📖 Full API docs: [pdfapihub.com/docs](https://pdfapihub.com/docs)

  ## 🔐 Set up credentials in n8n

  1. In n8n, go to **Credentials → New**
  2. Search for **PDF API Hub API**
  3. Paste your API key → **Save**

  That's it! The node handles everything automatically.

  ---

  ## ✨ What you can do

  | # | Resource | Operations | What it does |
  |---|----------|-----------|-------------|
  | 1 | **HTML / URL to PDF** | HTML to PDF, URL to PDF | Render HTML or capture any webpage as a pixel-perfect PDF with custom paper size, margins, fonts, and viewport |
  | 2 | **Sign PDF** | Sign PDF, Add Watermark | Stamp a signature image or overlay text/logo watermarks on every page |
  | 3 | **Screenshot to Image** | URL to Image, HTML to Image | Capture full-page screenshots or render HTML to PNG with retina support |
  | 4 | **OCR** | PDF OCR, Image OCR | Extract text from scanned documents and photos — supports English, Portuguese, Russian, and custom languages |
  | 5 | **Extract Text & Tables** | Parse PDF | Pull text, tables, or structured layout data from any PDF |
  | 6 | **PDF to Excel & More** | PDF → XLSX, CSV, DOCX, TXT, HTML, PPTX | Convert PDFs into editable spreadsheets, Word docs, presentations, and more |
  | 7 | **Merge / Split** | Merge PDF, Split PDF | Combine multiple PDFs or split one into pages, ranges, or equal chunks |
  | 8 | **Compress PDF** | Compress PDF | Shrink file size with 4 compression levels (low → max) |
  | 9 | **Protect / Unlock** | Lock PDF, Unlock PDF | Add AES-256 encryption with granular permissions, or remove password protection |
  | 10 | **Scrape Website** | Fetch HTML | Get fully-rendered HTML from any URL using a headless browser — perfect for SPAs |
  | 11 | **Images to PDF** | PNG/JPG/WebP to PDF | Combine images into a PDF with page size, orientation, and fit mode options |
  | 12 | **PDF to Image** | PDF to PNG/JPG/WebP | Render PDF pages as images with DPI, resize, and background color control |
  | 13 | **Compare Documents** | Similarity Check | Compare two PDFs or images for visual similarity |
  | 14 | **File Management** | Upload, List, Delete | Manage your cloud-stored files |

  ---

  ## 📖 Operations in detail

  ### 1. HTML / URL to PDF

  Convert HTML or capture any webpage as a PDF.

  | Parameter | Description |
  |-----------|-------------|
  | **HTML Content** | Your HTML template (supports `{{placeholders}}`) |
  | **CSS Content** | Optional CSS injected before rendering |
  | **URL** | Any public webpage URL |
  | **Paper Size** | A0–A6, Letter, Legal, Tabloid, Ledger |
  | **Orientation** | Portrait / Landscape |
  | **Margins** | None, Small, Medium, Large, or Custom (px/mm/cm/in) |
  | **Viewport Size** | Standard, Laptop, Desktop, Mobile, Tablet, or Custom |
  | **Output Format** | URL (hosted 30 days), Base64, or Binary File |
  | **Load Google Fonts** | Pipe-separated font names (e.g. `Roboto|Inter`) |
  | **Dynamic Params** | Key/value pairs for `{{placeholder}}` substitution |
  | **Cookie Accept Text** | Auto-click cookie consent popups (URL mode) |
  | **Wait Until** | Fully Loaded, DOM Ready, Network Quiet, or First Response |
  | **Advanced** | Print background, header/footer, CSS page size, max pages, navigation timeout |

  ---

  ### 2. Sign PDF & Watermark

  **Sign PDF** — stamp a signature image onto your documents.

  | Parameter | Description |
  |-----------|-------------|
  | **PDF Input** | URL, Base64, or Binary File |
  | **Signature** | Image URL or Base64 (PNG/JPG/WebP, transparent PNGs supported) |
  | **Page** | Specific page number, or sign all pages |
  | **Position** | Bottom Right, Bottom Left, Center, Top Right, etc. |
  | **Advanced** | Custom X/Y coordinates, width/height, opacity |

  **Add Watermark** — overlay text or a logo across every page.

  | Parameter | Description |
  |-----------|-------------|
  | **Watermark Text** | Any text (default: CONFIDENTIAL) |
  | **Opacity** | 0 (invisible) to 1 (fully opaque) |
  | **Position** | Center, Top/Bottom Left/Right/Center |
  | **Mode** | Single placement or Tiled (repeats diagonally) |
  | **Advanced** | Text color, font size, image watermark URL |

  ---

  ### 3. Screenshot Website to Image

  Capture webpages or render HTML as PNG images.

  | Parameter | Description |
  |-----------|-------------|
  | **URL / HTML** | Webpage URL or HTML content |
  | **Output Format** | URL, Base64, Both (URL + Base64), or Binary File |
  | **Image Size** | Width × Height in pixels (HTML mode) |
  | **Viewport** | Desktop, Laptop, Mobile, Tablet, or Custom |
  | **Full Page** | Capture the entire scrollable page (URL mode) |
  | **Cookie Accept** | Auto-dismiss consent popups |
  | **Advanced** | Device scale factor (2× for retina), quality (30–100) |

  ---

  ### 4. OCR — Read Scanned PDFs & Images

  Extract text from scanned documents using Tesseract OCR.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | URL or Binary File (PDF or Image) |
  | **Language** | English, Portuguese, Russian, or custom code (e.g. `eng+hin`) |
  | **Pages** | All, single page, range (`1-3`), or mixed (`1,3,5-8`) |
  | **Detail Level** | Text Only, or Words + Bounding Boxes |
  | **Response Format** | JSON (structured) or Plain Text |
  | **Advanced (PDF)** | DPI (72–400), character whitelist, PSM, OEM |
  | **Advanced (Image)** | Grayscale, sharpen, binarization threshold, resize scale |

  ---

  ### 5. Extract PDF Text & Tables

  Pull structured data from any PDF — no OCR needed for digital PDFs.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | URL or Binary File |
  | **Parse Mode** | Text Only, Layout (with bounding boxes), Tables, or Full |
  | **Pages** | All or specific page selection |

  ---

  ### 6. PDF to Excel / CSV / Word / PowerPoint

  Convert PDFs into editable formats.

  | Operation | Output | Description |
  |-----------|--------|-------------|
  | **PDF to Excel (XLSX)** | `.xlsx` | Tables extracted into spreadsheet — one sheet per page |
  | **PDF to CSV** | `.csv` | Table data in CSV format |
  | **PDF to Word (DOCX)** | `.docx` | Editable Word document with optional page selection |
  | **PDF to Text** | `.txt` | Plain extracted text |
  | **PDF to HTML** | `.html` | Styled HTML document |
  | **PDF to PowerPoint** | `.pptx` | Each page becomes a slide |
  | **Document to PDF** | `.pdf` | Convert DOCX, PPTX, XLSX, CSV, TXT, ODT → PDF |

  All operations support: URL / Binary File input, URL / Base64 / Binary output, optional page selection, and custom output filename.

  ---

  ### 7. Merge / Split PDF

  **Merge** — combine multiple PDFs into one.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | PDF URLs (Google Drive links supported) or Binary Files |
  | **Output Format** | URL, Base64, or Binary File |
  | **Output Filename** | Custom name for the merged file |
  | **Advanced** | PDF metadata (title, author, subject, keywords) |

  **Split** — break a PDF into parts.

  | Parameter | Description |
  |-----------|-------------|
  | **Split Mode** | Each Page, Specific Pages (`1-3,5,8-`), or Equal Chunks (2–100) |
  | **Output** | URL (individual + ZIP), Base64 (ZIP), or Binary (ZIP) |

  ---

  ### 8. Compress PDF

  Reduce file size with configurable compression.

  | Parameter | Description |
  |-----------|-------------|
  | **Compression Level** | Low, Medium, High (default), or Max |
  | **Output Format** | URL, Base64, or Binary File |

  > 💡 URL/Base64 responses include compression statistics — original size, compressed size, ratio, and bytes saved.

  ---

  ### 9. Protect / Unlock PDF

  **Lock** — add password protection with enterprise-grade encryption.

  | Parameter | Description |
  |-----------|-------------|
  | **Password** | Required to open the PDF |
  | **Advanced** | Owner password, encryption (AES-256/128, RC4), 8 granular permissions (print, copy, modify, annotate, forms, extract, assemble, high-res print) |

  **Unlock** — remove password protection using multiple decryption engines.

  ---

  ### 10. Scrape Website HTML

  Fetch fully-rendered HTML from any URL using a headless browser.

  | Parameter | Description |
  |-----------|-------------|
  | **URL** | Any public webpage |
  | **Wait Until** | Fully Loaded, DOM Ready, Network Quiet, or First Response |
  | **Wait for Element** | CSS selector to wait for (great for SPAs) |
  | **Extra Delay** | Additional milliseconds after page load |
  | **Viewport** | Desktop, Laptop, Mobile, Tablet, or Custom |
  | **Advanced** | Navigation timeout, custom User-Agent, extra HTTP headers |

  ---

  ### 11–12. Images ↔ PDF

  **Images to PDF** — combine images into a document.

  | Parameter | Description |
  |-----------|-------------|
  | **Page Size** | Original (match image), A3, A4, A5, Letter, Legal, Tabloid |
  | **Fit Mode** | Fit (preserve aspect), Fill (may crop), Stretch, or Original |
  | **Orientation** | Portrait / Landscape |
  | **Margin** | 0–200 points padding |

  **PDF to Image** — render pages as PNG, JPG, or WebP.

  | Parameter | Description |
  |-----------|-------------|
  | **DPI** | 72–300 (higher = sharper) |
  | **Quality** | 1–100 (JPG/WebP) |
  | **Advanced** | Resize width/height, background color for transparent PNGs |

  ---

  ### 13. Compare Documents

  Check visual similarity between two PDFs or images.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | Two URLs, two Base64 strings, or two Binary Files |
  | **Method** | Auto (default), Feature Match, SSIM, or PHash |

  ---

  ### 14. File Management

  Manage files in your cloud storage.

  | Operation | Description |
  |-----------|-------------|
  | **Upload File** | Upload any file — returns hosted URL (auto-deleted after 30 days) |
  | **List Files** | List all your uploaded files (newest first, limit 1–500) |
  | **Delete File** | Delete a file by URL (ownership enforced) |

  ---

  ## 🔌 How output formats work

  Most operations let you choose how to receive the result:

  | Format | Best for | What you get |
  |--------|---------|-------------|
  | **URL (Hosted Link)** | Sharing, webhooks, storing | A downloadable URL — file hosted for 30 days |
  | **Base64 (Inline Data)** | Embedding in emails, chaining nodes | The file as a base64 string inside JSON |
  | **Binary File** | Piping to Google Drive, S3, Email, etc. | Raw binary data you can pass to any n8n file node |

  > 💡 **Tip**: Choose **Binary File** when you want to pass the output directly to nodes like Write Binary File, Google Drive, AWS S3, or Send Email.

  ---

  ## 💬 Support & resources

  - 🔑 **Get API key**: [pdfapihub.com](https://pdfapihub.com)
  - 📖 **API documentation**: [pdfapihub.com/docs](https://pdfapihub.com/docs)
  - 🐛 **Report a bug**: [GitHub Issues](https://github.com/Pdfapihub/n8n-nodes-pdf-api-hub/issues)
  - 💬 **Questions**: [support@pdfapihub.com](mailto:support@pdfapihub.com)

  ---

  ## 📄 License

  [MIT](LICENSE.md)

  ---

  <p align="center">
    <a href="https://pdfapihub.com">
      <img src="images/bannerpdfapihub.png" alt="PDF API Hub" width="600">
    </a>
    <br>
    <strong>Made with ❤️ by <a href="https://pdfapihub.com">PDF API Hub</a></strong>
  </p>

ai_documentation_summary:
  {"purpose":"A community n8n node that provides a comprehensive toolkit for PDF processing, including parsing, OCR, merging, splitting, compressing, converting formats, and generating screenshots from URLs.","capabilities":["Extract text and structured data from PDFs","Perform OCR on PDFs and images to create searchable text","Merge multiple PDFs into one","Split PDFs by pages, chunks, or individual pages","Compress PDF files","Lock and unlock password-protected PDFs","Convert images (PNG/WebP/JPG) to PDF","Convert PDFs to images (PNG/WebP/JPG)","Convert Office documents (DOCX/DOC/PPTX/XLSX) to PDF","Convert PDFs to DOCX"],"authentication":"API key required (Header: CLIENT-API-KEY)","commonUseCases":["Extracting text from scanned documents using OCR","Combining multiple PDF reports into a single document","Converting website content to PDF for offline viewing","Splitting large PDFs into smaller, manageable files","Converting image files to PDF format for sharing"],"limitations":["OCR on PDFs is limited to a maximum of 8 pages per operation","Requires an active API key from PDF API Hub","Some operations may return ZIP files instead of single PDFs when splitting","URL normalization only handles http/https protocols"],"relatedNodes":["Write Binary File","Google Drive","S3","Email","Read Binary File"]}


node_type: @crowdin/n8n-nodes-crowdin.crowdinFileBased
package_name: @crowdin/n8n-nodes-crowdin
display_name: Crowdin (File-Based)
description: Interact with crowdin.com API for localization management
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: taras.prosvirov
author_github_url: https://github.com/crowdin/n8n-nodes-crowdin.git
npm_package_name: @crowdin/n8n-nodes-crowdin
npm_version: 0.18.0
community_fetched_at: 2026-07-14T14:40:33.506Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "projects",
      "options": [
        {
          "name": "Projects",
          "value": "projects",
          "description": "\nUsing projects, you can keep your source files sorted.\n\nUse API to manage projects, change their settings, or remove them if required.\n"
        },
        {
          "name": "Storage",
          "value": "storage",
          "description": "\nStorage is a separate container for each file. You need to use _Add Storage_ method before adding files to your projects via API. Files that should be uploaded into storage include files for localization, screenshots, Glossaries, and Translation Memories.\n\n_Storage id_ is the identifier of the file uploaded to the Storage.\n\n__Note:__ Files uploaded to the storage are kept during the next 24 hours.\n"
        },
        {
          "name": "Source Files",
          "value": "sourceFiles",
          "description": "\nSource files are resources for translation. You can keep files structure using folders or manage different versions of the content via branches.\n\nUse API to keep the source files up to date, check on file revisions, and manage project branches. Before adding source files to the project, upload each file to the Storage first.\n\n__Note:__ If you use branches, make sure your master branch is the first one you integrate with Crowdin.\n"
        },
        {
          "name": "Source Strings",
          "value": "sourceStrings",
          "description": "\nSource strings are the text units for translation. Instead of modifying source files, you can manage source strings one by one.\n\nUse API to add, edit, or delete some specific strings in the source-based and file-based projects (available only for the following file formats: CSV, RESX, JSON, Android XML, iOS strings, PROPERTIES, XLIFF).\n"
        },
        {
          "name": "Translations",
          "value": "translations",
          "description": "\nTranslators can work with entirely untranslated project or you can pre-translate the files to ease the translations process.\n\nUse API to pre-translate files via Machine Translation (MT) or Translation Memory (TM), upload your existing translations, and download translations correspondingly. Pre-translate and build are [asynchronous operations](#section/Introduction/Asynchronous-Operations) and shall be completed with sequence of API methods.\n\n__Note:__ If there are no new translations or changes in build parameters, Crowdin will return the current build for such requests.\n"
        },
        {
          "name": "String/Asset Translations",
          "value": "stringAssetTranslations",
          "description": "Use API to add or remove strings/asset translations, approvals, and votes."
        },
        {
          "name": "Translation Status",
          "value": "translationStatus",
          "description": "\nStatus represents the general localization progress on both translations and proofreading.\n\nUse API to check translation and proofreading progress on different levels: file, language, branch, directory.\n"
        },
        {
          "name": "Distributions",
          "value": "distributions",
          "description": "\nDistributions allow you to deliver translated content to your applications Over-The-Air (OTA).\n\nUse API to manage distributions and release them so that the latest translations become available to your users.\n"
        },
        {
          "name": "Reports",
          "value": "reports",
          "description": "\nReports help to estimate costs, calculate translation costs, and identify the top members.\n\nUse API to generate Cost Estimate, Translation Cost, and Top Members reports. You can then export reports in .xlsx or .csv file formats. Report generation is an [asynchronous operation](#section/Introduction/Asynchronous-Operations) and shall be completed with a sequence of API methods.\n"
        },
        {
          "name": "Tasks",
          "value": "tasks",
          "description": "\nCreate and assign tasks to get files translated or proofread by specific people. You can set the due dates, split words between people, and receive notifications about the changes and updates on tasks. Tasks are project-specific, so you’ll have to create them within a project.\n\nUse API to create, modify, and delete specific tasks.\n"
        },
        {
          "name": "String/Asset Comments",
          "value": "stringAssetComments",
          "description": "Use API to list, add, edit or remove string/asset comments."
        },
        {
          "name": "Translation Memory",
          "value": "translationMemory",
          "description": "\nTranslation Memory (TM) is a vault of translations that were previously made in other projects. Those translations can be reused to speed up the translation process. Every translation made in the project is automatically added to the project Translation Memory.\n\nUse API to create, upload, download, or remove specific TM. Translation Memory export and import are [asynchronous operations](#section/Introduction/Asynchronous-Operations) and shall be completed with sequence of API methods.\n"
        },
        {
          "name": "Glossaries",
          "value": "glossaries",
          "description": "\nGlossaries help to explain some specific terms or the ones often used in the project so that they can be properly and consistently translated.\n\nUse API to manage glossaries or specific terms. Glossary export and import are [asynchronous operations](#section/Introduction/Asynchronous-Operations) and shall be completed with sequence of API methods.\n"
        },
        {
          "name": "Style Guides",
          "value": "styleGuides",
          "description": "\nStyle Guides help to provide additional context for the translators.\n\nUse API to manage style guides.\n"
        },
        {
          "name": "Machine Translation Engines",
          "value": "machineTranslationEngines",
          "description": "\nMachine Translation Engines (MTE) are the sources for pre-translations. You can currently connect Google Translate, Microsoft Translator, Crowdin Translate, DeepL Pro and Amazon Translate engines.\n\nUse API to add, update, and delete specific MTE.\n"
        },
        {
          "name": "Screenshots",
          "value": "screenshots",
          "description": "\nScreenshots provide translators with additional context for the source strings. Screenshot tags allow specifying which source strings are displayed on each screenshot.\n\nUse API to manage screenshots and their tags.\n"
        },
        {
          "name": "Labels",
          "value": "labels",
          "description": "\nLabels help you organize and group strings in your project.\n\nUse API to manage labels and to assign them to strings and screenshots.\n"
        },
        {
          "name": "Dictionaries",
          "value": "dictionaries",
          "description": "\nDictionaries allow you to create a storage of words that should be skipped by the spell checker.\n\nUse API to get the list of organization dictionaries and to edit a specific dictionary.\n"
        },
        {
          "name": "Users",
          "value": "users",
          "description": "\nUsers API gives you the possibility to get profile information about the currently authenticated user.\n"
        },
        {
          "name": "Notifications",
          "value": "notifications",
          "description": "Use API to send custom notifications to the authenticated user or project members."
        },
        {
          "name": "AI",
          "value": "ai",
          "description": "\nAI features help you translate content and perform other localization tasks using the configured AI providers.\n\nUse API to manage AI providers, prompts, settings, and custom placeholders, to run AI-powered translations, and to generate AI reports.\n"
        },
        {
          "name": "Languages",
          "value": "languages",
          "description": "\nCrowdin supports more than 300 world languages and custom languages created in the system.\n\nUse API to get the list of all supported languages and retrieve additional details (e.g. text direction, internal code) on specific language.\n"
        },
        {
          "name": "Webhooks",
          "value": "webhooks",
          "description": "\nWebhooks allow you to collect information about events that happen in your Crowdin projects. You can select the request type, content type, and add a custom payload, which allows you to create integrations with other systems on your own.\n\nYou can configure webhooks for the following events:\n * project file is fully translated\n * project file is fully reviewed\n * project file is fully QA checked\n * all strings in project are translated\n * all strings in project are reviewed\n * all strings in project QA check are finished\n * final translation of string is updated (using Replace in suggestions feature)\n * source string is added\n * source string is updated\n * source string is deleted\n * source string is translated\n * translation for source string is updated (using Replace in suggestions feature)\n * one of translations is deleted\n * translation for string is approved\n * approval for previously added translation is removed\n\nUse API to create, modify, and delete specific webhooks.\n"
        },
        {
          "name": "Organization Webhooks",
          "value": "organizationWebhooks",
          "description": "\nWebhooks allow you to collect information about events that happen in your Crowdin account. You can select the request type, content type, and add a custom payload, which allows you to create integrations with other systems on your own.\n\nYou can configure webhooks for the following events:\n * project is created\n * project is deleted\n\nUse API to create, modify, and delete specific webhooks.\n"
        },
        {
          "name": "Applications",
          "value": "applications",
          "description": "\nCrowdin Apps are web applications that can be integrated with Crowdin to extend its functionality.\n\nUse the API to manage the necessary app data.\n"
        },
        {
          "name": "Integrations",
          "value": "integrations",
          "description": "\nIntegration applications provide synchronization between Crowdin and external content management systems.\n\nUse the API to manage integration files, jobs, settings, and authentication.\n"
        },
        {
          "name": "Advisor",
          "value": "advisor",
          "description": "\nAdvisor checks your project setup and content and provides insights with recommendations for improving your localization workflow. Installed applications can extend Advisor with their own checks.\n\nUse API to manage advisor insights and to run advisor checks.\n"
        },
        {
          "name": "Security Logs",
          "value": "securityLogs",
          "description": "\nSecurity logs keep track of security-related activities within your account (e.g. login, password change).\n\nUse API to get the list of user security logs and to check the details of a specific security log record.\n"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.getMany",
      "options": [
        {
          "name": "List Projects",
          "value": "api.projects.getMany",
          "action": "List Projects",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Add Project",
          "value": "api.projects.post",
          "action": "Add Project",
          "routing": {
            "request": {
              "url": "=/projects",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "Get Project",
          "value": "api.projects.get",
          "action": "Get Project",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Delete Project",
          "value": "api.projects.delete",
          "action": "Delete Project",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project` (Read and Write)."
        },
        {
          "name": "Edit Project",
          "value": "api.projects.patch",
          "action": "Edit Project",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "Download Project File Format Settings Custom Segmentation",
          "value": "api.projects.file-format-settings.custom-segmentations.get",
          "action": "Download Project File Format Settings Custom Segmentation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}/custom-segmentations",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Reset Project File Format Settings Custom Segmentation",
          "value": "api.projects.file-format-settings.custom-segmentations.delete",
          "action": "Reset Project File Format Settings Custom Segmentation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}/custom-segmentations",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "List Project File Format Settings",
          "value": "api.projects.file-format-settings.getMany",
          "action": "List Project File Format Settings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Add Project File Format Settings",
          "value": "api.projects.file-format-settings.post",
          "action": "Add Project File Format Settings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "Get Project File Format Settings",
          "value": "api.projects.file-format-settings.get",
          "action": "Get Project File Format Settings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Delete Project File Format Settings",
          "value": "api.projects.file-format-settings.delete",
          "action": "Delete Project File Format Settings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "Edit Project File Format Settings",
          "value": "api.projects.file-format-settings.patch",
          "action": "Edit Project File Format Settings",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "List Project Strings Exporter Settings",
          "value": "api.projects.strings-exporter-settings.getMany",
          "action": "List Project Strings Exporter Settings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Add Project Strings Exporter Settings",
          "value": "api.projects.strings-exporter-settings.post",
          "action": "Add Project Strings Exporter Settings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "Get Project Strings Exporter Settings",
          "value": "api.projects.strings-exporter-settings.get",
          "action": "Get Project Strings Exporter Settings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings/{{$parameter[\"systemStringsExporterSettingsId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read only)."
        },
        {
          "name": "Delete Project Strings Exporter Settings",
          "value": "api.projects.strings-exporter-settings.delete",
          "action": "Delete Project Strings Exporter Settings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings/{{$parameter[\"systemStringsExporterSettingsId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        },
        {
          "name": "Edit Project Strings Exporter Settings",
          "value": "api.projects.strings-exporter-settings.patch",
          "action": "Edit Project Strings Exporter Settings",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings/{{$parameter[\"systemStringsExporterSettingsId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.settings` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/file-format-settings/{fileFormatSettingsId}/custom-segmentations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.custom-segmentations.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/file-format-settings/{fileFormatSettingsId}/custom-segmentations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.custom-segmentations.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/file-format-settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/file-format-settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/file-format-settings/{fileFormatSettingsId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/file-format-settings/{fileFormatSettingsId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/file-format-settings/{fileFormatSettingsId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.file-format-settings.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/strings-exporter-settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.strings-exporter-settings.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/strings-exporter-settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.strings-exporter-settings.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/strings-exporter-settings/{systemStringsExporterSettingsId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.strings-exporter-settings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/strings-exporter-settings/{systemStringsExporterSettingsId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.strings-exporter-settings.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/strings-exporter-settings/{systemStringsExporterSettingsId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ],
          "operation": [
            "api.projects.strings-exporter-settings.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.storages.getMany",
      "options": [
        {
          "name": "List Storages",
          "value": "api.storages.getMany",
          "action": "List Storages",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/storages",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Storage",
          "value": "api.storages.get",
          "action": "Get Storage",
          "routing": {
            "request": {
              "url": "=/storages/{{$parameter[\"storageId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Delete Storage",
          "value": "api.storages.delete",
          "action": "Delete Storage",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/storages/{{$parameter[\"storageId\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Add Storage",
          "value": "api.storages.post",
          "action": "Add Storage",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/storages",
              "method": "POST",
              "headers": {
                "Crowdin-API-FileName": "={{$parameter[\"fileName\"]}}"
              }
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "storage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /storages",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "storage"
          ],
          "operation": [
            "api.storages.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /storages/{storageId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "storage"
          ],
          "operation": [
            "api.storages.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /storages/{storageId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "storage"
          ],
          "operation": [
            "api.storages.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.branches.getMany",
      "options": [
        {
          "name": "List Branches",
          "value": "api.projects.branches.getMany",
          "action": "List Branches",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/branches",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Add Branch",
          "value": "api.projects.branches.post",
          "action": "Add Branch",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/branches",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Get Branch",
          "value": "api.projects.branches.get",
          "action": "Get Branch",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Delete Branch",
          "value": "api.projects.branches.delete",
          "action": "Delete Branch",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Edit Branch",
          "value": "api.projects.branches.patch",
          "action": "Edit Branch",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "List Directories",
          "value": "api.projects.directories.getMany",
          "action": "List Directories",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/directories",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Add Directory",
          "value": "api.projects.directories.post",
          "action": "Add Directory",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/directories",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Get Directory",
          "value": "api.projects.directories.get",
          "action": "Get Directory",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Delete Directory",
          "value": "api.projects.directories.delete",
          "action": "Delete Directory",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Edit Directory",
          "value": "api.projects.directories.patch",
          "action": "Edit Directory",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "List Files",
          "value": "api.projects.files.getMany",
          "action": "List Files",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Add File",
          "value": "api.projects.files.post",
          "action": "Add File",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Get File",
          "value": "api.projects.files.get",
          "action": "Get File",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Update or Restore File",
          "value": "api.projects.files.put",
          "action": "Update or Restore File",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write).\n\nUpdate your current file with a new one or restore it to one of the previous revisions"
        },
        {
          "name": "Delete File",
          "value": "api.projects.files.delete",
          "action": "Delete File",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Edit File",
          "value": "api.projects.files.patch",
          "action": "Edit File",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Download File Preview",
          "value": "api.projects.files.preview.get",
          "action": "Download File Preview",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/preview",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Download File",
          "value": "api.projects.files.download.get",
          "action": "Download File",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "List Asset References",
          "value": "api.projects.files.references.getMany",
          "action": "List Asset References",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only).\n\nList all reference files for an asset"
        },
        {
          "name": "Add Asset Reference",
          "value": "api.projects.files.references.post",
          "action": "Add Asset Reference",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write).\n\nUpload a reference file for an asset"
        },
        {
          "name": "Get Asset Reference",
          "value": "api.projects.files.references.get",
          "action": "Get Asset Reference",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references/{{$parameter[\"referenceId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only).\n\nGet information about a specific asset reference"
        },
        {
          "name": "Delete Asset Reference",
          "value": "api.projects.files.references.delete",
          "action": "Delete Asset Reference",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references/{{$parameter[\"referenceId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write).\n\nDelete a reference file for an asset"
        },
        {
          "name": "List File Revisions",
          "value": "api.projects.files.revisions.getMany",
          "action": "List File Revisions",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/revisions",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Get File Revision",
          "value": "api.projects.files.revisions.get",
          "action": "Get File Revision",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/revisions/{{$parameter[\"revisionId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/branches",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.branches.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/branches",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.branches.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/branches/{branchId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.branches.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/branches/{branchId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.branches.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/branches/{branchId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.branches.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/directories",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.directories.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/directories",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.directories.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/directories/{directoryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.directories.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/directories/{directoryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.directories.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/directories/{directoryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.directories.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/files",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /projects/{projectId}/files/{fileId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/files/{fileId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/files/{fileId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/preview",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.preview.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.download.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/references",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.references.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/files/{fileId}/references",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.references.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/references/{referenceId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.references.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/files/{fileId}/references/{referenceId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.references.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/revisions",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.revisions.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/revisions/{revisionId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceFiles"
          ],
          "operation": [
            "api.projects.files.revisions.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.strings.getMany",
      "options": [
        {
          "name": "List Strings",
          "value": "api.projects.strings.getMany",
          "action": "List Strings",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates."
        },
        {
          "name": "Add String",
          "value": "api.projects.strings.post",
          "action": "Add String",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write)."
        },
        {
          "name": "Get String",
          "value": "api.projects.strings.get",
          "action": "Get String",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings/{{$parameter[\"stringId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read only)."
        },
        {
          "name": "Delete String",
          "value": "api.projects.strings.delete",
          "action": "Delete String",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings/{{$parameter[\"stringId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write)."
        },
        {
          "name": "Edit String",
          "value": "api.projects.strings.patch",
          "action": "Edit String",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/strings/{{$parameter[\"stringId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sourceStrings"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/strings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceStrings"
          ],
          "operation": [
            "api.projects.strings.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/strings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceStrings"
          ],
          "operation": [
            "api.projects.strings.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/strings/{stringId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceStrings"
          ],
          "operation": [
            "api.projects.strings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/strings/{stringId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceStrings"
          ],
          "operation": [
            "api.projects.strings.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.bundles.getMany",
      "options": [
        {
          "name": "List Bundles",
          "value": "api.projects.bundles.getMany",
          "action": "List Bundles",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Add Bundle",
          "value": "api.projects.bundles.post",
          "action": "Add Bundle",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Get Bundle",
          "value": "api.projects.bundles.get",
          "action": "Get Bundle",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Delete Bundle",
          "value": "api.projects.bundles.delete",
          "action": "Delete Bundle",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Edit Bundle",
          "value": "api.projects.bundles.patch",
          "action": "Edit Bundle",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Download Bundle",
          "value": "api.projects.bundles.exports.download.get",
          "action": "Download Bundle",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Export Bundle",
          "value": "api.projects.bundles.exports.post",
          "action": "Export Bundle",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/exports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Check Bundle Export Status",
          "value": "api.projects.bundles.exports.get",
          "action": "Check Bundle Export Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/exports/{{$parameter[\"exportId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Bundle List Files",
          "value": "api.projects.bundles.files.getMany",
          "action": "Bundle List Files",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/files",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "List Pre-Translations",
          "value": "api.projects.pre-translations.getMany",
          "action": "List Pre-Translations",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Apply Pre-Translation",
          "value": "api.projects.pre-translations.post",
          "action": "Apply Pre-Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Pre-Translation Status",
          "value": "api.projects.pre-translations.get",
          "action": "Pre-Translation Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations/{{$parameter[\"preTranslationId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Edit Pre-Translation",
          "value": "api.projects.pre-translations.patch",
          "action": "Edit Pre-Translation",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations/{{$parameter[\"preTranslationId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Pre-Translation Report",
          "value": "api.projects.pre-translations.report.getReport",
          "action": "Pre-Translation Report",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations/{{$parameter[\"preTranslationId\"]}}/report",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Validate text by QA Checks",
          "value": "api.projects.translations.validate-qa-checks.post",
          "action": "Validate text by QA Checks",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/validate-qa-checks",
              "method": "POST"
            }
          }
        },
        {
          "name": "Build Project Directory Translation",
          "value": "api.projects.translations.builds.directories.post",
          "action": "Build Project Directory Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/directories/{{$parameter[\"directoryId\"]}}",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Build Project File Translation",
          "value": "api.projects.translations.builds.files.post",
          "action": "Build Project File Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/files/{{$parameter[\"fileId\"]}}",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "List Project Builds",
          "value": "api.projects.translations.builds.getMany",
          "action": "List Project Builds",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Build Project Translation",
          "value": "api.projects.translations.builds.post",
          "action": "Build Project Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Download Project Translations",
          "value": "api.projects.translations.builds.download.download",
          "action": "Download Project Translations",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/{{$parameter[\"buildId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Check Project Build Status",
          "value": "api.projects.translations.builds.get",
          "action": "Check Project Build Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/{{$parameter[\"buildId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Cancel Build",
          "value": "api.projects.translations.builds.delete",
          "action": "Cancel Build",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/{{$parameter[\"buildId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Export Project Translation",
          "value": "api.projects.translations.exports.post",
          "action": "Export Project Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/exports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates."
        },
        {
          "name": "Import Translations",
          "value": "api.projects.translations.imports",
          "action": "Import Translations",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/imports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Import Translations Status",
          "value": "api.projects.translations.imports.get",
          "action": "Import Translations Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/imports/{{$parameter[\"importTranslationId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Import Translations Report",
          "value": "api.projects.translations.imports.report.get",
          "action": "Import Translations Report",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/imports/{{$parameter[\"importTranslationId\"]}}/report",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/bundles",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles/{bundleId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/bundles/{bundleId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/bundles/{bundleId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles/{bundleId}/exports/{exportId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.exports.download.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/bundles/{bundleId}/exports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.exports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles/{bundleId}/exports/{exportId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.exports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles/{bundleId}/files",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.bundles.files.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/pre-translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.pre-translations.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/pre-translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.pre-translations.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/pre-translations/{preTranslationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.pre-translations.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/pre-translations/{preTranslationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.pre-translations.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/pre-translations/{preTranslationId}/report",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.pre-translations.report.getReport"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/validate-qa-checks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.validate-qa-checks.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/builds/directories/{directoryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.directories.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/builds/files/{fileId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.files.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations/builds",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/builds",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations/builds/{buildId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.download.download"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations/builds/{buildId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/translations/builds/{buildId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.builds.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/exports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.exports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/imports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.imports"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations/imports/{importTranslationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.imports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations/imports/{importTranslationId}/report",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translations"
          ],
          "operation": [
            "api.projects.translations.imports.report.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.approvals.getMany",
      "options": [
        {
          "name": "List Translation Approvals",
          "value": "api.projects.approvals.getMany",
          "action": "List Translation Approvals",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ Either `translationId` OR `languageId` is required. `stringId`, `fileId`, `labelIds` and `excludeLabelIds` can be used only with `languageId` in the same request"
        },
        {
          "name": "Add Approval",
          "value": "api.projects.approvals.post",
          "action": "Add Approval",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Remove String/Asset Approvals",
          "value": "api.projects.approvals.deleteMany",
          "action": "Remove String/Asset Approvals",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write).\n\nRemove all approvals for a string or asset. Use the oneOf pattern:\n- **String type**: Use `stringId`\n- **Asset type**: Use `fileId`"
        },
        {
          "name": "Get Approval",
          "value": "api.projects.approvals.get",
          "action": "Get Approval",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals/{{$parameter[\"approvalId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Remove Approval",
          "value": "api.projects.approvals.delete",
          "action": "Remove Approval",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals/{{$parameter[\"approvalId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "List Language Translations",
          "value": "api.projects.languages.translations.getMany",
          "action": "List Language Translations",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/languages/{{$parameter[\"languageId\"]}}/translations",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates."
        },
        {
          "name": "List String/Asset Translations",
          "value": "api.projects.translations.getMany",
          "action": "List String/Asset Translations",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates."
        },
        {
          "name": "Add Translation",
          "value": "api.projects.translations.post",
          "action": "Add Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Delete String/Asset Translations",
          "value": "api.projects.translations.deleteMany",
          "action": "Delete String/Asset Translations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write).\n\nDelete translations for a string or an asset. Use the oneOf pattern:\n - **String type**: Use `stringId`\n - **Asset type**: Use `fileId`"
        },
        {
          "name": "Get Translation",
          "value": "api.projects.translations.get",
          "action": "Get Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/{{$parameter[\"translationId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Restore Translation",
          "value": "api.projects.translations.put",
          "action": "Restore Translation",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/{{$parameter[\"translationId\"]}}",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Delete Translation",
          "value": "api.projects.translations.delete",
          "action": "Delete Translation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/{{$parameter[\"translationId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Translation Alignment",
          "value": "api.projects.translations.alignment.post",
          "action": "Translation Alignment",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/alignment",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "List Translation Votes",
          "value": "api.projects.votes.getMany",
          "action": "List Translation Votes",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/votes",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ Either `translationId` OR `languageId` is required. `stringId`, `fileId`, `labelIds` and `excludeLabelIds` can be used only with `languageId` in the same request"
        },
        {
          "name": "Add Vote",
          "value": "api.projects.votes.post",
          "action": "Add Vote",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/votes",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Get Vote",
          "value": "api.projects.votes.get",
          "action": "Get Vote",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/votes/{{$parameter[\"voteId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Cancel Vote",
          "value": "api.projects.votes.delete",
          "action": "Cancel Vote",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/votes/{{$parameter[\"voteId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/approvals",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.approvals.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/approvals",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.approvals.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/approvals",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.approvals.deleteMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/approvals/{approvalId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.approvals.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/approvals/{approvalId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.approvals.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/languages/{languageId}/translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.languages.translations.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.deleteMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/translations/{translationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /projects/{projectId}/translations/{translationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/translations/{translationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/translations/alignment",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.translations.alignment.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/votes",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.votes.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/votes",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.votes.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/votes/{voteId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.votes.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/votes/{voteId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetTranslations"
          ],
          "operation": [
            "api.projects.votes.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.branches.languages.progress.getMany",
      "options": [
        {
          "name": "Get Branch Progress",
          "value": "api.projects.branches.languages.progress.getMany",
          "action": "Get Branch Progress",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}/languages/progress",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.progress` (Read only)."
        },
        {
          "name": "Get Directory Progress",
          "value": "api.projects.directories.languages.progress.getMany",
          "action": "Get Directory Progress",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}/languages/progress",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.progress` (Read only)."
        },
        {
          "name": "Get File Progress",
          "value": "api.projects.files.languages.progress.getMany",
          "action": "Get File Progress",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/languages/progress",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.progress` (Read only)."
        },
        {
          "name": "Get Language Progress",
          "value": "api.projects.languages.files.progress.getMany",
          "action": "Get Language Progress",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/languages/{{$parameter[\"languageId\"]}}/progress",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.progress` (Read only)."
        },
        {
          "name": "Get Project Progress",
          "value": "api.projects.languages.progress.getMany",
          "action": "Get Project Progress",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/languages/progress",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.progress` (Read only)."
        },
        {
          "name": "Revalidate QA Checks",
          "value": "api.projects.qa-checks.revalidate.post",
          "action": "Revalidate QA Checks",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks/revalidate",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.status.qa-check` (Read and Write).\n\nTriggers revalidation of all QA checks for the project"
        },
        {
          "name": "QA Checks Revalidation Status",
          "value": "api.projects.qa-checks.revalidate.get",
          "action": "QA Checks Revalidation Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks/revalidate/{{$parameter[\"revalidationId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.qa-check` (Read and Write).\n\nReturns the status of QA checks revalidation job"
        },
        {
          "name": "Cancel QA Checks Revalidation",
          "value": "api.projects.qa-checks.revalidate.delete",
          "action": "Cancel QA Checks Revalidation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks/revalidate/{{$parameter[\"revalidationId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.status.qa-check` (Read and Write).\n\nCancels the QA checks revalidation job"
        },
        {
          "name": "List QA Check Issues",
          "value": "api.projects.qa-checks.getMany",
          "action": "List QA Check Issues",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.status.qa-check` (Read only)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/branches/{branchId}/languages/progress",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.branches.languages.progress.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/directories/{directoryId}/languages/progress",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.directories.languages.progress.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/files/{fileId}/languages/progress",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.files.languages.progress.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/languages/{languageId}/progress",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.languages.files.progress.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/languages/progress",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.languages.progress.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/qa-checks/revalidate",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.qa-checks.revalidate.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/qa-checks/revalidate/{revalidationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.qa-checks.revalidate.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/qa-checks/revalidate/{revalidationId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.qa-checks.revalidate.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/qa-checks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationStatus"
          ],
          "operation": [
            "api.projects.qa-checks.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.distributions.getMany",
      "options": [
        {
          "name": "List Distributions",
          "value": "api.projects.distributions.getMany",
          "action": "List Distributions",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Add Distribution",
          "value": "api.projects.distributions.post",
          "action": "Add Distribution",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Get Distribution",
          "value": "api.projects.distributions.get",
          "action": "Get Distribution",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read only)."
        },
        {
          "name": "Delete Distribution",
          "value": "api.projects.distributions.delete",
          "action": "Delete Distribution",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Edit Distribution",
          "value": "api.projects.distributions.patch",
          "action": "Edit Distribution",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Get Distribution Release",
          "value": "api.projects.distributions.release.get",
          "action": "Get Distribution Release",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}/release",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        },
        {
          "name": "Release Distribution",
          "value": "api.projects.distributions.release.post",
          "action": "Release Distribution",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}/release",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.translation` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/distributions",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/distributions",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/distributions/{hash}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/distributions/{hash}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/distributions/{hash}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/distributions/{hash}/release",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.release.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/distributions/{hash}/release",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "distributions"
          ],
          "operation": [
            "api.projects.distributions.release.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.reports.archives.getMany",
      "options": [
        {
          "name": "List Report Archives",
          "value": "api.reports.archives.getMany",
          "action": "List Report Archives",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Get Report Archive",
          "value": "api.users.reports.archives.get",
          "action": "Get Report Archive",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Delete Report Archive",
          "value": "api.users.reports.archives.delete",
          "action": "Delete Report Archive",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.report` (Read and Write)."
        },
        {
          "name": "Export Report Archive",
          "value": "api.reports.archives.exports.post",
          "action": "Export Report Archive",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}/exports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Check Report Archive Export Status",
          "value": "api.users.reports.archives.exports.get",
          "action": "Check Report Archive Export Status",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}/exports/{{$parameter[\"exportId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Download Report Archive",
          "value": "api.users.reports.archives.exports.download.get",
          "action": "Download Report Archive",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Generate Report",
          "value": "api.projects.reports.post",
          "action": "Generate Report",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Check Report Generation Status",
          "value": "api.projects.reports.get",
          "action": "Check Report Generation Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/{{$parameter[\"reportId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Download Report",
          "value": "api.projects.reports.download.download",
          "action": "Download Report",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/{{$parameter[\"reportId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "List Report Settings Templates",
          "value": "api.projects.reports.settings-templates.getMany",
          "action": "List Report Settings Templates",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Add Report Settings Template",
          "value": "api.projects.reports.settings-templates.post",
          "action": "Add Report Settings Template",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.report` (Read and Write)."
        },
        {
          "name": "Get Report Settings Template",
          "value": "api.projects.reports.settings-templates.get",
          "action": "Get Report Settings Template",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.report` (Read only)."
        },
        {
          "name": "Delete Report Settings Template",
          "value": "api.projects.reports.settings-templates.delete",
          "action": "Delete Report Settings Template",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.report` (Read and Write)."
        },
        {
          "name": "Edit Report Settings Template",
          "value": "api.projects.reports.settings-templates.patch",
          "action": "Edit Report Settings Template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.report` (Read and Write)."
        },
        {
          "name": "List User Report Settings Templates",
          "value": "api.users.reports.settings-templates.getMany",
          "action": "List User Report Settings Templates",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `user` (Read only)."
        },
        {
          "name": "Add User Report Settings Template",
          "value": "api.users.reports.settings-templates.post",
          "action": "Add User Report Settings Template",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `user` (Read and Write)."
        },
        {
          "name": "Get User Report Settings Template",
          "value": "api.users.reports.settings-templates.get",
          "action": "Get User Report Settings Template",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `user` (Read only)."
        },
        {
          "name": "Delete User Report Settings Template",
          "value": "api.users.reports.settings-templates.delete",
          "action": "Delete User Report Settings Template",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `user` (Read and Write)."
        },
        {
          "name": "Edit User Report Settings Template",
          "value": "api.users.reports.settings-templates.patch",
          "action": "Edit User Report Settings Template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `user` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/reports/archives",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.reports.archives.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/reports/archives/{archiveId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.archives.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /users/{userId}/reports/archives/{archiveId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.archives.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/reports/archives/{archiveId}/exports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.reports.archives.exports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/reports/archives/{archiveId}/exports/{exportId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.archives.exports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/reports/archives/{archiveId}/exports/{exportId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.archives.exports.download.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/reports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/reports/{reportId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/reports/{reportId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.download.download"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/reports/settings-templates",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.settings-templates.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/reports/settings-templates",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.settings-templates.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/reports/settings-templates/{reportSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.settings-templates.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/reports/settings-templates/{reportSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.settings-templates.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/reports/settings-templates/{reportSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.projects.reports.settings-templates.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/reports/settings-templates",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.settings-templates.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/reports/settings-templates",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.settings-templates.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/reports/settings-templates/{reportSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.settings-templates.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /users/{userId}/reports/settings-templates/{reportSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.settings-templates.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /users/{userId}/reports/settings-templates/{reportSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "reports"
          ],
          "operation": [
            "api.users.reports.settings-templates.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.users.tasks.getMany",
      "options": [
        {
          "name": "List Tasks",
          "value": "api.users.tasks.getMany",
          "action": "List Tasks",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/tasks",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only).\n\nLists all of the user's project tasks."
        },
        {
          "name": "Export Project Task Strings",
          "value": "api.projects.tasks.exports.post",
          "action": "Export Project Task Strings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/exports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "List Project Task Settings Templates",
          "value": "api.projects.tasks.settings-templates.getMany",
          "action": "List Project Task Settings Templates",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "Add Project Task Settings Template",
          "value": "api.projects.tasks.settings-templates.post",
          "action": "Add Project Task Settings Template",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "Get Project Task Settings Template",
          "value": "api.projects.tasks.settings-templates.get",
          "action": "Get Project Task Settings Template",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates/{{$parameter[\"taskSettingsTemplateId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "Delete Project Task Settings Template",
          "value": "api.projects.tasks.settings-templates.delete",
          "action": "Delete Project Task Settings Template",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates/{{$parameter[\"taskSettingsTemplateId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "Edit Project Task Settings Template",
          "value": "api.projects.tasks.settings-templates.patch",
          "action": "Edit Project Task Settings Template",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates/{{$parameter[\"taskSettingsTemplateId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "List Project Tasks",
          "value": "api.projects.tasks.getMany",
          "action": "List Project Tasks",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "Add Project Task",
          "value": "api.projects.tasks.post",
          "action": "Add Project Task",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "Get Project Task",
          "value": "api.projects.tasks.get",
          "action": "Get Project Task",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "Delete Project Task",
          "value": "api.projects.tasks.delete",
          "action": "Delete Project Task",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "List Project Task Comments",
          "value": "api.projects.tasks.comments.getMany",
          "action": "List Project Task Comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "Add Project Task Comment",
          "value": "api.projects.tasks.comments.post",
          "action": "Add Project Task Comment",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "Get Project Task Comment",
          "value": "api.projects.tasks.comments.get",
          "action": "Get Project Task Comment",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments/{{$parameter[\"commentId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.task` (Read only)."
        },
        {
          "name": "Delete Project Task Comment",
          "value": "api.projects.tasks.comments.delete",
          "action": "Delete Project Task Comment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments/{{$parameter[\"commentId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "Edit Project Task Comment",
          "value": "api.projects.tasks.comments.patch",
          "action": "Edit Project Task Comment",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments/{{$parameter[\"commentId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "Edit Project Task",
          "value": "api.projects.tasks.patch",
          "action": "Edit Project Task",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.task` (Read and Write)."
        },
        {
          "name": "List User Tasks",
          "value": "api.user.tasks.getMany",
          "action": "List User Tasks",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/user/tasks",
              "method": "GET"
            }
          }
        },
        {
          "name": "Edit Task Archived Status",
          "value": "api.user.tasks.patch",
          "action": "Edit Task Archived Status",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/user/tasks/{{$parameter[\"taskId\"]}}?projectId={{$parameter[\"projectId\"]}}",
              "method": "PATCH"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/tasks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.users.tasks.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/tasks/{taskId}/exports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.exports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/tasks/settings-templates",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.settings-templates.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/tasks/settings-templates",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.settings-templates.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/tasks/settings-templates/{taskSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.settings-templates.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/tasks/settings-templates/{taskSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.settings-templates.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/tasks/settings-templates/{taskSettingsTemplateId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.settings-templates.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/tasks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/tasks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/tasks/{taskId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/tasks/{taskId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/tasks/{taskId}/comments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.comments.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/tasks/{taskId}/comments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.comments.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/tasks/{taskId}/comments/{commentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.comments.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/tasks/{taskId}/comments/{commentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.comments.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/tasks/{taskId}/comments/{commentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.comments.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /user/tasks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.user.tasks.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.comments.attachments.delete",
      "options": [
        {
          "name": "Delete Attachment from String/Asset Comment",
          "value": "api.projects.comments.attachments.delete",
          "action": "Delete Attachment from String/Asset Comment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}/attachments/{{$parameter[\"attachmentId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write)."
        },
        {
          "name": "List String/Asset Comments",
          "value": "api.projects.comments.getMany",
          "action": "List String/Asset Comments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/comments",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read only).\n\nList comments and issues for strings or assets. Use the oneOf pattern:\n- **String type**: Use `stringId`\n- **Asset type**: Use `fileId`\n- **All comments**: Omit both parameters to list all project comments"
        },
        {
          "name": "Add String/Asset Comment",
          "value": "api.projects.comments.post",
          "action": "Add String/Asset Comment",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/comments",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write).\n\nAdd a comment or issue to a string or asset. Use the oneOf pattern:\n- **String type**: Use `stringId`\n- **Asset type**: Use `fileId`"
        },
        {
          "name": "Get String/Asset Comment",
          "value": "api.projects.comments.get",
          "action": "Get String/Asset Comment",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read only)."
        },
        {
          "name": "Delete String/Asset Comment",
          "value": "api.projects.comments.delete",
          "action": "Delete String/Asset Comment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write)."
        },
        {
          "name": "Edit String/Asset Comment",
          "value": "api.projects.comments.patch",
          "action": "Edit String/Asset Comment",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.string` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/comments/{commentId}/attachments/{attachmentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ],
          "operation": [
            "api.projects.comments.attachments.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/comments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ],
          "operation": [
            "api.projects.comments.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/comments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ],
          "operation": [
            "api.projects.comments.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/comments/{commentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ],
          "operation": [
            "api.projects.comments.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/comments/{commentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ],
          "operation": [
            "api.projects.comments.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.tms.getMany",
      "options": [
        {
          "name": "List TMs",
          "value": "api.tms.getMany",
          "action": "List TMs",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/tms",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read only)."
        },
        {
          "name": "Add TM",
          "value": "api.tms.post",
          "action": "Add TM",
          "routing": {
            "request": {
              "url": "=/tms",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "Get TM",
          "value": "api.tms.get",
          "action": "Get TM",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read only)."
        },
        {
          "name": "Delete TM",
          "value": "api.tms.delete",
          "action": "Delete TM",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "Edit TM",
          "value": "api.tms.patch",
          "action": "Edit TM",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "List TM Segments",
          "value": "api.tms.segments.getMany",
          "action": "List TM Segments",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/segments",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read only).\n\nGet list of translation unit segments"
        },
        {
          "name": "Create TM Segment",
          "value": "api.tms.segments.post",
          "action": "Create TM Segment",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/segments",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write).\n\nCreate translation unit with given segments"
        },
        {
          "name": "Clear TM",
          "value": "api.tms.segments.clear",
          "action": "Clear TM",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/segments",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "Export TM",
          "value": "api.tms.exports.post",
          "action": "Export TM",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/exports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `tm` (Read only)."
        },
        {
          "name": "Check TM Export Status",
          "value": "api.tms.exports.get",
          "action": "Check TM Export Status",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/exports/{{$parameter[\"exportId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read only)."
        },
        {
          "name": "Download TM",
          "value": "api.tms.exports.download.download",
          "action": "Download TM",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read only)."
        },
        {
          "name": "Concordance search in TMs",
          "value": "api.projects.tms.concordance.post",
          "action": "Concordance search in TMs",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/tms/concordance",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "Import TM",
          "value": "api.tms.imports.post",
          "action": "Import TM",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/imports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "Check TM Import Status",
          "value": "api.tms.imports.get",
          "action": "Check TM Import Status",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/imports/{{$parameter[\"importId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write)."
        },
        {
          "name": "Get TM Segment",
          "value": "api.tms.segments.get",
          "action": "Get TM Segment",
          "routing": {
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/segments/{{$parameter[\"segmentId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `tm` (Read only).\n\nGet segments of translation unit"
        },
        {
          "name": "Delete TM Segment",
          "value": "api.tms.segments.delete",
          "action": "Delete TM Segment",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/segments/{{$parameter[\"segmentId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write).\n\nDelete all segments of translation unit"
        },
        {
          "name": "Edit TM Segment",
          "value": "api.tms.segments.patch",
          "action": "Edit TM Segment",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/tms/{{$parameter[\"tmId\"]}}/segments/{{$parameter[\"segmentId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `tm` (Read and Write).\n\nEdit segment of translation unit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tms",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms/{tmId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /tms/{tmId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /tms/{tmId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms/{tmId}/segments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.segments.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tms/{tmId}/segments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.segments.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /tms/{tmId}/segments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.segments.clear"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tms/{tmId}/exports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.exports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms/{tmId}/exports/{exportId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.exports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms/{tmId}/exports/{exportId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.exports.download.download"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/tms/concordance",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.projects.tms.concordance.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tms/{tmId}/imports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.imports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms/{tmId}/imports/{importId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.imports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tms/{tmId}/segments/{segmentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.segments.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /tms/{tmId}/segments/{segmentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.segments.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.glossaries.concepts.getMany",
      "options": [
        {
          "name": "List Concepts",
          "value": "api.glossaries.concepts.getMany",
          "action": "List Concepts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Get concept",
          "value": "api.glossaries.concepts.get",
          "action": "Get concept",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts/{{$parameter[\"conceptId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Update concept",
          "value": "api.glossaries.concepts.put",
          "action": "Update concept",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts/{{$parameter[\"conceptId\"]}}",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write).\n\n__Note:__ There is no separate method for concept creation. Concepts are automatically created when adding a term without specifying a `conceptId`."
        },
        {
          "name": "Delete Concept",
          "value": "api.glossaries.concepts.delete",
          "action": "Delete Concept",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts/{{$parameter[\"conceptId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "List Glossaries",
          "value": "api.glossaries.getMany",
          "action": "List Glossaries",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Add Glossary",
          "value": "api.glossaries.post",
          "action": "Add Glossary",
          "routing": {
            "request": {
              "url": "=/glossaries",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Get Glossary",
          "value": "api.glossaries.get",
          "action": "Get Glossary",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Delete Glossary",
          "value": "api.glossaries.delete",
          "action": "Delete Glossary",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Edit Glossary",
          "value": "api.glossaries.patch",
          "action": "Edit Glossary",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Export Glossary",
          "value": "api.glossaries.exports.post",
          "action": "Export Glossary",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/exports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Check Glossary Export Status",
          "value": "api.glossaries.exports.get",
          "action": "Check Glossary Export Status",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/exports/{{$parameter[\"exportId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Download Glossary",
          "value": "api.glossaries.exports.download.download",
          "action": "Download Glossary",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Import Glossary",
          "value": "api.glossaries.imports.post",
          "action": "Import Glossary",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/imports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Check Glossary Import Status",
          "value": "api.glossaries.imports.get",
          "action": "Check Glossary Import Status",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/imports/{{$parameter[\"importId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Concordance search in Glossaries",
          "value": "api.projects.glossaries.concordance.post",
          "action": "Concordance search in Glossaries",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/glossaries/concordance",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "List Terms",
          "value": "api.glossaries.terms.getMany",
          "action": "List Terms",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Add Term",
          "value": "api.glossaries.terms.post",
          "action": "Add Term",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write).\n\n__Note:__ If `conceptId` is not specified, a new concept will be automatically created for the term."
        },
        {
          "name": "Clear Glossary",
          "value": "api.glossaries.terms.deleteMany",
          "action": "Clear Glossary",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Get Term",
          "value": "api.glossaries.terms.get",
          "action": "Get Term",
          "routing": {
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms/{{$parameter[\"termId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `glossary` (Read only)."
        },
        {
          "name": "Delete Term",
          "value": "api.glossaries.terms.delete",
          "action": "Delete Term",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms/{{$parameter[\"termId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        },
        {
          "name": "Edit Term",
          "value": "api.glossaries.terms.patch",
          "action": "Edit Term",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms/{{$parameter[\"termId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `glossary` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/concepts",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.concepts.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/concepts/{conceptId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.concepts.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /glossaries/{glossaryId}/concepts/{conceptId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.concepts.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /glossaries/{glossaryId}/concepts/{conceptId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.concepts.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /glossaries",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /glossaries/{glossaryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /glossaries/{glossaryId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /glossaries/{glossaryId}/exports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.exports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/exports/{exportId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.exports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/exports/{exportId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.exports.download.download"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /glossaries/{glossaryId}/imports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.imports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/imports/{importId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.imports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/glossaries/concordance",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.projects.glossaries.concordance.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/terms",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.terms.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /glossaries/{glossaryId}/terms",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.terms.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /glossaries/{glossaryId}/terms",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.terms.deleteMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /glossaries/{glossaryId}/terms/{termId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.terms.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /glossaries/{glossaryId}/terms/{termId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.terms.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /glossaries/{glossaryId}/terms/{termId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "glossaries"
          ],
          "operation": [
            "api.glossaries.terms.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.style-guides.getMany",
      "options": [
        {
          "name": "List Style Guides",
          "value": "api.style-guides.getMany",
          "action": "List Style Guides",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/style-guides",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `style-guide` (Read only)."
        },
        {
          "name": "Create Style Guide",
          "value": "api.style-guides.post",
          "action": "Create Style Guide",
          "routing": {
            "request": {
              "url": "=/style-guides",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `style-guide` (Read and Write)."
        },
        {
          "name": "Get Style Guide",
          "value": "api.style-guides.get",
          "action": "Get Style Guide",
          "routing": {
            "request": {
              "url": "=/style-guides/{{$parameter[\"styleGuideId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `style-guide` (Read only)."
        },
        {
          "name": "Delete Style Guide",
          "value": "api.style-guides.delete",
          "action": "Delete Style Guide",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/style-guides/{{$parameter[\"styleGuideId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `style-guide` (Read and Write)."
        },
        {
          "name": "Edit Style Guide",
          "value": "api.style-guides.patch",
          "action": "Edit Style Guide",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/style-guides/{{$parameter[\"styleGuideId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `style-guide` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "styleGuides"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /style-guides",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "styleGuides"
          ],
          "operation": [
            "api.style-guides.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /style-guides",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "styleGuides"
          ],
          "operation": [
            "api.style-guides.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /style-guides/{styleGuideId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "styleGuides"
          ],
          "operation": [
            "api.style-guides.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /style-guides/{styleGuideId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "styleGuides"
          ],
          "operation": [
            "api.style-guides.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /style-guides/{styleGuideId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "styleGuides"
          ],
          "operation": [
            "api.style-guides.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.mts.getMany",
      "options": [
        {
          "name": "List MTs",
          "value": "api.mts.getMany",
          "action": "List MTs",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/mts",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `mt` (Read only)."
        },
        {
          "name": "Get MT",
          "value": "api.mts.get",
          "action": "Get MT",
          "routing": {
            "request": {
              "url": "=/mts/{{$parameter[\"mtId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `mt` (Read only)."
        },
        {
          "name": "Translate via MT",
          "value": "api.mts.translations.post",
          "action": "Translate via MT",
          "routing": {
            "request": {
              "url": "=/mts/{{$parameter[\"mtId\"]}}/translations",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `mt` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "machineTranslationEngines"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /mts",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "machineTranslationEngines"
          ],
          "operation": [
            "api.mts.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /mts/{mtId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "machineTranslationEngines"
          ],
          "operation": [
            "api.mts.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /mts/{mtId}/translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "machineTranslationEngines"
          ],
          "operation": [
            "api.mts.translations.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.screenshots.getMany",
      "options": [
        {
          "name": "List Screenshots",
          "value": "api.projects.screenshots.getMany",
          "action": "List Screenshots",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read only)."
        },
        {
          "name": "Add Screenshot",
          "value": "api.projects.screenshots.post",
          "action": "Add Screenshot",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Get Screenshot",
          "value": "api.projects.screenshots.get",
          "action": "Get Screenshot",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read only)."
        },
        {
          "name": "Update Screenshot",
          "value": "api.projects.screenshots.put",
          "action": "Update Screenshot",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Delete Screenshot",
          "value": "api.projects.screenshots.delete",
          "action": "Delete Screenshot",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Edit Screenshot",
          "value": "api.projects.screenshots.patch",
          "action": "Edit Screenshot",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "List Tags",
          "value": "api.projects.screenshots.tags.getMany",
          "action": "List Tags",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read only)."
        },
        {
          "name": "Replace Tags (Auto Tag)",
          "value": "api.projects.screenshots.tags.putMany",
          "action": "Replace Tags (Auto Tag)",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Add Tag",
          "value": "api.projects.screenshots.tags.post",
          "action": "Add Tag",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Clear Tags",
          "value": "api.projects.screenshots.tags.deleteMany",
          "action": "Clear Tags",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Get Tag",
          "value": "api.projects.screenshots.tags.get",
          "action": "Get Tag",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags/{{$parameter[\"tagId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read only)."
        },
        {
          "name": "Delete Tag",
          "value": "api.projects.screenshots.tags.delete",
          "action": "Delete Tag",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags/{{$parameter[\"tagId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        },
        {
          "name": "Edit Tag",
          "value": "api.projects.screenshots.tags.patch",
          "action": "Edit Tag",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags/{{$parameter[\"tagId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.screenshot` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/screenshots",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/screenshots",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/screenshots/{screenshotId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /projects/{projectId}/screenshots/{screenshotId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/screenshots/{screenshotId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/screenshots/{screenshotId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/screenshots/{screenshotId}/tags",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /projects/{projectId}/screenshots/{screenshotId}/tags",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.putMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/screenshots/{screenshotId}/tags",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/screenshots/{screenshotId}/tags",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.deleteMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/screenshots/{screenshotId}/tags/{tagId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/screenshots/{screenshotId}/tags/{tagId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/screenshots/{screenshotId}/tags/{tagId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "screenshots"
          ],
          "operation": [
            "api.projects.screenshots.tags.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.labels.strings.post",
      "options": [
        {
          "name": "Assign Label to Strings",
          "value": "api.projects.labels.strings.post",
          "action": "Assign Label to Strings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/strings",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Unassign Label from Strings",
          "value": "api.projects.labels.strings.deleteMany",
          "action": "Unassign Label from Strings",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/strings",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "List Labels",
          "value": "api.projects.labels.getMany",
          "action": "List Labels",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Add Label",
          "value": "api.projects.labels.post",
          "action": "Add Label",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Get Label",
          "value": "api.projects.labels.get",
          "action": "Get Label",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read only)."
        },
        {
          "name": "Delete Label",
          "value": "api.projects.labels.delete",
          "action": "Delete Label",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Edit Label",
          "value": "api.projects.labels.patch",
          "action": "Edit Label",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Assign Label to Screenshots",
          "value": "api.projects.labels.screenshots.post",
          "action": "Assign Label to Screenshots",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/screenshots",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        },
        {
          "name": "Unassign Label from Screenshots",
          "value": "api.projects.labels.screenshots.deleteMany",
          "action": "Unassign Label from Screenshots",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/screenshots",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.source.file` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/labels/{labelId}/strings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.strings.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/labels/{labelId}/strings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.strings.deleteMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/labels",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/labels",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/labels/{labelId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/labels/{labelId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/labels/{labelId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/labels/{labelId}/screenshots",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.screenshots.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/labels/{labelId}/screenshots",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "labels"
          ],
          "operation": [
            "api.projects.labels.screenshots.deleteMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.dictionaries.getMany",
      "options": [
        {
          "name": "List Dictionaries",
          "value": "api.projects.dictionaries.getMany",
          "action": "List Dictionaries",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/dictionaries",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.dictionary` (Read only)."
        },
        {
          "name": "Edit Dictionary",
          "value": "api.projects.dictionaries.patch",
          "action": "Edit Dictionary",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/dictionaries/{{$parameter[\"languageId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.dictionary` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dictionaries"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/dictionaries",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "dictionaries"
          ],
          "operation": [
            "api.projects.dictionaries.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.user.get",
      "options": [
        {
          "name": "Get Authenticated User",
          "value": "api.user.get",
          "action": "Get Authenticated User",
          "routing": {
            "request": {
              "url": "=/user",
              "method": "GET"
            }
          }
        },
        {
          "name": "Edit Authenticated User",
          "value": "api.user.patch",
          "action": "Edit Authenticated User",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/user",
              "method": "PATCH"
            }
          }
        },
        {
          "name": "List Project Members",
          "value": "api.projects.members.getMany",
          "action": "List Project Members",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/members",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.member` (Read only)."
        },
        {
          "name": "Get Member Info",
          "value": "api.projects.members.get",
          "action": "Get Member Info",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/members/{{$parameter[\"memberId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.member` (Read only)."
        },
        {
          "name": "Replace Project Member Permissions",
          "value": "api.projects.members.put",
          "action": "Replace Project Member Permissions",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/members/{{$parameter[\"memberId\"]}}",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `project.member` (Read and Write)."
        },
        {
          "name": "Delete Member From Project",
          "value": "api.projects.members.delete",
          "action": "Delete Member From Project",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/members/{{$parameter[\"memberId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.member` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /user",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.user.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/members",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.projects.members.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/members/{memberId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.projects.members.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /projects/{projectId}/members/{memberId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.projects.members.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/members/{memberId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.projects.members.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.notify.post",
      "options": [
        {
          "name": "Send Notification to Authenticated User",
          "value": "api.notify.post",
          "action": "Send Notification to Authenticated User",
          "routing": {
            "request": {
              "url": "=/notify",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `notification` (Read and Write)."
        },
        {
          "name": "Send Notification To Project Members",
          "value": "api.projects.notify.post",
          "action": "Send Notification To Project Members",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/notify",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "notifications"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /notify",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "notifications"
          ],
          "operation": [
            "api.notify.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/notify",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "notifications"
          ],
          "operation": [
            "api.projects.notify.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.ai.prompts.snippets.getMany",
      "options": [
        {
          "name": "List AI Snippets",
          "value": "api.ai.prompts.snippets.getMany",
          "action": "List AI Snippets",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read only)."
        },
        {
          "name": "Add AI Snippet",
          "value": "api.ai.prompts.snippets.post",
          "action": "Add AI Snippet",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "Get AI Snippet",
          "value": "api.ai.prompts.snippets.get",
          "action": "Get AI Snippet",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets/{{$parameter[\"aiSnippetId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read only)."
        },
        {
          "name": "Delete AI Snippet",
          "value": "api.ai.prompts.snippets.delete",
          "action": "Delete AI Snippet",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets/{{$parameter[\"aiSnippetId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "Edit AI Snippet",
          "value": "api.ai.prompts.snippets.patch",
          "action": "Edit AI Snippet",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets/{{$parameter[\"aiSnippetId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "AI File Translations",
          "value": "api.users.ai.file-translations.post",
          "action": "AI File Translations",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.translate` (Read and Write)."
        },
        {
          "name": "Get File Translations Status",
          "value": "api.users.ai.file-translations.get",
          "action": "Get File Translations Status",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.translate` (Read and Write)."
        },
        {
          "name": "Cancel File Translations",
          "value": "api.users.ai.file-translations.delete",
          "action": "Cancel File Translations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `ai.translate` (Read and Write)."
        },
        {
          "name": "Download Translated File",
          "value": "api.users.ai.file-translations.download",
          "action": "Download Translated File",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.translate` (Read and Write)."
        },
        {
          "name": "Download Translated File Strings",
          "value": "api.users.ai.file-translations.download-strings",
          "action": "Download Translated File Strings",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}/translations",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.translate` (Read and Write)."
        },
        {
          "name": "Clone AI Prompt",
          "value": "api.users.ai.prompts.clones.post",
          "action": "Clone AI Prompt",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}/clones",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "List AI Prompts",
          "value": "api.ai.prompts.getMany",
          "action": "List AI Prompts",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read only)."
        },
        {
          "name": "Add AI Prompt",
          "value": "api.users.ai.prompts.post",
          "action": "Add AI Prompt",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "Get AI Prompt",
          "value": "api.users.ai.prompts.get",
          "action": "Get AI Prompt",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read only)."
        },
        {
          "name": "Delete AI Prompt",
          "value": "api.users.ai.prompts.delete",
          "action": "Delete AI Prompt",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "Edit AI Prompt",
          "value": "api.users.ai.prompts.patch",
          "action": "Edit AI Prompt",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `ai.prompt` (Read and Write)."
        },
        {
          "name": "List AI Provider Models",
          "value": "api.ai.providers.models.crowdin.getMany",
          "action": "List AI Provider Models",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/models",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "List AI Providers",
          "value": "api.ai.providers.getMany",
          "action": "List AI Providers",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "Add AI Provider",
          "value": "api.users.ai.providers.post",
          "action": "Add AI Provider",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read and Write)."
        },
        {
          "name": "Get AI Provider",
          "value": "api.users.ai.providers.get",
          "action": "Get AI Provider",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "Delete AI Provider",
          "value": "api.users.ai.providers.delete",
          "action": "Delete AI Provider",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read and Write)."
        },
        {
          "name": "Edit AI Provider",
          "value": "api.users.ai.providers.patch",
          "action": "Edit AI Provider",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read and Write)."
        },
        {
          "name": "List AI Provider Models",
          "value": "api.ai.providers.models.getMany",
          "action": "List AI Provider Models",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}/models",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "List Supported AI Provider Models",
          "value": "api.ai.providers.supported-models.crowdin.getMany",
          "action": "List Supported AI Provider Models",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/supported-models",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "Generate AI Report",
          "value": "api.users.ai.reports.post",
          "action": "Generate AI Report",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/reports",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "Check AI Report Generation Status",
          "value": "api.users.ai.reports.get",
          "action": "Check AI Report Generation Status",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/reports/{{$parameter[\"aiReportId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "Download AI Report",
          "value": "api.users.ai.reports.download.download",
          "action": "Download AI Report",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/reports/{{$parameter[\"aiReportId\"]}}/download",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai.provider` (Read only)."
        },
        {
          "name": "Get AI Settings",
          "value": "api.users.ai.settings.get",
          "action": "Get AI Settings",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `ai` (Read only)."
        },
        {
          "name": "Edit AI Settings",
          "value": "api.users.ai.settings.patch",
          "action": "Edit AI Settings",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `ai` (Read and Write)."
        },
        {
          "name": "AI Translate Strings",
          "value": "api.users.ai.translate.strings.post",
          "action": "AI Translate Strings",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/ai/translate",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `ai.translate` (Read and Write)."
        },
        {
          "name": "Get Project AI Settings",
          "value": "api.projects.ai.settings.get",
          "action": "Get Project AI Settings",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/ai/settings",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project` (Read only)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/settings/snippets",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.prompts.snippets.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/settings/snippets",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.prompts.snippets.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/settings/snippets/{aiSnippetId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.prompts.snippets.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /users/{userId}/ai/settings/snippets/{aiSnippetId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.prompts.snippets.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /users/{userId}/ai/settings/snippets/{aiSnippetId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.prompts.snippets.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/file-translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.file-translations.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/file-translations/{jobIdentifier}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.file-translations.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /users/{userId}/ai/file-translations/{jobIdentifier}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.file-translations.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/file-translations/{jobIdentifier}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.file-translations.download"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/file-translations/{jobIdentifier}/translations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.file-translations.download-strings"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/prompts/{aiPromptId}/clones",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.prompts.clones.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/prompts",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.prompts.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/prompts",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.prompts.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/prompts/{aiPromptId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.prompts.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /users/{userId}/ai/prompts/{aiPromptId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.prompts.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /users/{userId}/ai/prompts/{aiPromptId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.prompts.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/providers/models",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.providers.models.crowdin.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/providers",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.providers.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/providers",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.providers.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/providers/{aiProviderId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.providers.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /users/{userId}/ai/providers/{aiProviderId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.providers.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /users/{userId}/ai/providers/{aiProviderId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.providers.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/providers/{aiProviderId}/models",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.providers.models.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/providers/supported-models",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.ai.providers.supported-models.crowdin.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/reports",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.reports.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/reports/{aiReportId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.reports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/reports/{aiReportId}/download",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.reports.download.download"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/ai/settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.settings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /users/{userId}/ai/translate",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.translate.strings.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/ai/settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.projects.ai.settings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.languages.getMany",
      "options": [
        {
          "name": "List Supported Languages",
          "value": "api.languages.getMany",
          "action": "List Supported Languages",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/languages",
              "method": "GET"
            }
          }
        },
        {
          "name": "Add Custom Language",
          "value": "api.languages.post",
          "action": "Add Custom Language",
          "routing": {
            "request": {
              "url": "=/languages",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `language` (Read and Write)."
        },
        {
          "name": "Get Language",
          "value": "api.languages.get",
          "action": "Get Language",
          "routing": {
            "request": {
              "url": "=/languages/{{$parameter[\"languageId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Delete Custom Language",
          "value": "api.languages.delete",
          "action": "Delete Custom Language",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/languages/{{$parameter[\"languageId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `language` (Read and Write)."
        },
        {
          "name": "Edit Custom Language",
          "value": "api.languages.patch",
          "action": "Edit Custom Language",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/languages/{{$parameter[\"languageId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `language` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "languages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /languages",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "languages"
          ],
          "operation": [
            "api.languages.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /languages",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "languages"
          ],
          "operation": [
            "api.languages.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /languages/{languageId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "languages"
          ],
          "operation": [
            "api.languages.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /languages/{languageId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "languages"
          ],
          "operation": [
            "api.languages.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /languages/{languageId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "languages"
          ],
          "operation": [
            "api.languages.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.webhooks.getMany",
      "options": [
        {
          "name": "List Webhooks",
          "value": "api.projects.webhooks.getMany",
          "action": "List Webhooks",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.webhook` (Read only)."
        },
        {
          "name": "Add Webhook",
          "value": "api.projects.webhooks.post",
          "action": "Add Webhook",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.webhook` (Read and Write)."
        },
        {
          "name": "Get Webhook",
          "value": "api.projects.webhooks.get",
          "action": "Get Webhook",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks/{{$parameter[\"webhookId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.webhook` (Read only)."
        },
        {
          "name": "Delete Webhook",
          "value": "api.projects.webhooks.delete",
          "action": "Delete Webhook",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks/{{$parameter[\"webhookId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `project.webhook` (Read and Write)."
        },
        {
          "name": "Edit Webhook",
          "value": "api.projects.webhooks.patch",
          "action": "Edit Webhook",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks/{{$parameter[\"webhookId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.webhook` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/webhooks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ],
          "operation": [
            "api.projects.webhooks.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/webhooks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ],
          "operation": [
            "api.projects.webhooks.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/webhooks/{webhookId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ],
          "operation": [
            "api.projects.webhooks.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/webhooks/{webhookId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ],
          "operation": [
            "api.projects.webhooks.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/webhooks/{webhookId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ],
          "operation": [
            "api.projects.webhooks.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.webhooks.getMany",
      "options": [
        {
          "name": "List Webhooks",
          "value": "api.webhooks.getMany",
          "action": "List Webhooks",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/webhooks",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `webhook` (Read only)."
        },
        {
          "name": "Add Webhook",
          "value": "api.webhooks.post",
          "action": "Add Webhook",
          "routing": {
            "request": {
              "url": "=/webhooks",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `webhook` (Read and Write)."
        },
        {
          "name": "Get Webhook",
          "value": "api.webhooks.get",
          "action": "Get Webhook",
          "routing": {
            "request": {
              "url": "=/webhooks/{{$parameter[\"organizationWebhookId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `webhook` (Read only)."
        },
        {
          "name": "Delete Webhook",
          "value": "api.webhooks.delete",
          "action": "Delete Webhook",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/webhooks/{{$parameter[\"organizationWebhookId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `webhook` (Read and Write)."
        },
        {
          "name": "Edit Webhook",
          "value": "api.webhooks.patch",
          "action": "Edit Webhook",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/webhooks/{{$parameter[\"organizationWebhookId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `webhook` (Read and Write)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organizationWebhooks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /webhooks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "organizationWebhooks"
          ],
          "operation": [
            "api.webhooks.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /webhooks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "organizationWebhooks"
          ],
          "operation": [
            "api.webhooks.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /webhooks/{organizationWebhookId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "organizationWebhooks"
          ],
          "operation": [
            "api.webhooks.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /webhooks/{organizationWebhookId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "organizationWebhooks"
          ],
          "operation": [
            "api.webhooks.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /webhooks/{organizationWebhookId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "organizationWebhooks"
          ],
          "operation": [
            "api.webhooks.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.applications.installations.getMany",
      "options": [
        {
          "name": "List Application Installations",
          "value": "api.applications.installations.getMany",
          "action": "List Application Installations",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/installations",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `application` (Read only)."
        },
        {
          "name": "Install Application",
          "value": "api.applications.installations.post",
          "action": "Install Application",
          "routing": {
            "request": {
              "url": "=/applications/installations",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write)."
        },
        {
          "name": "Get Application Installation",
          "value": "api.applications.installations.get",
          "action": "Get Application Installation",
          "routing": {
            "request": {
              "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `application` (Read only)."
        },
        {
          "name": "Delete Application Installation",
          "value": "api.applications.installations.delete",
          "action": "Delete Application Installation",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write)."
        },
        {
          "name": "Update Application Permissions",
          "value": "api.applications.installations.patch",
          "action": "Update Application Permissions",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write)."
        },
        {
          "name": "Get Application Installation Update",
          "value": "api.applications.installations.update.get",
          "action": "Get Application Installation Update",
          "routing": {
            "request": {
              "url": "=/applications/installations/{{$parameter[\"identifier\"]}}/update",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `application` (Read only).\n\nReturns the diff between the currently installed application and the latest cached manifest, tagged with `manifestHash` for optimistic-locking on apply."
        },
        {
          "name": "Apply Application Installation Update",
          "value": "api.applications.installations.update.post",
          "action": "Apply Application Installation Update",
          "routing": {
            "request": {
              "url": "=/applications/installations/{{$parameter[\"identifier\"]}}/update",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write).\n\nApply the latest cached manifest to an installed application. Requires `manifestHash` from a recent GET /update call as an optimistic-locking token. If the cached manifest has changed since, returns 409 with the fresh diff in the response body."
        },
        {
          "name": "Get Application Data",
          "value": "api.applications.api.get",
          "action": "Get Application Data",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `application` (Read only).\n\nRetrieves data from the specified application.\n\n__Note__: Query parameters are application-specific and vary depending on the application being accessed."
        },
        {
          "name": "Update or Restore Application Data",
          "value": "api.applications.api.put",
          "action": "Update or Restore Application Data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write).\n\nUpdates or restores data in the specified application.\n\n__Note__: Both the query parameters and request body are application-specific and vary depending on the application being accessed."
        },
        {
          "name": "Add Application Data",
          "value": "api.applications.api.post",
          "action": "Add Application Data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write).\n\nAdds new data to the specified application.\n\n__Note__: Both the query parameters and request body are application-specific and vary depending on the application being accessed."
        },
        {
          "name": "Delete Application Data",
          "value": "api.applications.api.delete",
          "action": "Delete Application Data",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
              "method": "DELETE"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write).\n\nDeletes data from the specified application.\n\n__Note__: Query parameters are application-specific and vary depending on the application being accessed."
        },
        {
          "name": "Edit Application Data",
          "value": "api.applications.api.patch",
          "action": "Edit Application Data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write).\n\nEdits existing data in the specified application.\n\n__Note__: Both the query parameters and request body are application-specific and vary depending on the application being accessed."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/installations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/installations",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/installations/{identifier}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /applications/installations/{identifier}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /applications/installations/{identifier}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/installations/{identifier}/update",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.update.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/installations/{identifier}/update",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.installations.update.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/{path}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.api.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /applications/{applicationIdentifier}/api/{path}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.api.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/{applicationIdentifier}/api/{path}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.api.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /applications/{applicationIdentifier}/api/{path}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.api.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /applications/{applicationIdentifier}/api/{path}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "applications"
          ],
          "operation": [
            "api.applications.api.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.applications.integrations.crowdin.files",
      "options": [
        {
          "name": "List Crowdin Files",
          "value": "api.applications.integrations.crowdin.files",
          "action": "List Crowdin Files",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/crowdin-files",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get File Progress",
          "value": "api.applications.integrations.file.progress",
          "action": "Get File Progress",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/file-progress",
              "method": "GET"
            }
          }
        },
        {
          "name": "List Integration Files",
          "value": "api.applications.integrations.integration.files",
          "action": "List Integration Files",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/integration-files",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update Crowdin Files",
          "value": "api.applications.integrations.crowdin.update",
          "action": "Update Crowdin Files",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/crowdin-update",
              "method": "POST"
            }
          }
        },
        {
          "name": "Update Integration Files",
          "value": "api.applications.integrations.integration.update",
          "action": "Update Integration Files",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/integration-update",
              "method": "POST"
            }
          }
        },
        {
          "name": "List Jobs",
          "value": "api.applications.integrations.job.list",
          "action": "List Jobs",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/all-jobs",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Job Info",
          "value": "api.applications.integrations.job.info",
          "action": "Get Job Info",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/job-info",
              "method": "GET"
            }
          }
        },
        {
          "name": "Cancel Job",
          "value": "api.applications.integrations.job.cancel",
          "action": "Cancel Job",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/jobs",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get Application Settings",
          "value": "api.applications.integrations.settings.get",
          "action": "Get Application Settings",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/settings",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update Application Settings",
          "value": "api.applications.integrations.settings.update",
          "action": "Update Application Settings",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/settings",
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Sync Settings",
          "value": "api.applications.integrations.sync.settings.get",
          "action": "Get Sync Settings",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/sync-settings",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update Sync Settings",
          "value": "api.applications.integrations.sync.settings.update",
          "action": "Update Sync Settings",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/sync-settings",
              "method": "POST"
            }
          }
        },
        {
          "name": "Integration Login Form Fields",
          "value": "api.applications.integrations.integration.fields",
          "action": "Integration Login Form Fields",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/login-fields",
              "method": "GET"
            }
          }
        },
        {
          "name": "Integration Login",
          "value": "api.applications.integrations.integration.login",
          "action": "Integration Login",
          "routing": {
            "request": {
              "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/login",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/crowdin-files",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.crowdin.files"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/file-progress",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.file.progress"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/integration-files",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.integration.files"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/{applicationIdentifier}/api/crowdin-update",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.crowdin.update"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/{applicationIdentifier}/api/integration-update",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.integration.update"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/all-jobs",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.job.list"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/job-info",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.job.info"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /applications/{applicationIdentifier}/api/jobs",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.job.cancel"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.settings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/{applicationIdentifier}/api/settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.settings.update"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/sync-settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.sync.settings.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/{applicationIdentifier}/api/sync-settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.sync.settings.update"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /applications/{applicationIdentifier}/api/login-fields",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.integration.fields"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /applications/{applicationIdentifier}/api/login",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ],
          "operation": [
            "api.applications.integrations.integration.login"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.projects.applications.modules.advisors.insights.put",
      "options": [
        {
          "name": "Create or Update Application Advisor Insight",
          "value": "api.projects.applications.modules.advisors.insights.put",
          "action": "Create or Update Application Advisor Insight",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/applications/{{$parameter[\"applicationIdentifier\"]}}/modules/{{$parameter[\"moduleKey\"]}}/advisors/insights",
              "method": "PUT"
            }
          },
          "description": "**Required scopes:** `project.advisor` (Read and Write).\n\nCalled by an installed application's `advisor-inspector` module to publish the result of its own check against a string. Subsequent calls for the same string overwrite the previous insight from this module."
        },
        {
          "name": "Create Advisor Check",
          "value": "api.projects.advisors.checks.post",
          "action": "Create Advisor Check",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/checks",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.advisor` (Read and Write).\n\nTriggers an asynchronous re-check of advisor inspectors for the project. At most one of `category` or `inspectors` may be present; if neither is supplied, every inspector is re-checked. Supplying `category` re-checks all inspectors in that category. Supplying `inspectors` re-checks only the listed inspectors; pass `options` on an entry to opt into AI validation for that inspector. Returns a job-progress descriptor — distinct from PATCH `/insights/{insightId}` (user-facing Insight mutation) and PUT `/applications/.../insight` (app-pushed upsert)."
        },
        {
          "name": "Get Advisor Check Status",
          "value": "api.projects.advisors.checks.get",
          "action": "Get Advisor Check Status",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/checks/{{$parameter[\"checkId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.advisor` (Read only).\n\nReturns the status of an advisor check job"
        },
        {
          "name": "List Advisor Insights",
          "value": "api.projects.advisors.insights.getMany",
          "action": "List Advisor Insights",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/insights",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `project.advisor` (Read only)."
        },
        {
          "name": "Edit Advisor Insight",
          "value": "api.projects.advisors.insights.patch",
          "action": "Edit Advisor Insight",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/insights/{{$parameter[\"insightId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `project.advisor` (Read and Write).\n\nUser-facing mutation of a single Advisor Insight row. Currently only `/isDismissed` is patchable (dismiss ↔ reactivate). For dispatching a fresh check, see POST `/advisors/checks`. For app-pushed insight updates, see PUT `/applications/.../insight`."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "advisor"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /projects/{projectId}/applications/{applicationIdentifier}/modules/{moduleKey}/advisors/insights",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "advisor"
          ],
          "operation": [
            "api.projects.applications.modules.advisors.insights.put"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/advisors/checks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "advisor"
          ],
          "operation": [
            "api.projects.advisors.checks.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/advisors/checks/{checkId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "advisor"
          ],
          "operation": [
            "api.projects.advisors.checks.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/advisors/insights",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "advisor"
          ],
          "operation": [
            "api.projects.advisors.insights.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "api.users.security-logs.getMany",
      "options": [
        {
          "name": "List User Security Logs",
          "value": "api.users.security-logs.getMany",
          "action": "List User Security Logs",
          "routing": {
            "send": {
              "paginate": "={{$parameter[\"returnAll\"]}}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "enabled": "={{!$parameter[\"returnAll\"]}}",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/security-logs",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `security-log` (Read only)."
        },
        {
          "name": "Get User Security Log",
          "value": "api.users.security-logs.get",
          "action": "Get User Security Log",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter[\"userId\"]}}/security-logs/{{$parameter[\"securityLogId\"]}}",
              "method": "GET"
            }
          },
          "description": "**Required scopes:** `security-log` (Read only)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "securityLogs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/security-logs",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "securityLogs"
          ],
          "operation": [
            "api.users.security-logs.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /users/{userId}/security-logs/{securityLogId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "securityLogs"
          ],
          "operation": [
            "api.users.security-logs.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/advisors/insights/{insightId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "advisor"
          ],
          "operation": [
            "api.projects.advisors.insights.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/dictionaries/{languageId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "dictionaries"
          ],
          "operation": [
            "api.projects.dictionaries.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/strings/{stringId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "sourceStrings"
          ],
          "operation": [
            "api.projects.strings.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /storages",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "storage"
          ],
          "operation": [
            "api.storages.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/comments/{commentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "stringAssetComments"
          ],
          "operation": [
            "api.projects.comments.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /user/tasks/{taskId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.user.tasks.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /tms/{tmId}/segments/{segmentId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "translationMemory"
          ],
          "operation": [
            "api.tms.segments.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /users/{userId}/ai/settings",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ],
          "operation": [
            "api.users.ai.settings.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /user",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.user.patch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/tasks/{taskId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ],
          "operation": [
            "api.projects.tasks.patch"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "List Projects",
      "value": "api.projects.getMany",
      "action": "List Projects",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Add Project",
      "value": "api.projects.post",
      "action": "Add Project",
      "routing": {
        "request": {
          "url": "=/projects",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Get Project",
      "value": "api.projects.get",
      "action": "Get Project",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Delete Project",
      "value": "api.projects.delete",
      "action": "Delete Project",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Edit Project",
      "value": "api.projects.patch",
      "action": "Edit Project",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Download Project File Format Settings Custom Segmentation",
      "value": "api.projects.file-format-settings.custom-segmentations.get",
      "action": "Download Project File Format Settings Custom Segmentation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}/custom-segmentations",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Reset Project File Format Settings Custom Segmentation",
      "value": "api.projects.file-format-settings.custom-segmentations.delete",
      "action": "Reset Project File Format Settings Custom Segmentation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}/custom-segmentations",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "List Project File Format Settings",
      "value": "api.projects.file-format-settings.getMany",
      "action": "List Project File Format Settings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Add Project File Format Settings",
      "value": "api.projects.file-format-settings.post",
      "action": "Add Project File Format Settings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Get Project File Format Settings",
      "value": "api.projects.file-format-settings.get",
      "action": "Get Project File Format Settings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Delete Project File Format Settings",
      "value": "api.projects.file-format-settings.delete",
      "action": "Delete Project File Format Settings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Edit Project File Format Settings",
      "value": "api.projects.file-format-settings.patch",
      "action": "Edit Project File Format Settings",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/file-format-settings/{{$parameter[\"fileFormatSettingsId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "List Project Strings Exporter Settings",
      "value": "api.projects.strings-exporter-settings.getMany",
      "action": "List Project Strings Exporter Settings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Add Project Strings Exporter Settings",
      "value": "api.projects.strings-exporter-settings.post",
      "action": "Add Project Strings Exporter Settings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Get Project Strings Exporter Settings",
      "value": "api.projects.strings-exporter-settings.get",
      "action": "Get Project Strings Exporter Settings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings/{{$parameter[\"systemStringsExporterSettingsId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read only).",
      "resource": "projects"
    },
    {
      "name": "Delete Project Strings Exporter Settings",
      "value": "api.projects.strings-exporter-settings.delete",
      "action": "Delete Project Strings Exporter Settings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings/{{$parameter[\"systemStringsExporterSettingsId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "Edit Project Strings Exporter Settings",
      "value": "api.projects.strings-exporter-settings.patch",
      "action": "Edit Project Strings Exporter Settings",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings-exporter-settings/{{$parameter[\"systemStringsExporterSettingsId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.settings` (Read and Write).",
      "resource": "projects"
    },
    {
      "name": "List Storages",
      "value": "api.storages.getMany",
      "action": "List Storages",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/storages",
          "method": "GET"
        }
      },
      "resource": "storage"
    },
    {
      "name": "Get Storage",
      "value": "api.storages.get",
      "action": "Get Storage",
      "routing": {
        "request": {
          "url": "=/storages/{{$parameter[\"storageId\"]}}",
          "method": "GET"
        }
      },
      "resource": "storage"
    },
    {
      "name": "Delete Storage",
      "value": "api.storages.delete",
      "action": "Delete Storage",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/storages/{{$parameter[\"storageId\"]}}",
          "method": "DELETE"
        }
      },
      "resource": "storage"
    },
    {
      "name": "Add Storage",
      "value": "api.storages.post",
      "action": "Add Storage",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/storages",
          "method": "POST",
          "headers": {
            "Crowdin-API-FileName": "={{$parameter[\"fileName\"]}}"
          }
        }
      },
      "resource": "storage"
    },
    {
      "name": "List Branches",
      "value": "api.projects.branches.getMany",
      "action": "List Branches",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/branches",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Add Branch",
      "value": "api.projects.branches.post",
      "action": "Add Branch",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/branches",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Get Branch",
      "value": "api.projects.branches.get",
      "action": "Get Branch",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Delete Branch",
      "value": "api.projects.branches.delete",
      "action": "Delete Branch",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Edit Branch",
      "value": "api.projects.branches.patch",
      "action": "Edit Branch",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "List Directories",
      "value": "api.projects.directories.getMany",
      "action": "List Directories",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/directories",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Add Directory",
      "value": "api.projects.directories.post",
      "action": "Add Directory",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/directories",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Get Directory",
      "value": "api.projects.directories.get",
      "action": "Get Directory",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Delete Directory",
      "value": "api.projects.directories.delete",
      "action": "Delete Directory",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Edit Directory",
      "value": "api.projects.directories.patch",
      "action": "Edit Directory",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "List Files",
      "value": "api.projects.files.getMany",
      "action": "List Files",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Add File",
      "value": "api.projects.files.post",
      "action": "Add File",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Get File",
      "value": "api.projects.files.get",
      "action": "Get File",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Update or Restore File",
      "value": "api.projects.files.put",
      "action": "Update or Restore File",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).\n\nUpdate your current file with a new one or restore it to one of the previous revisions",
      "resource": "sourceFiles"
    },
    {
      "name": "Delete File",
      "value": "api.projects.files.delete",
      "action": "Delete File",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Edit File",
      "value": "api.projects.files.patch",
      "action": "Edit File",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "sourceFiles"
    },
    {
      "name": "Download File Preview",
      "value": "api.projects.files.preview.get",
      "action": "Download File Preview",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/preview",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Download File",
      "value": "api.projects.files.download.get",
      "action": "Download File",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "List Asset References",
      "value": "api.projects.files.references.getMany",
      "action": "List Asset References",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).\n\nList all reference files for an asset",
      "resource": "sourceFiles"
    },
    {
      "name": "Add Asset Reference",
      "value": "api.projects.files.references.post",
      "action": "Add Asset Reference",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).\n\nUpload a reference file for an asset",
      "resource": "sourceFiles"
    },
    {
      "name": "Get Asset Reference",
      "value": "api.projects.files.references.get",
      "action": "Get Asset Reference",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references/{{$parameter[\"referenceId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).\n\nGet information about a specific asset reference",
      "resource": "sourceFiles"
    },
    {
      "name": "Delete Asset Reference",
      "value": "api.projects.files.references.delete",
      "action": "Delete Asset Reference",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/references/{{$parameter[\"referenceId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).\n\nDelete a reference file for an asset",
      "resource": "sourceFiles"
    },
    {
      "name": "List File Revisions",
      "value": "api.projects.files.revisions.getMany",
      "action": "List File Revisions",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/revisions",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "Get File Revision",
      "value": "api.projects.files.revisions.get",
      "action": "Get File Revision",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/revisions/{{$parameter[\"revisionId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "sourceFiles"
    },
    {
      "name": "List Strings",
      "value": "api.projects.strings.getMany",
      "action": "List Strings",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates.",
      "resource": "sourceStrings"
    },
    {
      "name": "Add String",
      "value": "api.projects.strings.post",
      "action": "Add String",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).",
      "resource": "sourceStrings"
    },
    {
      "name": "Get String",
      "value": "api.projects.strings.get",
      "action": "Get String",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings/{{$parameter[\"stringId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read only).",
      "resource": "sourceStrings"
    },
    {
      "name": "Delete String",
      "value": "api.projects.strings.delete",
      "action": "Delete String",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings/{{$parameter[\"stringId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).",
      "resource": "sourceStrings"
    },
    {
      "name": "Edit String",
      "value": "api.projects.strings.patch",
      "action": "Edit String",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/strings/{{$parameter[\"stringId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).",
      "resource": "sourceStrings"
    },
    {
      "name": "List Bundles",
      "value": "api.projects.bundles.getMany",
      "action": "List Bundles",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Add Bundle",
      "value": "api.projects.bundles.post",
      "action": "Add Bundle",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Get Bundle",
      "value": "api.projects.bundles.get",
      "action": "Get Bundle",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Delete Bundle",
      "value": "api.projects.bundles.delete",
      "action": "Delete Bundle",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Edit Bundle",
      "value": "api.projects.bundles.patch",
      "action": "Edit Bundle",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Download Bundle",
      "value": "api.projects.bundles.exports.download.get",
      "action": "Download Bundle",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Export Bundle",
      "value": "api.projects.bundles.exports.post",
      "action": "Export Bundle",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/exports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Check Bundle Export Status",
      "value": "api.projects.bundles.exports.get",
      "action": "Check Bundle Export Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/exports/{{$parameter[\"exportId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Bundle List Files",
      "value": "api.projects.bundles.files.getMany",
      "action": "Bundle List Files",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/bundles/{{$parameter[\"bundleId\"]}}/files",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "translations"
    },
    {
      "name": "List Pre-Translations",
      "value": "api.projects.pre-translations.getMany",
      "action": "List Pre-Translations",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Apply Pre-Translation",
      "value": "api.projects.pre-translations.post",
      "action": "Apply Pre-Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Pre-Translation Status",
      "value": "api.projects.pre-translations.get",
      "action": "Pre-Translation Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations/{{$parameter[\"preTranslationId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Edit Pre-Translation",
      "value": "api.projects.pre-translations.patch",
      "action": "Edit Pre-Translation",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations/{{$parameter[\"preTranslationId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Pre-Translation Report",
      "value": "api.projects.pre-translations.report.getReport",
      "action": "Pre-Translation Report",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/pre-translations/{{$parameter[\"preTranslationId\"]}}/report",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Validate text by QA Checks",
      "value": "api.projects.translations.validate-qa-checks.post",
      "action": "Validate text by QA Checks",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/validate-qa-checks",
          "method": "POST"
        }
      },
      "resource": "translations"
    },
    {
      "name": "Build Project Directory Translation",
      "value": "api.projects.translations.builds.directories.post",
      "action": "Build Project Directory Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/directories/{{$parameter[\"directoryId\"]}}",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Build Project File Translation",
      "value": "api.projects.translations.builds.files.post",
      "action": "Build Project File Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/files/{{$parameter[\"fileId\"]}}",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "translations"
    },
    {
      "name": "List Project Builds",
      "value": "api.projects.translations.builds.getMany",
      "action": "List Project Builds",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Build Project Translation",
      "value": "api.projects.translations.builds.post",
      "action": "Build Project Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Download Project Translations",
      "value": "api.projects.translations.builds.download.download",
      "action": "Download Project Translations",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/{{$parameter[\"buildId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Check Project Build Status",
      "value": "api.projects.translations.builds.get",
      "action": "Check Project Build Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/{{$parameter[\"buildId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Cancel Build",
      "value": "api.projects.translations.builds.delete",
      "action": "Cancel Build",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/builds/{{$parameter[\"buildId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Export Project Translation",
      "value": "api.projects.translations.exports.post",
      "action": "Export Project Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/exports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates.",
      "resource": "translations"
    },
    {
      "name": "Import Translations",
      "value": "api.projects.translations.imports",
      "action": "Import Translations",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/imports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "translations"
    },
    {
      "name": "Import Translations Status",
      "value": "api.projects.translations.imports.get",
      "action": "Import Translations Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/imports/{{$parameter[\"importTranslationId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "Import Translations Report",
      "value": "api.projects.translations.imports.report.get",
      "action": "Import Translations Report",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/imports/{{$parameter[\"importTranslationId\"]}}/report",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "translations"
    },
    {
      "name": "List Translation Approvals",
      "value": "api.projects.approvals.getMany",
      "action": "List Translation Approvals",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ Either `translationId` OR `languageId` is required. `stringId`, `fileId`, `labelIds` and `excludeLabelIds` can be used only with `languageId` in the same request",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Add Approval",
      "value": "api.projects.approvals.post",
      "action": "Add Approval",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Remove String/Asset Approvals",
      "value": "api.projects.approvals.deleteMany",
      "action": "Remove String/Asset Approvals",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).\n\nRemove all approvals for a string or asset. Use the oneOf pattern:\n- **String type**: Use `stringId`\n- **Asset type**: Use `fileId`",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Get Approval",
      "value": "api.projects.approvals.get",
      "action": "Get Approval",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals/{{$parameter[\"approvalId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Remove Approval",
      "value": "api.projects.approvals.delete",
      "action": "Remove Approval",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/approvals/{{$parameter[\"approvalId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "List Language Translations",
      "value": "api.projects.languages.translations.getMany",
      "action": "List Language Translations",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/languages/{{$parameter[\"languageId\"]}}/translations",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates.",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "List String/Asset Translations",
      "value": "api.projects.translations.getMany",
      "action": "List String/Asset Translations",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery directly to user devices, please use [OTA](https://support.crowdin.com/content-delivery/). Direct API usage will exceed established rate limits, which suspends further content updates.",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Add Translation",
      "value": "api.projects.translations.post",
      "action": "Add Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Delete String/Asset Translations",
      "value": "api.projects.translations.deleteMany",
      "action": "Delete String/Asset Translations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).\n\nDelete translations for a string or an asset. Use the oneOf pattern:\n - **String type**: Use `stringId`\n - **Asset type**: Use `fileId`",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Get Translation",
      "value": "api.projects.translations.get",
      "action": "Get Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/{{$parameter[\"translationId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Restore Translation",
      "value": "api.projects.translations.put",
      "action": "Restore Translation",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/{{$parameter[\"translationId\"]}}",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Delete Translation",
      "value": "api.projects.translations.delete",
      "action": "Delete Translation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/{{$parameter[\"translationId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Translation Alignment",
      "value": "api.projects.translations.alignment.post",
      "action": "Translation Alignment",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/translations/alignment",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "List Translation Votes",
      "value": "api.projects.votes.getMany",
      "action": "List Translation Votes",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/votes",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).\n\n__Note:__ Either `translationId` OR `languageId` is required. `stringId`, `fileId`, `labelIds` and `excludeLabelIds` can be used only with `languageId` in the same request",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Add Vote",
      "value": "api.projects.votes.post",
      "action": "Add Vote",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/votes",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Get Vote",
      "value": "api.projects.votes.get",
      "action": "Get Vote",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/votes/{{$parameter[\"voteId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Cancel Vote",
      "value": "api.projects.votes.delete",
      "action": "Cancel Vote",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/votes/{{$parameter[\"voteId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "stringAssetTranslations"
    },
    {
      "name": "Get Branch Progress",
      "value": "api.projects.branches.languages.progress.getMany",
      "action": "Get Branch Progress",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/branches/{{$parameter[\"branchId\"]}}/languages/progress",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.progress` (Read only).",
      "resource": "translationStatus"
    },
    {
      "name": "Get Directory Progress",
      "value": "api.projects.directories.languages.progress.getMany",
      "action": "Get Directory Progress",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/directories/{{$parameter[\"directoryId\"]}}/languages/progress",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.progress` (Read only).",
      "resource": "translationStatus"
    },
    {
      "name": "Get File Progress",
      "value": "api.projects.files.languages.progress.getMany",
      "action": "Get File Progress",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/files/{{$parameter[\"fileId\"]}}/languages/progress",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.progress` (Read only).",
      "resource": "translationStatus"
    },
    {
      "name": "Get Language Progress",
      "value": "api.projects.languages.files.progress.getMany",
      "action": "Get Language Progress",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/languages/{{$parameter[\"languageId\"]}}/progress",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.progress` (Read only).",
      "resource": "translationStatus"
    },
    {
      "name": "Get Project Progress",
      "value": "api.projects.languages.progress.getMany",
      "action": "Get Project Progress",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/languages/progress",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.progress` (Read only).",
      "resource": "translationStatus"
    },
    {
      "name": "Revalidate QA Checks",
      "value": "api.projects.qa-checks.revalidate.post",
      "action": "Revalidate QA Checks",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks/revalidate",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.status.qa-check` (Read and Write).\n\nTriggers revalidation of all QA checks for the project",
      "resource": "translationStatus"
    },
    {
      "name": "QA Checks Revalidation Status",
      "value": "api.projects.qa-checks.revalidate.get",
      "action": "QA Checks Revalidation Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks/revalidate/{{$parameter[\"revalidationId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.qa-check` (Read and Write).\n\nReturns the status of QA checks revalidation job",
      "resource": "translationStatus"
    },
    {
      "name": "Cancel QA Checks Revalidation",
      "value": "api.projects.qa-checks.revalidate.delete",
      "action": "Cancel QA Checks Revalidation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks/revalidate/{{$parameter[\"revalidationId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.status.qa-check` (Read and Write).\n\nCancels the QA checks revalidation job",
      "resource": "translationStatus"
    },
    {
      "name": "List QA Check Issues",
      "value": "api.projects.qa-checks.getMany",
      "action": "List QA Check Issues",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/qa-checks",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.status.qa-check` (Read only).",
      "resource": "translationStatus"
    },
    {
      "name": "List Distributions",
      "value": "api.projects.distributions.getMany",
      "action": "List Distributions",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "distributions"
    },
    {
      "name": "Add Distribution",
      "value": "api.projects.distributions.post",
      "action": "Add Distribution",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "distributions"
    },
    {
      "name": "Get Distribution",
      "value": "api.projects.distributions.get",
      "action": "Get Distribution",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read only).",
      "resource": "distributions"
    },
    {
      "name": "Delete Distribution",
      "value": "api.projects.distributions.delete",
      "action": "Delete Distribution",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "distributions"
    },
    {
      "name": "Edit Distribution",
      "value": "api.projects.distributions.patch",
      "action": "Edit Distribution",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "distributions"
    },
    {
      "name": "Get Distribution Release",
      "value": "api.projects.distributions.release.get",
      "action": "Get Distribution Release",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}/release",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "distributions"
    },
    {
      "name": "Release Distribution",
      "value": "api.projects.distributions.release.post",
      "action": "Release Distribution",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/distributions/{{$parameter[\"hash\"]}}/release",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.translation` (Read and Write).",
      "resource": "distributions"
    },
    {
      "name": "List Report Archives",
      "value": "api.reports.archives.getMany",
      "action": "List Report Archives",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Get Report Archive",
      "value": "api.users.reports.archives.get",
      "action": "Get Report Archive",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Delete Report Archive",
      "value": "api.users.reports.archives.delete",
      "action": "Delete Report Archive",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.report` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "Export Report Archive",
      "value": "api.reports.archives.exports.post",
      "action": "Export Report Archive",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}/exports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Check Report Archive Export Status",
      "value": "api.users.reports.archives.exports.get",
      "action": "Check Report Archive Export Status",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}/exports/{{$parameter[\"exportId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Download Report Archive",
      "value": "api.users.reports.archives.exports.download.get",
      "action": "Download Report Archive",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/archives/{{$parameter[\"archiveId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Generate Report",
      "value": "api.projects.reports.post",
      "action": "Generate Report",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Check Report Generation Status",
      "value": "api.projects.reports.get",
      "action": "Check Report Generation Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/{{$parameter[\"reportId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Download Report",
      "value": "api.projects.reports.download.download",
      "action": "Download Report",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/{{$parameter[\"reportId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "List Report Settings Templates",
      "value": "api.projects.reports.settings-templates.getMany",
      "action": "List Report Settings Templates",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Add Report Settings Template",
      "value": "api.projects.reports.settings-templates.post",
      "action": "Add Report Settings Template",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.report` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "Get Report Settings Template",
      "value": "api.projects.reports.settings-templates.get",
      "action": "Get Report Settings Template",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.report` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Delete Report Settings Template",
      "value": "api.projects.reports.settings-templates.delete",
      "action": "Delete Report Settings Template",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.report` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "Edit Report Settings Template",
      "value": "api.projects.reports.settings-templates.patch",
      "action": "Edit Report Settings Template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.report` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "List User Report Settings Templates",
      "value": "api.users.reports.settings-templates.getMany",
      "action": "List User Report Settings Templates",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `user` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Add User Report Settings Template",
      "value": "api.users.reports.settings-templates.post",
      "action": "Add User Report Settings Template",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `user` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "Get User Report Settings Template",
      "value": "api.users.reports.settings-templates.get",
      "action": "Get User Report Settings Template",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `user` (Read only).",
      "resource": "reports"
    },
    {
      "name": "Delete User Report Settings Template",
      "value": "api.users.reports.settings-templates.delete",
      "action": "Delete User Report Settings Template",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `user` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "Edit User Report Settings Template",
      "value": "api.users.reports.settings-templates.patch",
      "action": "Edit User Report Settings Template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/reports/settings-templates/{{$parameter[\"reportSettingsTemplateId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `user` (Read and Write).",
      "resource": "reports"
    },
    {
      "name": "List Tasks",
      "value": "api.users.tasks.getMany",
      "action": "List Tasks",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/tasks",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).\n\nLists all of the user's project tasks.",
      "resource": "tasks"
    },
    {
      "name": "Export Project Task Strings",
      "value": "api.projects.tasks.exports.post",
      "action": "Export Project Task Strings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/exports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "List Project Task Settings Templates",
      "value": "api.projects.tasks.settings-templates.getMany",
      "action": "List Project Task Settings Templates",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "Add Project Task Settings Template",
      "value": "api.projects.tasks.settings-templates.post",
      "action": "Add Project Task Settings Template",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "Get Project Task Settings Template",
      "value": "api.projects.tasks.settings-templates.get",
      "action": "Get Project Task Settings Template",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates/{{$parameter[\"taskSettingsTemplateId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "Delete Project Task Settings Template",
      "value": "api.projects.tasks.settings-templates.delete",
      "action": "Delete Project Task Settings Template",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates/{{$parameter[\"taskSettingsTemplateId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "Edit Project Task Settings Template",
      "value": "api.projects.tasks.settings-templates.patch",
      "action": "Edit Project Task Settings Template",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/settings-templates/{{$parameter[\"taskSettingsTemplateId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "List Project Tasks",
      "value": "api.projects.tasks.getMany",
      "action": "List Project Tasks",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "Add Project Task",
      "value": "api.projects.tasks.post",
      "action": "Add Project Task",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "Get Project Task",
      "value": "api.projects.tasks.get",
      "action": "Get Project Task",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "Delete Project Task",
      "value": "api.projects.tasks.delete",
      "action": "Delete Project Task",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "List Project Task Comments",
      "value": "api.projects.tasks.comments.getMany",
      "action": "List Project Task Comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "Add Project Task Comment",
      "value": "api.projects.tasks.comments.post",
      "action": "Add Project Task Comment",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "Get Project Task Comment",
      "value": "api.projects.tasks.comments.get",
      "action": "Get Project Task Comment",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments/{{$parameter[\"commentId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.task` (Read only).",
      "resource": "tasks"
    },
    {
      "name": "Delete Project Task Comment",
      "value": "api.projects.tasks.comments.delete",
      "action": "Delete Project Task Comment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments/{{$parameter[\"commentId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "Edit Project Task Comment",
      "value": "api.projects.tasks.comments.patch",
      "action": "Edit Project Task Comment",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}/comments/{{$parameter[\"commentId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "Edit Project Task",
      "value": "api.projects.tasks.patch",
      "action": "Edit Project Task",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tasks/{{$parameter[\"taskId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.task` (Read and Write).",
      "resource": "tasks"
    },
    {
      "name": "List User Tasks",
      "value": "api.user.tasks.getMany",
      "action": "List User Tasks",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/user/tasks",
          "method": "GET"
        }
      },
      "resource": "tasks"
    },
    {
      "name": "Edit Task Archived Status",
      "value": "api.user.tasks.patch",
      "action": "Edit Task Archived Status",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/user/tasks/{{$parameter[\"taskId\"]}}?projectId={{$parameter[\"projectId\"]}}",
          "method": "PATCH"
        }
      },
      "resource": "tasks"
    },
    {
      "name": "Delete Attachment from String/Asset Comment",
      "value": "api.projects.comments.attachments.delete",
      "action": "Delete Attachment from String/Asset Comment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}/attachments/{{$parameter[\"attachmentId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).",
      "resource": "stringAssetComments"
    },
    {
      "name": "List String/Asset Comments",
      "value": "api.projects.comments.getMany",
      "action": "List String/Asset Comments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/comments",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read only).\n\nList comments and issues for strings or assets. Use the oneOf pattern:\n- **String type**: Use `stringId`\n- **Asset type**: Use `fileId`\n- **All comments**: Omit both parameters to list all project comments",
      "resource": "stringAssetComments"
    },
    {
      "name": "Add String/Asset Comment",
      "value": "api.projects.comments.post",
      "action": "Add String/Asset Comment",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/comments",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).\n\nAdd a comment or issue to a string or asset. Use the oneOf pattern:\n- **String type**: Use `stringId`\n- **Asset type**: Use `fileId`",
      "resource": "stringAssetComments"
    },
    {
      "name": "Get String/Asset Comment",
      "value": "api.projects.comments.get",
      "action": "Get String/Asset Comment",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read only).",
      "resource": "stringAssetComments"
    },
    {
      "name": "Delete String/Asset Comment",
      "value": "api.projects.comments.delete",
      "action": "Delete String/Asset Comment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).",
      "resource": "stringAssetComments"
    },
    {
      "name": "Edit String/Asset Comment",
      "value": "api.projects.comments.patch",
      "action": "Edit String/Asset Comment",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/comments/{{$parameter[\"commentId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.string` (Read and Write).",
      "resource": "stringAssetComments"
    },
    {
      "name": "List TMs",
      "value": "api.tms.getMany",
      "action": "List TMs",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/tms",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).",
      "resource": "translationMemory"
    },
    {
      "name": "Add TM",
      "value": "api.tms.post",
      "action": "Add TM",
      "routing": {
        "request": {
          "url": "=/tms",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "Get TM",
      "value": "api.tms.get",
      "action": "Get TM",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).",
      "resource": "translationMemory"
    },
    {
      "name": "Delete TM",
      "value": "api.tms.delete",
      "action": "Delete TM",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "Edit TM",
      "value": "api.tms.patch",
      "action": "Edit TM",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "List TM Segments",
      "value": "api.tms.segments.getMany",
      "action": "List TM Segments",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/segments",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).\n\nGet list of translation unit segments",
      "resource": "translationMemory"
    },
    {
      "name": "Create TM Segment",
      "value": "api.tms.segments.post",
      "action": "Create TM Segment",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/segments",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).\n\nCreate translation unit with given segments",
      "resource": "translationMemory"
    },
    {
      "name": "Clear TM",
      "value": "api.tms.segments.clear",
      "action": "Clear TM",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/segments",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "Export TM",
      "value": "api.tms.exports.post",
      "action": "Export TM",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/exports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).",
      "resource": "translationMemory"
    },
    {
      "name": "Check TM Export Status",
      "value": "api.tms.exports.get",
      "action": "Check TM Export Status",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/exports/{{$parameter[\"exportId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).",
      "resource": "translationMemory"
    },
    {
      "name": "Download TM",
      "value": "api.tms.exports.download.download",
      "action": "Download TM",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).",
      "resource": "translationMemory"
    },
    {
      "name": "Concordance search in TMs",
      "value": "api.projects.tms.concordance.post",
      "action": "Concordance search in TMs",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/tms/concordance",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "Import TM",
      "value": "api.tms.imports.post",
      "action": "Import TM",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/imports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "Check TM Import Status",
      "value": "api.tms.imports.get",
      "action": "Check TM Import Status",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/imports/{{$parameter[\"importId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).",
      "resource": "translationMemory"
    },
    {
      "name": "Get TM Segment",
      "value": "api.tms.segments.get",
      "action": "Get TM Segment",
      "routing": {
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/segments/{{$parameter[\"segmentId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `tm` (Read only).\n\nGet segments of translation unit",
      "resource": "translationMemory"
    },
    {
      "name": "Delete TM Segment",
      "value": "api.tms.segments.delete",
      "action": "Delete TM Segment",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/segments/{{$parameter[\"segmentId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).\n\nDelete all segments of translation unit",
      "resource": "translationMemory"
    },
    {
      "name": "Edit TM Segment",
      "value": "api.tms.segments.patch",
      "action": "Edit TM Segment",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/tms/{{$parameter[\"tmId\"]}}/segments/{{$parameter[\"segmentId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `tm` (Read and Write).\n\nEdit segment of translation unit",
      "resource": "translationMemory"
    },
    {
      "name": "List Concepts",
      "value": "api.glossaries.concepts.getMany",
      "action": "List Concepts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Get concept",
      "value": "api.glossaries.concepts.get",
      "action": "Get concept",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts/{{$parameter[\"conceptId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Update concept",
      "value": "api.glossaries.concepts.put",
      "action": "Update concept",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts/{{$parameter[\"conceptId\"]}}",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).\n\n__Note:__ There is no separate method for concept creation. Concepts are automatically created when adding a term without specifying a `conceptId`.",
      "resource": "glossaries"
    },
    {
      "name": "Delete Concept",
      "value": "api.glossaries.concepts.delete",
      "action": "Delete Concept",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/concepts/{{$parameter[\"conceptId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "List Glossaries",
      "value": "api.glossaries.getMany",
      "action": "List Glossaries",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Add Glossary",
      "value": "api.glossaries.post",
      "action": "Add Glossary",
      "routing": {
        "request": {
          "url": "=/glossaries",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Get Glossary",
      "value": "api.glossaries.get",
      "action": "Get Glossary",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Delete Glossary",
      "value": "api.glossaries.delete",
      "action": "Delete Glossary",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Edit Glossary",
      "value": "api.glossaries.patch",
      "action": "Edit Glossary",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Export Glossary",
      "value": "api.glossaries.exports.post",
      "action": "Export Glossary",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/exports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Check Glossary Export Status",
      "value": "api.glossaries.exports.get",
      "action": "Check Glossary Export Status",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/exports/{{$parameter[\"exportId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Download Glossary",
      "value": "api.glossaries.exports.download.download",
      "action": "Download Glossary",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/exports/{{$parameter[\"exportId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Import Glossary",
      "value": "api.glossaries.imports.post",
      "action": "Import Glossary",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/imports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Check Glossary Import Status",
      "value": "api.glossaries.imports.get",
      "action": "Check Glossary Import Status",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/imports/{{$parameter[\"importId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Concordance search in Glossaries",
      "value": "api.projects.glossaries.concordance.post",
      "action": "Concordance search in Glossaries",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/glossaries/concordance",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "List Terms",
      "value": "api.glossaries.terms.getMany",
      "action": "List Terms",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Add Term",
      "value": "api.glossaries.terms.post",
      "action": "Add Term",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).\n\n__Note:__ If `conceptId` is not specified, a new concept will be automatically created for the term.",
      "resource": "glossaries"
    },
    {
      "name": "Clear Glossary",
      "value": "api.glossaries.terms.deleteMany",
      "action": "Clear Glossary",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Get Term",
      "value": "api.glossaries.terms.get",
      "action": "Get Term",
      "routing": {
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms/{{$parameter[\"termId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `glossary` (Read only).",
      "resource": "glossaries"
    },
    {
      "name": "Delete Term",
      "value": "api.glossaries.terms.delete",
      "action": "Delete Term",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms/{{$parameter[\"termId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "Edit Term",
      "value": "api.glossaries.terms.patch",
      "action": "Edit Term",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/glossaries/{{$parameter[\"glossaryId\"]}}/terms/{{$parameter[\"termId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `glossary` (Read and Write).",
      "resource": "glossaries"
    },
    {
      "name": "List Style Guides",
      "value": "api.style-guides.getMany",
      "action": "List Style Guides",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/style-guides",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `style-guide` (Read only).",
      "resource": "styleGuides"
    },
    {
      "name": "Create Style Guide",
      "value": "api.style-guides.post",
      "action": "Create Style Guide",
      "routing": {
        "request": {
          "url": "=/style-guides",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `style-guide` (Read and Write).",
      "resource": "styleGuides"
    },
    {
      "name": "Get Style Guide",
      "value": "api.style-guides.get",
      "action": "Get Style Guide",
      "routing": {
        "request": {
          "url": "=/style-guides/{{$parameter[\"styleGuideId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `style-guide` (Read only).",
      "resource": "styleGuides"
    },
    {
      "name": "Delete Style Guide",
      "value": "api.style-guides.delete",
      "action": "Delete Style Guide",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/style-guides/{{$parameter[\"styleGuideId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `style-guide` (Read and Write).",
      "resource": "styleGuides"
    },
    {
      "name": "Edit Style Guide",
      "value": "api.style-guides.patch",
      "action": "Edit Style Guide",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/style-guides/{{$parameter[\"styleGuideId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `style-guide` (Read and Write).",
      "resource": "styleGuides"
    },
    {
      "name": "List MTs",
      "value": "api.mts.getMany",
      "action": "List MTs",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/mts",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `mt` (Read only).",
      "resource": "machineTranslationEngines"
    },
    {
      "name": "Get MT",
      "value": "api.mts.get",
      "action": "Get MT",
      "routing": {
        "request": {
          "url": "=/mts/{{$parameter[\"mtId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `mt` (Read only).",
      "resource": "machineTranslationEngines"
    },
    {
      "name": "Translate via MT",
      "value": "api.mts.translations.post",
      "action": "Translate via MT",
      "routing": {
        "request": {
          "url": "=/mts/{{$parameter[\"mtId\"]}}/translations",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `mt` (Read and Write).",
      "resource": "machineTranslationEngines"
    },
    {
      "name": "List Screenshots",
      "value": "api.projects.screenshots.getMany",
      "action": "List Screenshots",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read only).",
      "resource": "screenshots"
    },
    {
      "name": "Add Screenshot",
      "value": "api.projects.screenshots.post",
      "action": "Add Screenshot",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Get Screenshot",
      "value": "api.projects.screenshots.get",
      "action": "Get Screenshot",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read only).",
      "resource": "screenshots"
    },
    {
      "name": "Update Screenshot",
      "value": "api.projects.screenshots.put",
      "action": "Update Screenshot",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Delete Screenshot",
      "value": "api.projects.screenshots.delete",
      "action": "Delete Screenshot",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Edit Screenshot",
      "value": "api.projects.screenshots.patch",
      "action": "Edit Screenshot",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "List Tags",
      "value": "api.projects.screenshots.tags.getMany",
      "action": "List Tags",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read only).",
      "resource": "screenshots"
    },
    {
      "name": "Replace Tags (Auto Tag)",
      "value": "api.projects.screenshots.tags.putMany",
      "action": "Replace Tags (Auto Tag)",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Add Tag",
      "value": "api.projects.screenshots.tags.post",
      "action": "Add Tag",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Clear Tags",
      "value": "api.projects.screenshots.tags.deleteMany",
      "action": "Clear Tags",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Get Tag",
      "value": "api.projects.screenshots.tags.get",
      "action": "Get Tag",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags/{{$parameter[\"tagId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read only).",
      "resource": "screenshots"
    },
    {
      "name": "Delete Tag",
      "value": "api.projects.screenshots.tags.delete",
      "action": "Delete Tag",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags/{{$parameter[\"tagId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Edit Tag",
      "value": "api.projects.screenshots.tags.patch",
      "action": "Edit Tag",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/screenshots/{{$parameter[\"screenshotId\"]}}/tags/{{$parameter[\"tagId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.screenshot` (Read and Write).",
      "resource": "screenshots"
    },
    {
      "name": "Assign Label to Strings",
      "value": "api.projects.labels.strings.post",
      "action": "Assign Label to Strings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/strings",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "Unassign Label from Strings",
      "value": "api.projects.labels.strings.deleteMany",
      "action": "Unassign Label from Strings",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/strings",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "List Labels",
      "value": "api.projects.labels.getMany",
      "action": "List Labels",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "labels"
    },
    {
      "name": "Add Label",
      "value": "api.projects.labels.post",
      "action": "Add Label",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "Get Label",
      "value": "api.projects.labels.get",
      "action": "Get Label",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read only).",
      "resource": "labels"
    },
    {
      "name": "Delete Label",
      "value": "api.projects.labels.delete",
      "action": "Delete Label",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "Edit Label",
      "value": "api.projects.labels.patch",
      "action": "Edit Label",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "Assign Label to Screenshots",
      "value": "api.projects.labels.screenshots.post",
      "action": "Assign Label to Screenshots",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/screenshots",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "Unassign Label from Screenshots",
      "value": "api.projects.labels.screenshots.deleteMany",
      "action": "Unassign Label from Screenshots",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/labels/{{$parameter[\"labelId\"]}}/screenshots",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.source.file` (Read and Write).",
      "resource": "labels"
    },
    {
      "name": "List Dictionaries",
      "value": "api.projects.dictionaries.getMany",
      "action": "List Dictionaries",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/dictionaries",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.dictionary` (Read only).",
      "resource": "dictionaries"
    },
    {
      "name": "Edit Dictionary",
      "value": "api.projects.dictionaries.patch",
      "action": "Edit Dictionary",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/dictionaries/{{$parameter[\"languageId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.dictionary` (Read and Write).",
      "resource": "dictionaries"
    },
    {
      "name": "Get Authenticated User",
      "value": "api.user.get",
      "action": "Get Authenticated User",
      "routing": {
        "request": {
          "url": "=/user",
          "method": "GET"
        }
      },
      "resource": "users"
    },
    {
      "name": "Edit Authenticated User",
      "value": "api.user.patch",
      "action": "Edit Authenticated User",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/user",
          "method": "PATCH"
        }
      },
      "resource": "users"
    },
    {
      "name": "List Project Members",
      "value": "api.projects.members.getMany",
      "action": "List Project Members",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/members",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.member` (Read only).",
      "resource": "users"
    },
    {
      "name": "Get Member Info",
      "value": "api.projects.members.get",
      "action": "Get Member Info",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/members/{{$parameter[\"memberId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.member` (Read only).",
      "resource": "users"
    },
    {
      "name": "Replace Project Member Permissions",
      "value": "api.projects.members.put",
      "action": "Replace Project Member Permissions",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/members/{{$parameter[\"memberId\"]}}",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `project.member` (Read and Write).",
      "resource": "users"
    },
    {
      "name": "Delete Member From Project",
      "value": "api.projects.members.delete",
      "action": "Delete Member From Project",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/members/{{$parameter[\"memberId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.member` (Read and Write).",
      "resource": "users"
    },
    {
      "name": "Send Notification to Authenticated User",
      "value": "api.notify.post",
      "action": "Send Notification to Authenticated User",
      "routing": {
        "request": {
          "url": "=/notify",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `notification` (Read and Write).",
      "resource": "notifications"
    },
    {
      "name": "Send Notification To Project Members",
      "value": "api.projects.notify.post",
      "action": "Send Notification To Project Members",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/notify",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project` (Read and Write).",
      "resource": "notifications"
    },
    {
      "name": "List AI Snippets",
      "value": "api.ai.prompts.snippets.getMany",
      "action": "List AI Snippets",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Add AI Snippet",
      "value": "api.ai.prompts.snippets.post",
      "action": "Add AI Snippet",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Get AI Snippet",
      "value": "api.ai.prompts.snippets.get",
      "action": "Get AI Snippet",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets/{{$parameter[\"aiSnippetId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Delete AI Snippet",
      "value": "api.ai.prompts.snippets.delete",
      "action": "Delete AI Snippet",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets/{{$parameter[\"aiSnippetId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Edit AI Snippet",
      "value": "api.ai.prompts.snippets.patch",
      "action": "Edit AI Snippet",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings/snippets/{{$parameter[\"aiSnippetId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "AI File Translations",
      "value": "api.users.ai.file-translations.post",
      "action": "AI File Translations",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.translate` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Get File Translations Status",
      "value": "api.users.ai.file-translations.get",
      "action": "Get File Translations Status",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.translate` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Cancel File Translations",
      "value": "api.users.ai.file-translations.delete",
      "action": "Cancel File Translations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `ai.translate` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Download Translated File",
      "value": "api.users.ai.file-translations.download",
      "action": "Download Translated File",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.translate` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Download Translated File Strings",
      "value": "api.users.ai.file-translations.download-strings",
      "action": "Download Translated File Strings",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/file-translations/{{$parameter[\"jobIdentifier\"]}}/translations",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.translate` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Clone AI Prompt",
      "value": "api.users.ai.prompts.clones.post",
      "action": "Clone AI Prompt",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}/clones",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "List AI Prompts",
      "value": "api.ai.prompts.getMany",
      "action": "List AI Prompts",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Add AI Prompt",
      "value": "api.users.ai.prompts.post",
      "action": "Add AI Prompt",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Get AI Prompt",
      "value": "api.users.ai.prompts.get",
      "action": "Get AI Prompt",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Delete AI Prompt",
      "value": "api.users.ai.prompts.delete",
      "action": "Delete AI Prompt",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Edit AI Prompt",
      "value": "api.users.ai.prompts.patch",
      "action": "Edit AI Prompt",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/prompts/{{$parameter[\"aiPromptId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `ai.prompt` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "List AI Provider Models",
      "value": "api.ai.providers.models.crowdin.getMany",
      "action": "List AI Provider Models",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/models",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "List AI Providers",
      "value": "api.ai.providers.getMany",
      "action": "List AI Providers",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Add AI Provider",
      "value": "api.users.ai.providers.post",
      "action": "Add AI Provider",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Get AI Provider",
      "value": "api.users.ai.providers.get",
      "action": "Get AI Provider",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Delete AI Provider",
      "value": "api.users.ai.providers.delete",
      "action": "Delete AI Provider",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Edit AI Provider",
      "value": "api.users.ai.providers.patch",
      "action": "Edit AI Provider",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "List AI Provider Models",
      "value": "api.ai.providers.models.getMany",
      "action": "List AI Provider Models",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/{{$parameter[\"aiProviderId\"]}}/models",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "List Supported AI Provider Models",
      "value": "api.ai.providers.supported-models.crowdin.getMany",
      "action": "List Supported AI Provider Models",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/providers/supported-models",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Generate AI Report",
      "value": "api.users.ai.reports.post",
      "action": "Generate AI Report",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/reports",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Check AI Report Generation Status",
      "value": "api.users.ai.reports.get",
      "action": "Check AI Report Generation Status",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/reports/{{$parameter[\"aiReportId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Download AI Report",
      "value": "api.users.ai.reports.download.download",
      "action": "Download AI Report",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/reports/{{$parameter[\"aiReportId\"]}}/download",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai.provider` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Get AI Settings",
      "value": "api.users.ai.settings.get",
      "action": "Get AI Settings",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `ai` (Read only).",
      "resource": "ai"
    },
    {
      "name": "Edit AI Settings",
      "value": "api.users.ai.settings.patch",
      "action": "Edit AI Settings",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/settings",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `ai` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "AI Translate Strings",
      "value": "api.users.ai.translate.strings.post",
      "action": "AI Translate Strings",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/ai/translate",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `ai.translate` (Read and Write).",
      "resource": "ai"
    },
    {
      "name": "Get Project AI Settings",
      "value": "api.projects.ai.settings.get",
      "action": "Get Project AI Settings",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/ai/settings",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project` (Read only).",
      "resource": "ai"
    },
    {
      "name": "List Supported Languages",
      "value": "api.languages.getMany",
      "action": "List Supported Languages",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/languages",
          "method": "GET"
        }
      },
      "resource": "languages"
    },
    {
      "name": "Add Custom Language",
      "value": "api.languages.post",
      "action": "Add Custom Language",
      "routing": {
        "request": {
          "url": "=/languages",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `language` (Read and Write).",
      "resource": "languages"
    },
    {
      "name": "Get Language",
      "value": "api.languages.get",
      "action": "Get Language",
      "routing": {
        "request": {
          "url": "=/languages/{{$parameter[\"languageId\"]}}",
          "method": "GET"
        }
      },
      "resource": "languages"
    },
    {
      "name": "Delete Custom Language",
      "value": "api.languages.delete",
      "action": "Delete Custom Language",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/languages/{{$parameter[\"languageId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `language` (Read and Write).",
      "resource": "languages"
    },
    {
      "name": "Edit Custom Language",
      "value": "api.languages.patch",
      "action": "Edit Custom Language",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/languages/{{$parameter[\"languageId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `language` (Read and Write).",
      "resource": "languages"
    },
    {
      "name": "List Webhooks",
      "value": "api.projects.webhooks.getMany",
      "action": "List Webhooks",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.webhook` (Read only).",
      "resource": "webhooks"
    },
    {
      "name": "Add Webhook",
      "value": "api.projects.webhooks.post",
      "action": "Add Webhook",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.webhook` (Read and Write).",
      "resource": "webhooks"
    },
    {
      "name": "Get Webhook",
      "value": "api.projects.webhooks.get",
      "action": "Get Webhook",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks/{{$parameter[\"webhookId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.webhook` (Read only).",
      "resource": "webhooks"
    },
    {
      "name": "Delete Webhook",
      "value": "api.projects.webhooks.delete",
      "action": "Delete Webhook",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks/{{$parameter[\"webhookId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `project.webhook` (Read and Write).",
      "resource": "webhooks"
    },
    {
      "name": "Edit Webhook",
      "value": "api.projects.webhooks.patch",
      "action": "Edit Webhook",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/webhooks/{{$parameter[\"webhookId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.webhook` (Read and Write).",
      "resource": "webhooks"
    },
    {
      "name": "List Webhooks",
      "value": "api.webhooks.getMany",
      "action": "List Webhooks",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/webhooks",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `webhook` (Read only).",
      "resource": "organizationWebhooks"
    },
    {
      "name": "Add Webhook",
      "value": "api.webhooks.post",
      "action": "Add Webhook",
      "routing": {
        "request": {
          "url": "=/webhooks",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `webhook` (Read and Write).",
      "resource": "organizationWebhooks"
    },
    {
      "name": "Get Webhook",
      "value": "api.webhooks.get",
      "action": "Get Webhook",
      "routing": {
        "request": {
          "url": "=/webhooks/{{$parameter[\"organizationWebhookId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `webhook` (Read only).",
      "resource": "organizationWebhooks"
    },
    {
      "name": "Delete Webhook",
      "value": "api.webhooks.delete",
      "action": "Delete Webhook",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/webhooks/{{$parameter[\"organizationWebhookId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `webhook` (Read and Write).",
      "resource": "organizationWebhooks"
    },
    {
      "name": "Edit Webhook",
      "value": "api.webhooks.patch",
      "action": "Edit Webhook",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/webhooks/{{$parameter[\"organizationWebhookId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `webhook` (Read and Write).",
      "resource": "organizationWebhooks"
    },
    {
      "name": "List Application Installations",
      "value": "api.applications.installations.getMany",
      "action": "List Application Installations",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/installations",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `application` (Read only).",
      "resource": "applications"
    },
    {
      "name": "Install Application",
      "value": "api.applications.installations.post",
      "action": "Install Application",
      "routing": {
        "request": {
          "url": "=/applications/installations",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).",
      "resource": "applications"
    },
    {
      "name": "Get Application Installation",
      "value": "api.applications.installations.get",
      "action": "Get Application Installation",
      "routing": {
        "request": {
          "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `application` (Read only).",
      "resource": "applications"
    },
    {
      "name": "Delete Application Installation",
      "value": "api.applications.installations.delete",
      "action": "Delete Application Installation",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).",
      "resource": "applications"
    },
    {
      "name": "Update Application Permissions",
      "value": "api.applications.installations.patch",
      "action": "Update Application Permissions",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).",
      "resource": "applications"
    },
    {
      "name": "Get Application Installation Update",
      "value": "api.applications.installations.update.get",
      "action": "Get Application Installation Update",
      "routing": {
        "request": {
          "url": "=/applications/installations/{{$parameter[\"identifier\"]}}/update",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `application` (Read only).\n\nReturns the diff between the currently installed application and the latest cached manifest, tagged with `manifestHash` for optimistic-locking on apply.",
      "resource": "applications"
    },
    {
      "name": "Apply Application Installation Update",
      "value": "api.applications.installations.update.post",
      "action": "Apply Application Installation Update",
      "routing": {
        "request": {
          "url": "=/applications/installations/{{$parameter[\"identifier\"]}}/update",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).\n\nApply the latest cached manifest to an installed application. Requires `manifestHash` from a recent GET /update call as an optimistic-locking token. If the cached manifest has changed since, returns 409 with the fresh diff in the response body.",
      "resource": "applications"
    },
    {
      "name": "Get Application Data",
      "value": "api.applications.api.get",
      "action": "Get Application Data",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `application` (Read only).\n\nRetrieves data from the specified application.\n\n__Note__: Query parameters are application-specific and vary depending on the application being accessed.",
      "resource": "applications"
    },
    {
      "name": "Update or Restore Application Data",
      "value": "api.applications.api.put",
      "action": "Update or Restore Application Data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).\n\nUpdates or restores data in the specified application.\n\n__Note__: Both the query parameters and request body are application-specific and vary depending on the application being accessed.",
      "resource": "applications"
    },
    {
      "name": "Add Application Data",
      "value": "api.applications.api.post",
      "action": "Add Application Data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).\n\nAdds new data to the specified application.\n\n__Note__: Both the query parameters and request body are application-specific and vary depending on the application being accessed.",
      "resource": "applications"
    },
    {
      "name": "Delete Application Data",
      "value": "api.applications.api.delete",
      "action": "Delete Application Data",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
          "method": "DELETE"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).\n\nDeletes data from the specified application.\n\n__Note__: Query parameters are application-specific and vary depending on the application being accessed.",
      "resource": "applications"
    },
    {
      "name": "Edit Application Data",
      "value": "api.applications.api.patch",
      "action": "Edit Application Data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/{{$parameter[\"path\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `application` (Read and Write).\n\nEdits existing data in the specified application.\n\n__Note__: Both the query parameters and request body are application-specific and vary depending on the application being accessed.",
      "resource": "applications"
    },
    {
      "name": "List Crowdin Files",
      "value": "api.applications.integrations.crowdin.files",
      "action": "List Crowdin Files",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/crowdin-files",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Get File Progress",
      "value": "api.applications.integrations.file.progress",
      "action": "Get File Progress",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/file-progress",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "List Integration Files",
      "value": "api.applications.integrations.integration.files",
      "action": "List Integration Files",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/integration-files",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Update Crowdin Files",
      "value": "api.applications.integrations.crowdin.update",
      "action": "Update Crowdin Files",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/crowdin-update",
          "method": "POST"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Update Integration Files",
      "value": "api.applications.integrations.integration.update",
      "action": "Update Integration Files",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/integration-update",
          "method": "POST"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "List Jobs",
      "value": "api.applications.integrations.job.list",
      "action": "List Jobs",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/all-jobs",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Get Job Info",
      "value": "api.applications.integrations.job.info",
      "action": "Get Job Info",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/job-info",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Cancel Job",
      "value": "api.applications.integrations.job.cancel",
      "action": "Cancel Job",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/jobs",
          "method": "DELETE"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Get Application Settings",
      "value": "api.applications.integrations.settings.get",
      "action": "Get Application Settings",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/settings",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Update Application Settings",
      "value": "api.applications.integrations.settings.update",
      "action": "Update Application Settings",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/settings",
          "method": "POST"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Get Sync Settings",
      "value": "api.applications.integrations.sync.settings.get",
      "action": "Get Sync Settings",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/sync-settings",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Update Sync Settings",
      "value": "api.applications.integrations.sync.settings.update",
      "action": "Update Sync Settings",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/sync-settings",
          "method": "POST"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Integration Login Form Fields",
      "value": "api.applications.integrations.integration.fields",
      "action": "Integration Login Form Fields",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/login-fields",
          "method": "GET"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Integration Login",
      "value": "api.applications.integrations.integration.login",
      "action": "Integration Login",
      "routing": {
        "request": {
          "url": "=/applications/{{$parameter[\"applicationIdentifier\"]}}/api/login",
          "method": "POST"
        }
      },
      "resource": "integrations"
    },
    {
      "name": "Create or Update Application Advisor Insight",
      "value": "api.projects.applications.modules.advisors.insights.put",
      "action": "Create or Update Application Advisor Insight",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/applications/{{$parameter[\"applicationIdentifier\"]}}/modules/{{$parameter[\"moduleKey\"]}}/advisors/insights",
          "method": "PUT"
        }
      },
      "description": "**Required scopes:** `project.advisor` (Read and Write).\n\nCalled by an installed application's `advisor-inspector` module to publish the result of its own check against a string. Subsequent calls for the same string overwrite the previous insight from this module.",
      "resource": "advisor"
    },
    {
      "name": "Create Advisor Check",
      "value": "api.projects.advisors.checks.post",
      "action": "Create Advisor Check",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/checks",
          "method": "POST"
        }
      },
      "description": "**Required scopes:** `project.advisor` (Read and Write).\n\nTriggers an asynchronous re-check of advisor inspectors for the project. At most one of `category` or `inspectors` may be present; if neither is supplied, every inspector is re-checked. Supplying `category` re-checks all inspectors in that category. Supplying `inspectors` re-checks only the listed inspectors; pass `options` on an entry to opt into AI validation for that inspector. Returns a job-progress descriptor — distinct from PATCH `/insights/{insightId}` (user-facing Insight mutation) and PUT `/applications/.../insight` (app-pushed upsert).",
      "resource": "advisor"
    },
    {
      "name": "Get Advisor Check Status",
      "value": "api.projects.advisors.checks.get",
      "action": "Get Advisor Check Status",
      "routing": {
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/checks/{{$parameter[\"checkId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.advisor` (Read only).\n\nReturns the status of an advisor check job",
      "resource": "advisor"
    },
    {
      "name": "List Advisor Insights",
      "value": "api.projects.advisors.insights.getMany",
      "action": "List Advisor Insights",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/insights",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `project.advisor` (Read only).",
      "resource": "advisor"
    },
    {
      "name": "Edit Advisor Insight",
      "value": "api.projects.advisors.insights.patch",
      "action": "Edit Advisor Insight",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/projects/{{$parameter[\"projectId\"]}}/advisors/insights/{{$parameter[\"insightId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "**Required scopes:** `project.advisor` (Read and Write).\n\nUser-facing mutation of a single Advisor Insight row. Currently only `/isDismissed` is patchable (dismiss ↔ reactivate). For dispatching a fresh check, see POST `/advisors/checks`. For app-pushed insight updates, see PUT `/applications/.../insight`.",
      "resource": "advisor"
    },
    {
      "name": "List User Security Logs",
      "value": "api.users.security-logs.getMany",
      "action": "List User Security Logs",
      "routing": {
        "send": {
          "paginate": "={{$parameter[\"returnAll\"]}}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "enabled": "={{!$parameter[\"returnAll\"]}}",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/security-logs",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `security-log` (Read only).",
      "resource": "securityLogs"
    },
    {
      "name": "Get User Security Log",
      "value": "api.users.security-logs.get",
      "action": "Get User Security Log",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter[\"userId\"]}}/security-logs/{{$parameter[\"securityLogId\"]}}",
          "method": "GET"
        }
      },
      "description": "**Required scopes:** `security-log` (Read only).",
      "resource": "securityLogs"
    }
  ]

npm_readme:
  # @crowdin/n8n-nodes-crowdin

  [![npm](https://img.shields.io/npm/v/@crowdin/n8n-nodes-crowdin?logo=npm&cacheSeconds=1800)](https://www.npmjs.com/package/@crowdin/n8n-nodes-crowdin)
  [![npm](https://img.shields.io/npm/dt/@crowdin/n8n-nodes-crowdin?logo=npm&cacheSeconds=1800)](https://www.npmjs.com/package/@crowdin/n8n-nodes-crowdin)
  [![License](https://img.shields.io/github/license/crowdin/n8n-nodes-crowdin?cacheSeconds=3600)](https://github.com/crowdin/n8n-nodes-crowdin/blob/main/LICENSE)

  This is an n8n community node. It lets you use [Crowdin](https://crowdin.com/) in your n8n workflows.

  Crowdin is an AI-powered localization software designed for teams and businesses. It's a cloud-based solution that streamlines localization management for your product. With 700+ apps and integrations, Crowdin automates the translation process. Its AI translator provides accurate, context-aware translations that continuously improve based on your resources and feedback. Crowdin supports 300+ languages and enables continuous localization for software, mobile apps, websites, marketing content, and help centers.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Nodes](#nodes)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Workflow Templates](#workflow-templates)  
  [Resources](#resources)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Nodes

  This package includes the following nodes:

  ### Action Nodes

  | Node | Description |
  |------|-------------|
  | **Crowdin (File-Based)** | Interact with Crowdin file-based projects on crowdin.com |
  | **Crowdin (String-Based)** | Interact with Crowdin string-based projects on crowdin.com |
  | **Crowdin Enterprise (File-Based)** | Interact with Crowdin Enterprise file-based projects |
  | **Crowdin Enterprise (String-Based)** | Interact with Crowdin Enterprise string-based projects |

  ### Trigger Nodes

  | Node | Description |
  |------|-------------|
  | **Crowdin (File-Based) Trigger** | Start workflows on file-based project events |
  | **Crowdin (String-Based) Trigger** | Start workflows on string-based project events |
  | **Crowdin Enterprise (File-Based) Trigger** | Start workflows on Enterprise file-based project events |
  | **Crowdin Enterprise (String-Based) Trigger** | Start workflows on Enterprise string-based project events |

  ## Operations

  ### Common Resources

  | Resource | Description |
  |----------|-------------|
  | **AI** | AI-powered features for translation assistance |
  | **Storage** | Upload files for localization, screenshots, glossaries, and TMs |
  | **Languages** | Access 300+ supported languages and their details |
  | **Source Files** | Manage source files, folders, and branches |
  | **Source Strings** | Manage text units for translation |
  | **String/Asset Translations** | Add, remove, and manage translations and approvals |
  | **String/Asset Comments** | Manage comments and issues on strings |
  | **Screenshots** | Provide visual context for translators |
  | **Glossaries** | Maintain terminology consistency |
  | **Translation Memory** | Reuse previous translations |
  | **Machine Translation Engines** | Configure MT providers (Google, DeepL, etc.) |
  | **Translation Status** | Track localization progress |
  | **Reports** | Generate cost estimates and translation reports |
  | **Users** | Get user profile information |
  | **Webhooks** | Configure project-level webhooks |
  | **Organization Webhooks** | Configure account-level webhooks |
  | **Applications** | Manage Crowdin App integrations |
  | **Bundles** | Group files for export |
  | **Dictionaries** | Manage spell-checker word lists |
  | **Distributions** | Configure content delivery |
  | **Labels** | Organize strings with labels |
  | **Notifications** | Manage notification settings |
  | **Security Logs** | Access audit logs |
  | **Tasks** | Create and manage translation tasks |

  ### Crowdin-Specific Resources

  | Resource | Description |
  |----------|-------------|
  | **Projects** | Manage localization projects |
  | **Translations** | Pre-translate and download translations |

  ### Crowdin Enterprise-Specific Resources

  | Resource | Description |
  |----------|-------------|
  | **Projects and Groups** | Manage projects and organizational groups |
  | **Workflows** | Configure translation workflow templates |
  | **Teams** | Manage team members and permissions |
  | **Vendors** | Manage translation vendor relationships |
  | **Clients** | Manage client organizations |
  | **Fields** | Configure custom fields |
  | **Organization** | Manage organization settings |
  | **External QA Checks** | Configure external quality assurance |
  | **Custom Spellcheckers** | Manage custom spell-check dictionaries |
  | **String Corrections** | Manage string correction suggestions |

  ### Trigger Events

  The trigger nodes support the following webhook events. For detailed payload structures, see the [Crowdin Webhooks Documentation](https://support.crowdin.com/developer/webhooks/#events).

  #### Account/Organization Events

  | Event | Crowdin | Enterprise | Description |
  |-------|:-------:|:----------:|-------------|
  | Project created | ✅ | ✅ | A project is created |
  | Project deleted | ✅ | ✅ | A project is deleted |
  | Group created | — | ✅ | A group is created |
  | Group deleted | — | ✅ | A group is deleted |

  #### Project Events

  | Event | Description |
  |-------|-------------|
  | Project fully translated | All files are translated into one of the target languages |
  | Project fully reviewed | Translations in all files are approved for one of the target languages |
  | Project successfully built | A project is built successfully |
  | Project QA check finished | QA check for all strings in the project is finished |
  | Exported translation updated | Final translation of a string is updated |

  #### File Events (File-Based Projects Only)

  | Event | Description |
  |-------|-------------|
  | File added | A new file is added to the project |
  | File updated | A file is updated |
  | File deleted | A file is deleted |
  | File reverted | A file is reverted to the previous revision |
  | File fully translated | A file is translated into one of the target languages |
  | File fully reviewed | Translations in a file are approved for one of the target languages |
  | File QA check finished | QA check for all strings in a file is finished |

  #### Source String Events

  | Event | Description |
  |-------|-------------|
  | Source string added | A new string is added to the project |
  | Source string updated | A string in the project is updated |
  | Source string deleted | A string is deleted |

  #### String Comment/Issue Events

  | Event | Description |
  |-------|-------------|
  | String comment/issue created | A comment or issue is added to the string |
  | String comment/issue updated | A comment or issue is updated |
  | String comment/issue deleted | A comment or issue is deleted |
  | String comment/issue restored | A comment or issue is restored |

  #### Suggested Translation Events

  | Event | Description |
  |-------|-------------|
  | Suggested translation added | A string in the project is translated |
  | Suggested translation updated | A translation for a string in the project is updated |
  | Suggested translation deleted | One of the translations is deleted |
  | Suggested translation approved | A translation for a string is approved |
  | Suggested translation disapproved | Approval for a previously added translation is removed |

  #### Task Events

  | Event | Description |
  |-------|-------------|
  | Task added | A task is added to the project |
  | Task status changed | A task status is changed |
  | Task updated | A task is updated |
  | Task deleted | A task is deleted |

  ## Credentials

  This node supports two authentication methods:

  ### OAuth2 (Recommended)

  1. Go to your [Crowdin OAuth Apps](https://crowdin.com/settings#oauth-apps) or [Crowdin Enterprise OAuth Apps](https://{your-organization}.crowdin.com/u/system-settings/oauth-apps)
  2. Create a new OAuth application
  3. Configure the redirect URI as provided by n8n
  4. Use the Client ID and Client Secret in n8n credentials
  5. Set the required scopes (e.g., `project`, `tm`, `glossary`)

  ### Personal Access Token

  1. Go to your [Crowdin API Settings](https://crowdin.com/settings#api-key) or [Crowdin Enterprise Access Tokens](https://{your-organization}.crowdin.com/u/user_settings/access-tokens)
  2. Create a new Personal Access Token
  3. Grant only the minimum required scopes for your workflow
  4. Copy the token and paste it into n8n credentials

  > 🔐 **Security Best Practice:** Follow the principle of least privilege - grant only the minimum scopes required for your workflow.

  ## Compatibility

  - **Minimum n8n version:** 1.0.0
  - **Tested with:** n8n 2.4.4

  ## Usage

  ### File-Based vs String-Based Projects

  Crowdin supports two types of projects:

  - **File-Based Projects:** Traditional localization workflow where you upload source files (JSON, XLIFF, Android XML, etc.) and download translated versions
  - **String-Based Projects:** Content is managed as individual strings without file structure, ideal for web applications and dynamic content

  Choose the appropriate node based on your project type.

  ### Crowdin vs Crowdin Enterprise

  - **Crowdin (crowdin.com):** For individuals and teams using the standard Crowdin platform
  - **Crowdin Enterprise:** For organizations with dedicated Crowdin Enterprise instances (custom domain: `{organization}.crowdin.com`)

  ### Example Workflow: Sync Translations

  1. Add a **Crowdin Trigger** node to listen for `file.translated` events
  2. Use the **Crowdin** node to build and download translations
  3. Connect to your deployment pipeline or storage

  ### Using with AI Agents

  All nodes in this package have `usableAsTool: true`, making them compatible with n8n's AI Agent nodes. You can use them as tools for AI-powered automation workflows.

  ## Workflow Templates

  This package includes ready-to-use workflow templates:

  | Template | Description |
  |----------|-------------|
  | **Crowdin AI Translation Slack Bot** | AI-powered translation assistant in Slack |
  | **Crowdin AI Translation Teams Bot** | AI-powered translation assistant in Microsoft Teams |
  | **Crowdin to JIRA** | Sync Crowdin issues to JIRA tickets |
  | **Crowdin to Linear** | Sync Crowdin issues to Linear issues |
  | **JIRA to Crowdin** | Create Crowdin tasks from JIRA tickets |
  | **Linear to Crowdin** | Create Crowdin tasks from Linear issues |

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Crowdin API documentation](https://support.crowdin.com/api/v2/)
  - [Crowdin Enterprise API documentation](https://support.crowdin.com/enterprise/api/)
  - [Crowdin Developer Portal](https://developer.crowdin.com/)
  - [Crowdin Help Center](https://support.crowdin.com/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node allows users to interact with Crowdin's cloud-based localization platform to manage translations, files, and projects for software, mobile apps, and content.","capabilities":["File-based project management","String-based project management","Enterprise project management","AI-powered translation assistance","File upload and localization management","Multi-language support (300+ languages)","Translation memory and glossary management","Machine translation engine configuration","Translation status tracking and reporting","Webhook configuration for project events"],"authentication":"API key required","commonUseCases":["Automating translation workflows for software localization","Managing multi-language content for websites and marketing","Integrating AI translation into development pipelines","Tracking translation progress and quality","Automating project creation and deletion events"],"limitations":["Community node (requires n8n community license)","Requires valid Crowdin account with appropriate permissions","Some enterprise-specific features require Enterprise plan"],"relatedNodes":["Crowdin (String-Based)","Crowdin Enterprise (File-Based)","Crowdin Enterprise (String-Based)","Crowdin (File-Based) Trigger","Crowdin (String-Based) Trigger"]}


