# nodes

node_type: n8n-nodes-itglue.iTGlue
package_name: n8n-nodes-itglue
display_name: IT Glue
description: Utilize the IT Glue API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: redanthrax
author_github_url: https://github.com/redanthrax/itglue-node.git
npm_package_name: n8n-nodes-itglue
npm_version: 2.1.0
community_fetched_at: 2026-03-25T21:19:40.533Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "organization",
      "options": [
        {
          "name": "Attachment",
          "value": "attachment"
        },
        {
          "name": "Configuration",
          "value": "configuration"
        },
        {
          "name": "Configuration Interface",
          "value": "configurationInterface"
        },
        {
          "name": "Configuration Status",
          "value": "configurationStatus"
        },
        {
          "name": "Configuration Type",
          "value": "configurationType"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Contact Type",
          "value": "contactType"
        },
        {
          "name": "Country",
          "value": "country"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document Image",
          "value": "documentImage"
        },
        {
          "name": "Document Section",
          "value": "documentSection"
        },
        {
          "name": "Domain",
          "value": "domain"
        },
        {
          "name": "Expiration",
          "value": "expiration"
        },
        {
          "name": "Export",
          "value": "export"
        },
        {
          "name": "Flexible Asset",
          "value": "flexibleAsset"
        },
        {
          "name": "Flexible Asset Field",
          "value": "flexibleAssetField"
        },
        {
          "name": "Flexible Asset Type",
          "value": "flexibleAssetType"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Location",
          "value": "location"
        },
        {
          "name": "Log",
          "value": "log"
        },
        {
          "name": "Manufacturer",
          "value": "manufacturer"
        },
        {
          "name": "Model",
          "value": "model"
        },
        {
          "name": "Operating System",
          "value": "operatingSystem"
        },
        {
          "name": "Organization",
          "value": "organization"
        },
        {
          "name": "Organization Status",
          "value": "organizationStatus"
        },
        {
          "name": "Organization Type",
          "value": "organizationType"
        },
        {
          "name": "Password",
          "value": "password"
        },
        {
          "name": "Password Category",
          "value": "passwordCategory"
        },
        {
          "name": "Platform",
          "value": "platform"
        },
        {
          "name": "Region",
          "value": "region"
        },
        {
          "name": "Related Item",
          "value": "relatedItem"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "User Metric",
          "value": "userMetric"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete configurations",
          "description": "Delete multiple configurations at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update configurations",
          "description": "Update multiple configurations at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a configuration",
          "description": "Create a new configuration"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get configurations data",
          "description": "Get data from the Configurations endpoint"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get configuration by ID",
          "description": "Get a specific configuration by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a configuration",
          "description": "Update an existing configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "configuration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete contacts",
          "description": "Delete multiple contacts at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update contacts",
          "description": "Update multiple contacts at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Get a contact",
          "description": "Retrieve a single contact"
        },
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many contacts",
          "description": "Retrieve multiple contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update documents",
          "description": "Update multiple documents at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document",
          "description": "Create a new document"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document",
          "description": "Delete a document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get documents",
          "description": "Get all documents"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get document by ID",
          "description": "Get a specific document by ID"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a document",
          "description": "Publish a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document",
          "description": "Update an existing document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getById",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document image",
          "description": "Upload a new document image"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document image",
          "description": "Delete a document image"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get document image by ID",
          "description": "Get a specific document image by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentImage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document section",
          "description": "Create a new document section"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document section",
          "description": "Delete a document section"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get document sections",
          "description": "Get all document sections for a document"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get document section by ID",
          "description": "Get a specific document section by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document section",
          "description": "Update an existing document section"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentSection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many domains",
          "description": "Get domains"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Destroy",
          "value": "bulkDestroy",
          "action": "Bulk delete flexible assets",
          "description": "Delete multiple flexible assets at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a flexible asset",
          "description": "Create a new flexible asset"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a flexible asset",
          "description": "Delete a flexible asset"
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Get a flexible asset",
          "description": "Retrieve a single flexible asset"
        },
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many flexible assets",
          "description": "Retrieve multiple flexible assets"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a flexible asset",
          "description": "Update an existing flexible asset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "flexibleAsset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete organizations",
          "description": "Delete multiple organizations at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update organizations",
          "description": "Update multiple organizations at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create organizations data",
          "description": "Create an organization using the Organizations endpoint"
        },
        {
          "name": "Delete",
          "value": "deleteOrganization",
          "action": "Delete an organization",
          "description": "Delete an organization"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get organizations data",
          "description": "Get data from the Organizations endpoint"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get organization by ID",
          "description": "Get a specific organization by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update organizations data",
          "description": "Update an organization using the Organizations endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete passwords",
          "description": "Delete multiple passwords at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update passwords",
          "description": "Update multiple passwords at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a password",
          "description": "Create a new password"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a password",
          "description": "Delete a password"
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Get a password",
          "description": "Retrieve a single password"
        },
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many passwords",
          "description": "Retrieve multiple passwords"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a password",
          "description": "Update an existing password"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "password"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"bulkDestroy","name":"Bulk Delete","description":"Delete multiple configurations at once","resource":"configuration"},{"operation":"bulkUpdate","name":"Bulk Update","description":"Update multiple configurations at once","resource":"configuration"},{"operation":"create","name":"Create","description":"Create a new configuration","resource":"configuration"},{"operation":"get","name":"Get","description":"Get data from the Configurations endpoint","resource":"configuration"},{"operation":"getById","name":"Get by ID","description":"Get a specific configuration by ID","resource":"configuration"},{"operation":"update","name":"Update","description":"Update an existing configuration","resource":"configuration"},{"operation":"bulkDestroy","name":"Bulk Delete","description":"Delete multiple contacts at once","resource":"contact"},{"operation":"bulkUpdate","name":"Bulk Update","description":"Update multiple contacts at once","resource":"contact"},{"operation":"create","name":"Create","description":"Create a new contact","resource":"contact"},{"operation":"delete","name":"Delete","description":"Delete a contact","resource":"contact"},{"operation":"getById","name":"Get","description":"Retrieve a single contact","resource":"contact"},{"operation":"get","name":"Get Many","description":"Retrieve multiple contacts","resource":"contact"},{"operation":"update","name":"Update","description":"Update an existing contact","resource":"contact"},{"operation":"bulkUpdate","name":"Bulk Update","description":"Update multiple documents at once","resource":"document"},{"operation":"create","name":"Create","description":"Create a new document","resource":"document"},{"operation":"delete","name":"Delete","description":"Delete a document","resource":"document"},{"operation":"get","name":"Get","description":"Get all documents","resource":"document"},{"operation":"getById","name":"Get by ID","description":"Get a specific document by ID","resource":"document"},{"operation":"publish","name":"Publish","description":"Publish a document","resource":"document"},{"operation":"update","name":"Update","description":"Update an existing document","resource":"document"},{"operation":"create","name":"Create","description":"Upload a new document image","resource":"documentImage"},{"operation":"delete","name":"Delete","description":"Delete a document image","resource":"documentImage"},{"operation":"getById","name":"Get by ID","description":"Get a specific document image by ID","resource":"documentImage"},{"operation":"create","name":"Create","description":"Create a new document section","resource":"documentSection"},{"operation":"delete","name":"Delete","description":"Delete a document section","resource":"documentSection"},{"operation":"get","name":"Get","description":"Get all document sections for a document","resource":"documentSection"},{"operation":"getById","name":"Get by ID","description":"Get a specific document section by ID","resource":"documentSection"},{"operation":"update","name":"Update","description":"Update an existing document section","resource":"documentSection"},{"operation":"get","name":"Get Many","description":"Get domains","resource":"domain"},{"operation":"bulkDestroy","name":"Bulk Destroy","description":"Delete multiple flexible assets at once","resource":"flexibleAsset"},{"operation":"create","name":"Create","description":"Create a new flexible asset","resource":"flexibleAsset"},{"operation":"delete","name":"Delete","description":"Delete a flexible asset","resource":"flexibleAsset"},{"operation":"getById","name":"Get","description":"Retrieve a single flexible asset","resource":"flexibleAsset"},{"operation":"get","name":"Get Many","description":"Retrieve multiple flexible assets","resource":"flexibleAsset"},{"operation":"update","name":"Update","description":"Update an existing flexible asset","resource":"flexibleAsset"},{"operation":"bulkDestroy","name":"Bulk Delete","description":"Delete multiple organizations at once","resource":"organization"},{"operation":"bulkUpdate","name":"Bulk Update","description":"Update multiple organizations at once","resource":"organization"},{"operation":"create","name":"Create","description":"Create an organization using the Organizations endpoint","resource":"organization"},{"operation":"deleteOrganization","name":"Delete","description":"Delete an organization","resource":"organization"},{"operation":"get","name":"Get","description":"Get data from the Organizations endpoint","resource":"organization"},{"operation":"getById","name":"Get by ID","description":"Get a specific organization by ID","resource":"organization"},{"operation":"update","name":"Update","description":"Update an organization using the Organizations endpoint","resource":"organization"},{"operation":"bulkDestroy","name":"Bulk Delete","description":"Delete multiple passwords at once","resource":"password"},{"operation":"bulkUpdate","name":"Bulk Update","description":"Update multiple passwords at once","resource":"password"},{"operation":"create","name":"Create","description":"Create a new password","resource":"password"},{"operation":"delete","name":"Delete","description":"Delete a password","resource":"password"},{"operation":"getById","name":"Get","description":"Retrieve a single password","resource":"password"},{"operation":"get","name":"Get Many","description":"Retrieve multiple passwords","resource":"password"},{"operation":"update","name":"Update","description":"Update an existing password","resource":"password"}]

npm_readme:
  # n8n-nodes-itglue

  An n8n community node for integrating with IT Glue API.

  ## Installation

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

  ```bash
  npm install n8n-nodes-itglue
  ```

  ## Prerequisites

  - IT Glue account with API access
  - API Key from IT Glue
  - Your IT Glue region (US, Europe, or Australia)

  ## Setup

  ### Setting up API Key in IT Glue

  1. Log into your IT Glue instance
  2. Navigate to Account > Settings > API Keys
  3. Create a new API key
  4. Note down the API Key for use in n8n

  ### Configuring Credentials in n8n

  1. **Region**: Select your IT Glue region (api, api.eu, or api.au)
  2. **API Key**: The API key from IT Glue

  ## Supported Operations

  ### [Attachments](./docs/attachments.md)
  Manage file attachments with create, update, and bulk destroy operations for document management.

  ### [Configurations](./docs/configurations.md)
  Complete configuration item management with CRUD operations, bulk updates, and comprehensive filtering for IT asset management.

  ### [Configuration Interfaces](./docs/configuration-interfaces.md)
  Manage network interfaces and connections with full CRUD operations and bulk update capabilities.

  ### [Configuration Statuses](./docs/configuration-statuses.md)
  Manage configuration status definitions with complete CRUD operations for asset lifecycle tracking.

  ### [Configuration Types](./docs/configuration-types.md)
  Manage configuration type definitions with CRUD operations for asset categorization.

  ### [Contacts](./docs/contacts.md)
  Manage contact records with full CRUD operations, bulk updates, and comprehensive contact information management.

  ### [Contact Types](./docs/contact-types.md)
  Manage contact type definitions with CRUD operations for contact categorization.

  ### [Countries](./docs/countries.md)
  Retrieve country information and geographical data with filtering capabilities.

  ### [Documents](./docs/documents.md)
  Complete document management with CRUD operations, bulk updates, and comprehensive document handling.

  ### [Domains](./docs/domains.md)
  Retrieve domain records and DNS-related information with filtering options.

  ### [Expirations](./docs/expirations.md)
  Track asset and license expirations with retrieval and filtering capabilities.

  ### [Flexible Assets](./docs/flexible-assets.md)
  Manage custom flexible asset types with dynamic field structures, supporting full CRUD operations and bulk destroy.

  ### [Flexible Asset Fields](./docs/flexible-asset-fields.md)
  Manage flexible asset field definitions with complete CRUD operations and bulk update capabilities.

  ### [Flexible Asset Types](./docs/flexible-asset-types.md)
  Manage flexible asset type definitions with full CRUD operations for custom asset management.

  ### [Logs](./docs/logs.md)
  Retrieve system logs and audit trail information for monitoring and compliance.

  ### [Operating Systems](./docs/operating-systems.md)
  Retrieve operating system information and specifications with filtering capabilities.

  ### [Organizations](./docs/organizations.md)
  Manage organization records with comprehensive CRUD operations including creation, updates, bulk operations, and deletion with filtering capabilities.

  ### [Organization Statuses](./docs/organization-statuses.md)
  Manage organization status definitions with CRUD operations for organizational lifecycle tracking.

  ### [Organization Types](./docs/organization-types.md)
  Manage organization type definitions with CRUD operations for organizational categorization.

  ### [Passwords](./docs/passwords.md)
  Securely manage password entries with full CRUD operations including creation, updates, retrieval, deletion, and bulk operations with advanced filtering.

  ### [Password Categories](./docs/password-categories.md)
  Manage password category definitions with CRUD operations for password organization.

  ### [Platforms](./docs/platforms.md)
  Retrieve platform and technology information with filtering capabilities.

  ### [Regions](./docs/regions.md)
  Retrieve regional information and geographical data with filtering options.

  ### [Related Items](./docs/related-items.md)
  Manage relationships between different IT Glue resources with CRUD operations and bulk destroy capabilities.

  ### [Users](./docs/users.md)
  Manage user accounts with CRUD operations for user administration.

  ### [User Metrics](./docs/user-metrics.md)
  Retrieve user activity metrics and analytics for monitoring user engagement.

  ## Resources

  - [IT Glue API Documentation](https://api.itglue.com/developer/)
  - [n8n Documentation](https://docs.n8n.io)
  - [Repository](https://github.com/redanthrax/itglue-node)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the IT Glue API to manage IT asset management, configuration, and organizational data.","capabilities":["Create, read, update, and delete IT assets and configurations","Manage flexible asset types with dynamic field structures","Handle file attachments and documents","Track password categories and secure password entries","Monitor user metrics and system logs","Manage organizational and contact records","Filter and retrieve data based on region and resource type"],"authentication":"API Key required","commonUseCases":["IT asset management and lifecycle tracking","Configuration management for IT infrastructure","User and organization administration","Password and credential management","Compliance and audit trail monitoring"],"limitations":["Community node (not official n8n node)","Requires separate IT Glue account with API access","Supports only specific IT Glue regions (US, Europe, Australia)"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-base.set"]}


node_type: @replyio/n8n-nodes-reply.reply
package_name: @replyio/n8n-nodes-reply
display_name: Reply
description: Interact with Reply.io API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: bborys
author_github_url: https://github.com/reply-team/n8n-public.git
npm_package_name: @replyio/n8n-nodes-reply
npm_version: 0.21.0
community_fetched_at: 2026-03-25T21:19:40.534Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Contact Status",
          "value": "contactStatus"
        },
        {
          "name": "Sequence",
          "value": "sequence"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "description": "Get a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts",
          "description": "Get many contacts with pagination"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateStatus",
      "options": [
        {
          "name": "Clear Status",
          "value": "clearStatus",
          "action": "Clear contact status",
          "description": "Clear statuses from a contact"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update contact status",
          "description": "Update the status of a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Contact",
          "value": "addContact",
          "action": "Add contact to sequence",
          "description": "Add an existing contact to a sequence by contact ID"
        },
        {
          "name": "Archive a Sequence",
          "value": "archive",
          "action": "Archive a sequence"
        },
        {
          "name": "Get a Sequence",
          "value": "get",
          "action": "Get a sequence",
          "description": "Get a sequence by ID"
        },
        {
          "name": "Get Contacts",
          "value": "getContacts",
          "action": "Get contacts in sequence",
          "description": "Get contacts in a sequence with pagination"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sequences",
          "description": "Get many sequences with pagination"
        },
        {
          "name": "Pause a Sequence",
          "value": "pause",
          "action": "Pause a sequence"
        },
        {
          "name": "Start a Sequence",
          "value": "start",
          "action": "Start a sequence"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sequence"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new contact","resource":"contact"},{"operation":"delete","name":"Delete","description":"Delete a contact","resource":"contact"},{"operation":"get","name":"Get","description":"Get a contact","resource":"contact"},{"operation":"getAll","name":"Get Many","description":"Get many contacts with pagination","resource":"contact"},{"operation":"update","name":"Update","description":"Update an existing contact","resource":"contact"},{"operation":"clearStatus","name":"Clear Status","description":"Clear statuses from a contact","resource":"contactStatus"},{"operation":"updateStatus","name":"Update Status","description":"Update the status of a contact","resource":"contactStatus"},{"operation":"addContact","name":"Add Contact","description":"Add an existing contact to a sequence by contact ID","resource":"sequence"},{"operation":"archive","name":"Archive a Sequence","resource":"sequence"},{"operation":"get","name":"Get a Sequence","description":"Get a sequence by ID","resource":"sequence"},{"operation":"getContacts","name":"Get Contacts","description":"Get contacts in a sequence with pagination","resource":"sequence"},{"operation":"getAll","name":"Get Many","description":"Get many sequences with pagination","resource":"sequence"},{"operation":"pause","name":"Pause a Sequence","resource":"sequence"},{"operation":"start","name":"Start a Sequence","resource":"sequence"}]

npm_readme:
  # @replyio/n8n-nodes-reply

  This is an n8n community node for [Reply.io](https://reply.io) - a sales engagement platform that automates multichannel outreach across email, LinkedIn, calls, SMS, and WhatsApp.

  [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.

  ## Nodes

  ### Reply

  Interact with Reply.io API to manage contacts, sequences, and contact statuses.

  **Resources & Operations:**

  | Resource | Operations |
  |----------|------------|
  | Contact | Create, Get, Get Many, Update, Delete |
  | Contact Status | Update Status, Clear Status |
  | Sequence | Get, Get Many, Get Contacts, Add Contact, Start, Pause, Archive |

  ### Reply Trigger

  Starts workflows when Reply.io events occur.

  **Supported Events:**

  | Category | Events |
  |----------|--------|
  | Email | Sent, Opened, Bounced, Link Clicked, Replied, Reply Categorized |
  | LinkedIn | Message Sent, Message Replied, Connection Sent, Connection Accepted, Reply Categorized |
  | Sequence | Contact Finished, Contact Opted Out, Contact Called |
  | Account Health | Email Connection Lost, Email Account Error |

  ## Credentials

  1. Log in to your [Reply.io](https://reply.io) account
  2. Go to **Settings** > **API Key**
  3. Copy your API key
  4. In n8n, create new Reply API credentials and paste the key

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Reply.io API to manage sales engagement workflows, including contacts, sequences, and statuses.","capabilities":["Create, retrieve, update, and delete contacts","Update and clear contact statuses","Manage sequences (get, add contacts, start, pause, archive)","Trigger workflows on Reply.io events (email, LinkedIn, sequence, account health)","Monitor outreach metrics like opens, clicks, replies, and bounces"],"authentication":"API key required (obtained from Reply.io Settings > API Key)","commonUseCases":["Automating multi-channel sales outreach","Tracking engagement across email, LinkedIn, calls, SMS, and WhatsApp","Managing contact lists and sequence execution","Monitoring campaign performance and opt-outs"],"limitations":["Community node (not official n8n node)","Requires manual API key configuration in n8n"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


node_type: @docuseal/n8n-nodes-docuseal.docusealTrigger
package_name: @docuseal/n8n-nodes-docuseal
display_name: DocuSeal Trigger
description: Handle DocuSeal events via webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: petem
author_github_url: https://github.com/docusealco/n8n-nodes-docuseal.git
npm_package_name: @docuseal/n8n-nodes-docuseal
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.534Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-docuseal

  This is an **n8n community node** that allows you to integrate [DocuSeal](https://www.docuseal.com) with your n8n workflows.

  [DocuSeal](https://www.docuseal.com) is a modern document signing platform that lets you securely collect legally binding electronic signatures online. You can create templates, send signature requests, and automate your signing process with ease.

  [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)
  - [Compatibility](#compatibility)
  - [Usage Examples](#usage-examples)
  - [Resources](#resources)
  - [License](#license)

  ## Installation

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

  ### Community Nodes (Recommended)

  For n8n cloud or instances with UI access:

  1. Go to **Settings → Community Nodes** in your n8n dashboard.
  2. Click **Install**.
  3. Enter `@docuseal/n8n-nodes-docuseal` in the **Enter npm package name** field.
  4. Accept the [community node usage risks](https://docs.n8n.io/integrations/community-nodes/risks/).
  5. Click **Install** to complete setup.

  ### npm Installation

  To install manually in your n8n root directory:

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

  ### Docker Installation

  For Docker users, add the package to your setup using environment variables:

  **docker-compose.yml:**
  ```yaml
  services:
    n8n:
      image: docker.n8n.io/n8nio/n8n
      environment:
        - N8N_COMMUNITY_PACKAGES=@docuseal/n8n-nodes-docuseal
      ports:
        - "5678:5678"
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  **Docker run command:**
  ```bash
  docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -e N8N_COMMUNITY_PACKAGES="@docuseal/n8n-nodes-docuseal" \
    -v ~/.n8n:/home/node/.n8n \
    docker.n8n.io/n8nio/n8n
  ```

  ## Operations

  This package includes two nodes:

  ### DocuSeal Node

  The main node for creating and managing signature requests.

  #### Create Submission
  Create a signature request from an existing template.

  **Features:**
  - Select from your existing templates
  - Define multiple signers with their details
  - Pre-fill form fields
  - Customize email notifications
  - Set expiration dates
  - Configure signing order (sequential or random)

  #### Create Submission From DOCX
  Create a signature request from DOCX files with dynamic content.

  **Features:**
  - Upload DOCX or PDF files
  - Use dynamic variables for content replacement
  - Merge multiple documents
  - Define signers with roles
  - Support for template merging

  #### Create Submission From HTML
  Generate signature requests from HTML content.

  **Features:**
  - HTML document content with field tags
  - Custom headers and footers
  - Multiple page sizes (Letter, A4, Legal, etc.)
  - Merge with existing templates
  - Convert HTML to PDF automatically

  #### Create Submission From PDF
  Create signature requests from PDF documents.

  **Features:**
  - Upload PDF files (Base64 or URL)
  - Flatten PDF form fields
  - Remove or preserve text tags
  - Merge multiple PDFs
  - Template integration

  ### DocuSeal Trigger Node

  Webhook-based trigger for DocuSeal events.

  #### Signing Form Completed
  Triggers when a single signer completes their signing form.

  **Use cases:**
  - Send notifications to internal teams
  - Update CRM records
  - Trigger follow-up workflows

  #### Submission Completed
  Triggers when all parties complete the signing process.

  **Use cases:**
  - Archive completed documents
  - Send completion notifications
  - Update databases with signed document URLs
  - Generate invoices or contracts

  ## Credentials

  You'll need your **DocuSeal API key** to connect n8n to your account.

  ### Getting Your API Key

  1. Create an account at [DocuSeal Global](https://docuseal.com/sign_in) or [DocuSeal Europe](https://docuseal.eu/sign_in)
  2. Go to **Settings → Console → API**
  3. Copy an API key for your account

  ### Setting Up Credentials in n8n

  1. In n8n, click on **Credentials** in the left sidebar
  2. Click **Add Credential**
  3. Search for "DocuSeal" and select **DocuSeal API**
  4. Fill in the following fields:
     - **API Key** – your generated API key
     - **Server** – choose between *Global Server* or *Europe Server*
  5. Click **Save**

  ### Authentication Methods

  This node supports two authentication methods:

  - **Access Token** (recommended) - Use your API key directly
  - **OAuth2** - For more secure integrations (requires app setup)

  ## Compatibility

  - **n8n** version `0.187.0` or later
  - **Node.js** version `18.10` or later

  ## Usage Examples

  ### Example 1: Automated Contract Signing

  Send contracts for signing whenever a new deal is created in your CRM:

  1. **Trigger**: CRM Trigger (e.g., HubSpot, Salesforce)
  2. **DocuSeal Node**: Create Submission
     - Template: "Sales Contract"
     - Signer Email: `{{$json.contact_email}}`
     - Pre-fill fields with deal data
  3. **Slack Node**: Notify sales team

  ### Example 2: Onboarding Automation

  Automatically send onboarding documents to new employees:

  1. **Trigger**: HR System Webhook
  2. **DocuSeal Node**: Create Submission From DOCX
     - Upload employee handbook
     - Variables: Employee name, start date, department
     - Signers: New employee + HR manager
  3. **Email Node**: Send welcome email with signing link

  ### Example 3: Document Archive Workflow

  Archive completed documents automatically:

  1. **DocuSeal Trigger**: Submission Completed
  2. **HTTP Request Node**: Download signed PDF
  3. **Google Drive Node**: Upload to archive folder
  4. **Database Node**: Update records with document URL

  ### Example 4: Multi-Party Signing

  Send documents requiring multiple signatures in sequence:

  1. **Google Sheets Trigger**: New row in contracts sheet
  2. **DocuSeal Node**: Create Submission
     - Signers Order: "Preserved"
     - Signer 1: Client
     - Signer 2: Account Manager
     - Signer 3: Legal Team
  3. **Slack Node**: Notify when all parties sign

  ## Advanced Features

  ### Pre-filling Form Fields

  You can pre-fill form fields in your templates using the `Values` parameter in submitters:

  ```json
  {
    "field": "Company Name",
    "value": "{{$json.company}}"
  }
  ```

  ### Custom Email Notifications

  Customize the email sent to signers:

  - **Email Subject**: Your custom subject line
  - **Email Body**: Your custom message (supports plain text)
  - **Reply-To**: Set a custom reply-to address
  - **BCC**: Add BCC recipients for completed documents

  ### Metadata and External IDs

  Track your documents by adding:

  - **External ID**: Your internal reference ID
  - **Metadata**: Custom key-value pairs for additional data

  ### Expiration Dates

  Set expiration dates for signature requests:
  - After expiration, the signing link becomes unavailable
  - Use ISO 8601 format: `2025-12-31T23:59:59Z`

  ## Troubleshooting

  ### 🧩 Common Issues

  #### 🔑 Invalid API Key error
  **Solution:** Verify your API key is correct and matches the selected server (Global/Europe)

  #### 📄 Template not found
  **Solution:** Ensure the template exists in your DocuSeal account and is not archived

  #### 🌐 Webhook not triggering
  **Solution:** Check that your n8n instance is publicly accessible and the webhook is properly registered

  #### 📚 Documents not merging
  **Solution:** Verify that all documents are valid PDFs or DOCX files and properly encoded

  ### Getting Help

  If you encounter issues:

  1. Check the [DocuSeal API documentation](https://www.docuseal.com/docs/api)
  2. Visit the [n8n community forum](https://community.n8n.io/)
  3. Open an issue on [GitHub](https://github.com/docusealco/n8n-nodes-docuseal/issues)

  ## Resources

  - [DocuSeal Website](https://www.docuseal.com)
  - [DocuSeal API Reference](https://www.docuseal.com/docs/api)
  - [DocuSeal Webhooks Documentation](https://www.docuseal.com/docs/api#form-webhook)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Community Forum](https://community.n8n.io/)

  ## Support

  - 📧 Email: support@docuseal.com
  - 💬 Community: [n8n Community Forum](https://community.n8n.io/)
  - 🐛 Issues: [GitHub Issues](https://github.com/docusealco/n8n-nodes-docuseal/issues)

  ## License

  [MIT](https://github.com/docusealco/n8n-nodes-docuseal/blob/main/LICENSE.md)

ai_documentation_summary:
  {"purpose":"The DocuSeal Trigger node listens for webhook events from DocuSeal document signing platform to automate workflows upon signature completion or form submission.","capabilities":["Triggers on single signer form completion","Triggers on full submission completion","Integrates with n8n workflows for post-signing automation","Supports multiple DocuSeal event types"],"authentication":"API key required (Access Token) or OAuth2","commonUseCases":["Send notifications to internal teams when documents are signed","Update CRM records with signed document status","Archive completed documents automatically","Generate invoices or contracts upon signature completion","Trigger follow-up workflows after signing"],"limitations":["Requires separate DocuSeal API key setup","Requires n8n version 0.187.0 or later","Requires Node.js version 18.10 or later"],"relatedNodes":["DocuSeal Node","HTTP Request Node","Google Drive Node","Database Node","Slack Node"]}


node_type: n8n-nodes-deapi.deapiTrigger
package_name: n8n-nodes-deapi
display_name: deAPI Trigger
description: Triggers workflows based on the status of the generation job from deAPI.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: deapi
author_github_url: https://github.com/deapi-ai/
npm_package_name: n8n-nodes-deapi
npm_version: 0.2.0
community_fetched_at: 2026-03-25T21:19:40.535Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  ![Banner image](https://github.com/user-attachments/assets/398eeb5d-cbf7-452c-96ae-825850c32730)

  # n8n-nodes-deapi

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-deapi.svg)](https://www.npmjs.com/package/n8n-nodes-deapi)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

  This is an n8n community node that lets you use [deAPI](https://deapi.ai/) in your n8n workflows.

  deAPI is a unified API platform providing instant access to open-source AI models (FLUX, LTX Video, Whisper and more) through a decentralized GPU network. One API key to access thousands of GPUs with up to 20x lower costs.

  [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.

  ## Credentials

  To use this node, you need to configure the following credentials:

  | Field | Description |
  |-------|-------------|
  | **API Key** | Your deAPI API key. Get it from the [deAPI Quickstart Guide](https://docs.deapi.ai/quickstart#2-obtain-your-api-key). |
  | **Webhook Secret** | Secret used to verify webhook signatures. Configure it at [deAPI Webhook Settings](https://deapi.ai/settings/webhooks). |

  ## Operations

  ### Image

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Generate** | Generate an image from a text prompt | FLUX.1 Schnell, FLUX.2 Klein 4B, Z-Image Turbo |
  | **Remove Background** | Remove the background from an image | Ben2 |
  | **Upscale** | Increase image resolution by 4x | RealESRGAN x4 |

  ### Video

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Generate** | Generate a video from text or image(s) | LTX-Video 0.9.8, LTX-2 19B, LTX-2.3 22B |
  | **Generate From Audio** | Generate a video conditioned on an audio file and text prompt | LTX-2 22B |
  | **Transcribe** | Transcribe video to text (YouTube, Twitch, X, Kick URLs or file upload) | Whisper Large V3 |

  ### Audio

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Clone a Voice** | Clone a voice from a reference audio and generate speech | Qwen3 TTS VoiceClone |
  | **Generate a Speech** | Convert text to speech audio | Kokoro, Chatterbox, Qwen3 TTS Custom Voice, Qwen3 TTS Voice Design |
  | **Transcribe** | Transcribe audio file to text | Whisper Large V3 |

  ### Prompt

  | Operation | Description |
  |-----------|-------------|
  | **Image Prompt Booster** | Optimize a prompt for text-to-image generation |
  | **Video Prompt Booster** | Optimize a prompt for text/image-to-video generation |

  ## How It Works

  Generation operations (image, video, transcription) use a webhook-based waiting pattern:

  1. The node submits a generation request to deAPI with a webhook URL
  2. The workflow pauses while deAPI processes the request
  3. When deAPI completes the job, it sends a webhook notification
  4. The workflow resumes with the generated content (binary file or text)

  This approach ensures efficient resource usage - the workflow doesn't actively poll for results.

  ## Compatibility

  - Tested with n8n version 2.3.4
  - Webhook-based operations require n8n to be accessible via HTTPS

  ## Example Workflow

  An example n8n workflow demonstrating all available operations is included in [`examples/deAPI_guide.json`](examples/deAPI_guide.json). Import it into your n8n instance to get started quickly:

  1. Download [`deAPI_guide.json`](https://raw.githubusercontent.com/deapi-ai/n8n-nodes-deapi/main/examples/deAPI_guide.json) from the GitHub repository
  2. In n8n, go to **Workflows** > **Import from File**
  3. Select the downloaded `deAPI_guide.json`
  4. Set up your deAPI credentials (API Key + Webhook Secret)
  5. Explore the example nodes and sticky notes for usage instructions

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [deAPI Documentation](https://docs.deapi.ai/)
  - [deAPI Website](https://deapi.ai/)
  - [GitHub Repository](https://github.com/deapi-ai/n8n-nodes-deapi)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows based on the completion status of generation jobs (image, video, audio) submitted to the deAPI platform.","capabilities":["Image generation (FLUX models, Z-Image Turbo)","Background removal (Ben2)","Image upscaling (RealESRGAN x4)","Video generation from text or images (LTX-Video, LTX-2)","Video generation from audio and text (LTX-2)","Audio transcription from video URLs or files (Whisper)","Voice cloning for speech generation (Qwen3 TTS)","Text-to-speech generation (Kokoro, Chatterbox, Qwen3 TTS)","Audio transcription from files (Whisper)","Image prompt optimization"],"authentication":"API key required (deAPI API Key) and Webhook Secret","commonUseCases":["Automated content creation workflows using open-source AI models","Cost-effective image and video generation pipelines","Audio transcription and voice cloning automation","Prompt optimization for better AI generation results"],"limitations":["Requires n8n to be accessible via HTTPS for webhook-based operations","Tested only with n8n version 2.3.4","Webhook-based waiting pattern may introduce latency during job processing"],"relatedNodes":["n8n-nodes-deapi.deapiImage","n8n-nodes-deapi.deapiVideo","n8n-nodes-deapi.deapiAudio","n8n-nodes-deapi.deapiPrompt"]}


node_type: @watchflow/n8n-nodes-watchflow.watchflow
package_name: @watchflow/n8n-nodes-watchflow
display_name: Watchflow
description: Heartbeat monitoring for your cron jobs and scheduled tasks.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: henriklippke
author_github_url: https://github.com/watchflow/n8n-nodes-watchflow.git
npm_package_name: @watchflow/n8n-nodes-watchflow
npm_version: 0.5.0
community_fetched_at: 2026-03-25T21:19:40.535Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "heartbeat",
      "options": [
        {
          "name": "Heartbeat",
          "value": "heartbeat"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ping",
      "options": [
        {
          "name": "Ping",
          "value": "ping",
          "action": "Mark job as successful",
          "description": "Simple ping to mark job as successful"
        },
        {
          "name": "Start",
          "value": "start",
          "action": "Start job tracking",
          "description": "Start job tracking for duration measurement"
        },
        {
          "name": "Error",
          "value": "fail",
          "action": "Mark job as failed",
          "description": "Mark job as failed with error message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "heartbeat"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"ping","name":"Ping","description":"Simple ping to mark job as successful","resource":"heartbeat"},{"operation":"start","name":"Start","description":"Start job tracking for duration measurement","resource":"heartbeat"},{"operation":"fail","name":"Error","description":"Mark job as failed with error message","resource":"heartbeat"}]

npm_readme:
  # @watchflow/n8n-nodes-watchflow

  This is an n8n community node for [Watchflow.io](https://www.watchflow.io/). It allows you to send heartbeats from your n8n workflows to monitor their health and execution time.

  ## Installation

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

  ## Credentials

  To use this node, you'll need a Watchflow API Key. You can get one from the [Watchflow Dashboard](https://app.watchflow.io).

  ## Resources & Operations

  ### Heartbeat

  Monitor your scheduled tasks and cron jobs.

  #### Operations:
  - **Ping**: Simple heartbeat successful notification. Marks the job as successful.
  - **Start**: Signal the start of a job. Use this at the beginning of a workflow to track execution duration.
  - **Error**: Signal a job failure. Marks the job as failed and allows you to provide an error message.

  #### Parameters:
  - **Monitor Key**: A unique identifier for your monitor (e.g., `daily-backup`).
  - **Monitor Name**: A human-readable name for your monitor.
  - **Interval**: Expected heartbeat interval (e.g., `5m`, `1h`, `24h`).
  - **Additional Data**: Custom metrics or metadata as a JSON object.
  - **Error Message**: Description of why the job failed (only for Error operation).

  ## Local Development

  See [LOCAL-DEVELOPMENT.md](./LOCAL-DEVELOPMENT.md) for instructions on how to run and test this node locally using Docker.

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node sends heartbeats to Watchflow.io to monitor the health, execution time, and status of scheduled tasks and cron jobs.","capabilities":["Send heartbeat notifications for job monitoring","Mark jobs as successful via Ping operation","Track job execution duration via Start operation","Report job failures with custom error messages via Error operation","Attach custom metrics and metadata as JSON objects","Configure heartbeat intervals (e.g., 5m, 1h, 24h)"],"authentication":"API key required (Watchflow API Key from Dashboard)","commonUseCases":["Monitoring cron job health","Tracking scheduled task execution time","Alerting on workflow failures","Custom metric collection for automated processes"],"limitations":[],"relatedNodes":[]}


node_type: @ionos-cloud/n8n-nodes-ionos-cloud.ionosCloudCloudApi
package_name: @ionos-cloud/n8n-nodes-ionos-cloud
display_name: IONOS Cloud (Infrastructure)
description: Manage IONOS Cloud infrastructure resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: rijeshharidas
author_github_url: https://github.com/ionos-cloud/n8n-nodes-ionos-cloud.git
npm_package_name: @ionos-cloud/n8n-nodes-ionos-cloud
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.536Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "datacenter",
      "options": [
        {
          "name": "Contract",
          "value": "contract"
        },
        {
          "name": "Location",
          "value": "location"
        },
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "IP Block",
          "value": "ipBlock"
        },
        {
          "name": "Request",
          "value": "request"
        },
        {
          "name": "Datacenter",
          "value": "datacenter"
        },
        {
          "name": "LAN",
          "value": "lan"
        },
        {
          "name": "Server",
          "value": "server"
        },
        {
          "name": "Volume",
          "value": "volume"
        },
        {
          "name": "Snapshot",
          "value": "snapshot"
        },
        {
          "name": "NIC",
          "value": "nic"
        },
        {
          "name": "Firewall Rule",
          "value": "firewallRule"
        },
        {
          "name": "Kubernetes Cluster",
          "value": "k8s"
        },
        {
          "name": "Node Pool",
          "value": "nodePool"
        },
        {
          "name": "Private Cross-Connect",
          "value": "pcc"
        },
        {
          "name": "Load Balancer",
          "value": "loadBalancer"
        },
        {
          "name": "Network Load Balancer",
          "value": "networkLoadBalancer"
        },
        {
          "name": "Application Load Balancer",
          "value": "applicationLoadBalancer"
        },
        {
          "name": "Target Group",
          "value": "targetGroup"
        },
        {
          "name": "NAT Gateway",
          "value": "natGateway"
        },
        {
          "name": "Security Group",
          "value": "securityGroup"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get contracts",
          "routing": {
            "request": {
              "url": "/contracts",
              "method": "GET"
            }
          },
          "description": "Get contract information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a location",
          "routing": {
            "request": {
              "url": "=/locations/{{$parameter.regionId}}/{{$parameter.locationId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a specific location"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get locations",
          "routing": {
            "request": {
              "url": "/locations?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many available locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "location"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image",
          "routing": {
            "request": {
              "url": "=/images/{{$parameter.imageId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of an image"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get images",
          "routing": {
            "request": {
              "url": "/images?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many available images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an IP block",
          "routing": {
            "request": {
              "url": "/ipblocks",
              "method": "POST"
            }
          },
          "description": "Reserve a new IP block"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an IP block",
          "routing": {
            "request": {
              "url": "=/ipblocks/{{$parameter.ipBlockId}}",
              "method": "DELETE"
            }
          },
          "description": "Release an IP block"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an IP block",
          "routing": {
            "request": {
              "url": "=/ipblocks/{{$parameter.ipBlockId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of an IP block"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get IP blocks",
          "routing": {
            "request": {
              "url": "/ipblocks?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many reserved IP blocks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ipBlock"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a request",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Retrieve a specific request"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many requests",
          "routing": {
            "request": {
              "url": "/requests",
              "method": "GET"
            }
          },
          "description": "List many API requests"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get request status",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Retrieve the status of a request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "request"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a datacenter",
          "routing": {
            "request": {
              "url": "/datacenters",
              "method": "POST"
            }
          },
          "description": "Create a new datacenter"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a datacenter",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a datacenter"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a datacenter",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single datacenter"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get datacenters",
          "routing": {
            "request": {
              "url": "/datacenters?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many datacenters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a datacenter",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}",
              "method": "PUT"
            }
          },
          "description": "Update the properties of a datacenter"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datacenter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans",
              "method": "POST"
            }
          },
          "description": "Create a new LAN"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a LAN"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a LAN"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many lans",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many LANs within a datacenter"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
              "method": "PUT"
            }
          },
          "description": "Update LAN properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Attach CDROM",
          "value": "attachCdrom",
          "action": "Attach CDROM to server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms",
              "method": "POST"
            }
          },
          "description": "Attach a CDROM image to server"
        },
        {
          "name": "Attach Volume",
          "value": "attachVolume",
          "action": "Attach volume to server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes",
              "method": "POST"
            }
          },
          "description": "Attach an existing volume to server"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers",
              "method": "POST"
            }
          },
          "description": "Create a new server"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a server"
        },
        {
          "name": "Detach CDROM",
          "value": "detachCdrom",
          "action": "Detach CDROM from server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms/{{$parameter.cdromId}}",
              "method": "DELETE"
            }
          },
          "description": "Detach a CDROM from server"
        },
        {
          "name": "Detach Volume",
          "value": "detachVolume",
          "action": "Detach volume from server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes/{{$parameter.volumeId}}",
              "method": "DELETE"
            }
          },
          "description": "Detach a volume from server"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single server"
        },
        {
          "name": "Get CDROM",
          "value": "getCdrom",
          "action": "Get attached CDROM",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms/{{$parameter.cdromId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific attached CDROM"
        },
        {
          "name": "Get CDROMs",
          "value": "getCdroms",
          "action": "Get attached cdro ms",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms",
              "method": "GET"
            }
          },
          "description": "List all CDROMs attached to server"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get servers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many servers within a specific data center"
        },
        {
          "name": "Get Remote Console",
          "value": "getRemoteConsole",
          "action": "Get remote console URL",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/remoteconsole",
              "method": "GET"
            }
          },
          "description": "Get remote console access URL"
        },
        {
          "name": "Get Token",
          "value": "getToken",
          "action": "Get server token",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/token",
              "method": "GET"
            }
          },
          "description": "Get JSON Web Token for server access"
        },
        {
          "name": "Get Volume",
          "value": "getVolume",
          "action": "Get attached volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes/{{$parameter.volumeId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific attached volume"
        },
        {
          "name": "Get Volumes",
          "value": "getVolumes",
          "action": "Get attached volumes",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes",
              "method": "GET"
            }
          },
          "description": "List all volumes attached to server"
        },
        {
          "name": "Reboot",
          "value": "reboot",
          "action": "Reboot a  server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/reboot",
              "method": "POST"
            }
          },
          "description": "Reboot a server"
        },
        {
          "name": "Resume",
          "value": "resume",
          "action": "Resume a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/resume",
              "method": "POST"
            }
          },
          "description": "Resume a suspended Cube server"
        },
        {
          "name": "Start",
          "value": "start",
          "action": "Start a  server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/start",
              "method": "POST"
            }
          },
          "description": "Start a server"
        },
        {
          "name": "Stop",
          "value": "stop",
          "action": "Stop a  server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/stop",
              "method": "POST"
            }
          },
          "description": "Stop a server"
        },
        {
          "name": "Suspend",
          "value": "suspend",
          "action": "Suspend a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/suspend",
              "method": "POST"
            }
          },
          "description": "Suspend a Cube server"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
              "method": "PUT"
            }
          },
          "description": "Update a server"
        },
        {
          "name": "Upgrade",
          "value": "upgrade",
          "action": "Upgrade a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/upgrade",
              "method": "POST"
            }
          },
          "description": "Upgrade a server to a newer generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "server"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes",
              "method": "POST"
            }
          },
          "description": "Create a new volume"
        },
        {
          "name": "Create Snapshot",
          "value": "createSnapshot",
          "action": "Create a volume snapshot",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}/create-snapshot",
              "method": "POST"
            }
          },
          "description": "Create a snapshot of a volume"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a volume"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single volume"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get volumes",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many volumes within a datacenter"
        },
        {
          "name": "Restore Snapshot",
          "value": "restoreSnapshot",
          "action": "Restore volume from snapshot",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}/restore-snapshot",
              "method": "POST"
            }
          },
          "description": "Restore a volume from a snapshot"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
              "method": "PUT"
            }
          },
          "description": "Update volume properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "volume"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a snapshot",
          "routing": {
            "request": {
              "url": "=/snapshots/{{$parameter.snapshotId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a snapshot"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a snapshot",
          "routing": {
            "request": {
              "url": "=/snapshots/{{$parameter.snapshotId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single snapshot"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get snapshots",
          "routing": {
            "request": {
              "url": "/snapshots?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many available snapshots"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a snapshot",
          "routing": {
            "request": {
              "url": "=/snapshots/{{$parameter.snapshotId}}",
              "method": "PUT"
            }
          },
          "description": "Update snapshot properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "snapshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics",
              "method": "POST"
            }
          },
          "description": "Create a new network interface"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a network interface"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a network interface"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many nics",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many network interfaces of a server"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}",
              "method": "PUT"
            }
          },
          "description": "Update network interface properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nic"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules",
              "method": "POST"
            }
          },
          "description": "Create a new firewall rule"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a firewall rule"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a firewall rule"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get firewall rules",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many firewall rules for a NIC"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}",
              "method": "PUT"
            }
          },
          "description": "Update firewall rule properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "firewallRule"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a kubernetes cluster",
          "routing": {
            "request": {
              "url": "/k8s",
              "method": "POST"
            }
          },
          "description": "Create a new Kubernetes cluster"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a kubernetes cluster",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Kubernetes cluster"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a kubernetes cluster",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a Kubernetes cluster"
        },
        {
          "name": "Get Kubeconfig",
          "value": "getKubeconfig",
          "action": "Get kubernetes configuration",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}/kubeconfig",
              "method": "GET"
            }
          },
          "description": "Get the kubeconfig file for a cluster"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many kubernetes clusters",
          "routing": {
            "request": {
              "url": "/k8s?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many Kubernetes clusters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a kubernetes cluster",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}",
              "method": "PUT"
            }
          },
          "description": "Update Kubernetes cluster properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "k8s"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
              "method": "POST"
            }
          },
          "description": "Create a node pool"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a node pool"
        },
        {
          "name": "Delete Node",
          "value": "deleteNode",
          "action": "Delete a node from a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a node from a node pool"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a node pool"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many node pools",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
              "method": "GET"
            }
          },
          "description": "Get many node pools"
        },
        {
          "name": "Get Node",
          "value": "getNode",
          "action": "Get a node in a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific node in a node pool"
        },
        {
          "name": "Get Nodes",
          "value": "getNodes",
          "action": "Get nodes in a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes",
              "method": "GET"
            }
          },
          "description": "Get all nodes in a node pool"
        },
        {
          "name": "Replace Node",
          "value": "replaceNode",
          "action": "Replace a node in a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}/replace",
              "method": "POST"
            }
          },
          "description": "Recreate a node in a node pool"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update a node pool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nodePool"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a private cross connect",
          "routing": {
            "request": {
              "url": "/pccs",
              "method": "POST"
            }
          },
          "description": "Create a new Private Cross-Connect"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a private cross connect",
          "routing": {
            "request": {
              "url": "=/pccs/{{$parameter.pccId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Private Cross-Connect"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a private cross connect",
          "routing": {
            "request": {
              "url": "=/pccs/{{$parameter.pccId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a Private Cross-Connect"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many private cross connects",
          "routing": {
            "request": {
              "url": "/pccs?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many Private Cross-Connects"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a private cross connect",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/pccs/{{$parameter.pccId}}",
              "method": "PATCH"
            }
          },
          "description": "Update Private Cross-Connect properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pcc"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Attach NIC",
          "value": "attachNic",
          "action": "Attach NIC to load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics",
              "method": "POST"
            }
          },
          "description": "Attach a NIC to load balancer"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
              "method": "POST"
            }
          },
          "description": "Create a Load Balancer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Load Balancer"
        },
        {
          "name": "Detach NIC",
          "value": "detachNic",
          "action": "Detach NIC from load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics/{{$parameter[\"nicId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Detach a NIC from load balancer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a Load Balancer"
        },
        {
          "name": "Get Balanced NIC",
          "value": "getBalancedNic",
          "action": "Get a balanced NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics/{{$parameter[\"nicId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a balanced NIC"
        },
        {
          "name": "Get Balanced NICs",
          "value": "getBalancedNics",
          "action": "Get balanced nics",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics",
              "method": "GET"
            }
          },
          "description": "List balanced NICs"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many load balancers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
              "method": "GET"
            }
          },
          "description": "Get many Load Balancers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update a Load Balancer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "loadBalancer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers",
              "method": "POST"
            }
          },
          "description": "Create a Network Load Balancer"
        },
        {
          "name": "Create Flow Log",
          "value": "createFlowLog",
          "action": "Create a flow log for a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs",
              "method": "POST"
            }
          },
          "description": "Create a flow log for a Network Load Balancer"
        },
        {
          "name": "Create Forwarding Rule",
          "value": "createForwardingRule",
          "action": "Create a forwarding rule for a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules",
              "method": "POST"
            }
          },
          "description": "Create a forwarding rule for a Network Load Balancer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Network Load Balancer"
        },
        {
          "name": "Delete Flow Log",
          "value": "deleteFlowLog",
          "action": "Delete a flow log from a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a flow log from a Network Load Balancer"
        },
        {
          "name": "Delete Forwarding Rule",
          "value": "deleteForwardingRule",
          "action": "Delete a forwarding rule from a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a forwarding rule from a Network Load Balancer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a Network Load Balancer"
        },
        {
          "name": "Get Flow Log",
          "value": "getFlowLog",
          "action": "Get a flow log of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific flow log of a Network Load Balancer"
        },
        {
          "name": "Get Flow Logs",
          "value": "getFlowLogs",
          "action": "Get flow logs of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs",
              "method": "GET"
            }
          },
          "description": "Get all flow logs of a Network Load Balancer"
        },
        {
          "name": "Get Forwarding Rule",
          "value": "getForwardingRule",
          "action": "Get a forwarding rule of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific forwarding rule of a Network Load Balancer"
        },
        {
          "name": "Get Forwarding Rules",
          "value": "getForwardingRules",
          "action": "Get forwarding rules of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules",
              "method": "GET"
            }
          },
          "description": "Get all forwarding rules of a Network Load Balancer"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many network load balancers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers",
              "method": "GET"
            }
          },
          "description": "Get many Network Load Balancers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update a Network Load Balancer"
        },
        {
          "name": "Update Flow Log",
          "value": "updateFlowLog",
          "action": "Update a flow log of a network load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a flow log of a Network Load Balancer"
        },
        {
          "name": "Update Forwarding Rule",
          "value": "updateForwardingRule",
          "action": "Update a forwarding rule of a network load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a forwarding rule of a Network Load Balancer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "networkLoadBalancer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers",
              "method": "POST"
            }
          },
          "description": "Create an Application Load Balancer"
        },
        {
          "name": "Create Flow Log",
          "value": "createFlowLog",
          "action": "Create a flow log for an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs",
              "method": "POST"
            }
          },
          "description": "Create a flow log for an Application Load Balancer"
        },
        {
          "name": "Create Forwarding Rule",
          "value": "createForwardingRule",
          "action": "Create a forwarding rule for an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules",
              "method": "POST"
            }
          },
          "description": "Create a forwarding rule for an Application Load Balancer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an Application Load Balancer"
        },
        {
          "name": "Delete Flow Log",
          "value": "deleteFlowLog",
          "action": "Delete a flow log from an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a flow log from an Application Load Balancer"
        },
        {
          "name": "Delete Forwarding Rule",
          "value": "deleteForwardingRule",
          "action": "Delete a forwarding rule from an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a forwarding rule from an Application Load Balancer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get an Application Load Balancer"
        },
        {
          "name": "Get Flow Log",
          "value": "getFlowLog",
          "action": "Get a flow log of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific flow log of an Application Load Balancer"
        },
        {
          "name": "Get Flow Logs",
          "value": "getFlowLogs",
          "action": "Get flow logs of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs",
              "method": "GET"
            }
          },
          "description": "Get all flow logs of an Application Load Balancer"
        },
        {
          "name": "Get Forwarding Rule",
          "value": "getForwardingRule",
          "action": "Get a forwarding rule of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific forwarding rule of an Application Load Balancer"
        },
        {
          "name": "Get Forwarding Rules",
          "value": "getForwardingRules",
          "action": "Get forwarding rules of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules",
              "method": "GET"
            }
          },
          "description": "Get all forwarding rules of an Application Load Balancer"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many application load balancers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers",
              "method": "GET"
            }
          },
          "description": "Get many Application Load Balancers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an Application Load Balancer"
        },
        {
          "name": "Update Flow Log",
          "value": "updateFlowLog",
          "action": "Update a flow log of an application load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a flow log of an Application Load Balancer"
        },
        {
          "name": "Update Forwarding Rule",
          "value": "updateForwardingRule",
          "action": "Update a forwarding rule of an application load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a forwarding rule of an Application Load Balancer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "applicationLoadBalancer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a target group",
          "routing": {
            "request": {
              "url": "=/targetgroups",
              "method": "POST"
            }
          },
          "description": "Create a target group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a target group",
          "routing": {
            "request": {
              "url": "=/targetgroups/{{$parameter.targetGroupId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a target group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a target group",
          "routing": {
            "request": {
              "url": "=/targetgroups/{{$parameter.targetGroupId}}",
              "method": "GET"
            }
          },
          "description": "Get a target group"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many target groups",
          "routing": {
            "request": {
              "url": "=/targetgroups",
              "method": "GET"
            }
          },
          "description": "Get many target groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a target group",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/targetgroups/{{$parameter.targetGroupId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a target group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "targetGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways",
              "method": "POST"
            }
          },
          "description": "Create a new NAT Gateway"
        },
        {
          "name": "Create Flow Log",
          "value": "createFlowLog",
          "action": "Create a flow log for a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs",
              "method": "POST"
            }
          },
          "description": "Create a NAT Gateway flow log"
        },
        {
          "name": "Create Rule",
          "value": "createRule",
          "action": "Create a rule for a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules",
              "method": "POST"
            }
          },
          "description": "Create a NAT Gateway rule"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a NAT Gateway"
        },
        {
          "name": "Delete Flow Log",
          "value": "deleteFlowLog",
          "action": "Delete a flow log from a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a NAT Gateway flow log"
        },
        {
          "name": "Delete Rule",
          "value": "deleteRule",
          "action": "Delete a rule from a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a NAT Gateway rule"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a NAT Gateway"
        },
        {
          "name": "Get Flow Log",
          "value": "getFlowLog",
          "action": "Get a flow log of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific NAT Gateway flow log"
        },
        {
          "name": "Get Flow Logs",
          "value": "getFlowLogs",
          "action": "Get flow logs of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs",
              "method": "GET"
            }
          },
          "description": "Get all NAT Gateway flow logs"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many NAT gateways",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many NAT Gateways within a datacenter"
        },
        {
          "name": "Get Rule",
          "value": "getRule",
          "action": "Get a rule of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific NAT Gateway rule"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get rules of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules",
              "method": "GET"
            }
          },
          "description": "Get all NAT Gateway rules"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}",
              "method": "PUT"
            }
          },
          "description": "Update NAT Gateway properties"
        },
        {
          "name": "Update Flow Log",
          "value": "updateFlowLog",
          "action": "Update a flow log of a NAT gateway",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a NAT Gateway flow log"
        },
        {
          "name": "Update Rule",
          "value": "updateRule",
          "action": "Update a rule of a NAT gateway",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a NAT Gateway rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "natGateway"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups",
              "method": "POST"
            }
          },
          "description": "Create a new security group"
        },
        {
          "name": "Create Rule",
          "value": "createRule",
          "action": "Create a security group rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules",
              "method": "POST"
            }
          },
          "description": "Create a new rule in a security group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a security group"
        },
        {
          "name": "Delete Rule",
          "value": "deleteRule",
          "action": "Delete a security group rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a rule from a security group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a security group"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get security groups",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many security groups within a datacenter"
        },
        {
          "name": "Get Rule",
          "value": "getRule",
          "action": "Get a security group rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
              "method": "GET"
            }
          },
          "description": "Get properties of a specific rule"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get security group rules",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules",
              "method": "GET"
            }
          },
          "description": "List all rules in a security group"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}",
              "method": "PUT"
            }
          },
          "description": "Update security group properties"
        },
        {
          "name": "Update Rule",
          "value": "updateRule",
          "action": "Update a security group rule",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a rule in a security group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "securityGroup"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"getAll","name":"Get Many","description":"Get contract information","resource":"contract"},{"operation":"get","name":"Get","description":"Get the properties of a specific location","resource":"location"},{"operation":"getAll","name":"Get Many","description":"Get many available locations","resource":"location"},{"operation":"get","name":"Get","description":"Get the properties of an image","resource":"image"},{"operation":"getAll","name":"Get Many","description":"Get many available images","resource":"image"},{"operation":"create","name":"Create","description":"Reserve a new IP block","resource":"ipBlock"},{"operation":"delete","name":"Delete","description":"Release an IP block","resource":"ipBlock"},{"operation":"get","name":"Get","description":"Get the properties of an IP block","resource":"ipBlock"},{"operation":"getAll","name":"Get Many","description":"Get many reserved IP blocks","resource":"ipBlock"},{"operation":"get","name":"Get","description":"Retrieve a specific request","resource":"request"},{"operation":"getAll","name":"Get Many","description":"List many API requests","resource":"request"},{"operation":"getStatus","name":"Get Status","description":"Retrieve the status of a request","resource":"request"},{"operation":"create","name":"Create","description":"Create a new datacenter","resource":"datacenter"},{"operation":"delete","name":"Delete","description":"Delete a datacenter","resource":"datacenter"},{"operation":"get","name":"Get","description":"Get the data of a single datacenter","resource":"datacenter"},{"operation":"getAll","name":"Get Many","description":"Get many datacenters","resource":"datacenter"},{"operation":"update","name":"Update","description":"Update the properties of a datacenter","resource":"datacenter"},{"operation":"create","name":"Create","description":"Create a new LAN","resource":"lan"},{"operation":"delete","name":"Delete","description":"Delete a LAN","resource":"lan"},{"operation":"get","name":"Get","description":"Get the properties of a LAN","resource":"lan"},{"operation":"getAll","name":"Get Many","description":"Get many LANs within a datacenter","resource":"lan"},{"operation":"update","name":"Update","description":"Update LAN properties","resource":"lan"},{"operation":"attachCdrom","name":"Attach CDROM","description":"Attach a CDROM image to server","resource":"server"},{"operation":"attachVolume","name":"Attach Volume","description":"Attach an existing volume to server","resource":"server"},{"operation":"create","name":"Create","description":"Create a new server","resource":"server"},{"operation":"delete","name":"Delete","description":"Delete a server","resource":"server"},{"operation":"detachCdrom","name":"Detach CDROM","description":"Detach a CDROM from server","resource":"server"},{"operation":"detachVolume","name":"Detach Volume","description":"Detach a volume from server","resource":"server"},{"operation":"get","name":"Get","description":"Get the data of a single server","resource":"server"},{"operation":"getCdrom","name":"Get CDROM","description":"Get a specific attached CDROM","resource":"server"},{"operation":"getCdroms","name":"Get CDROMs","description":"List all CDROMs attached to server","resource":"server"},{"operation":"getAll","name":"Get Many","description":"Get many servers within a specific data center","resource":"server"},{"operation":"getRemoteConsole","name":"Get Remote Console","description":"Get remote console access URL","resource":"server"},{"operation":"getToken","name":"Get Token","description":"Get JSON Web Token for server access","resource":"server"},{"operation":"getVolume","name":"Get Volume","description":"Get a specific attached volume","resource":"server"},{"operation":"getVolumes","name":"Get Volumes","description":"List all volumes attached to server","resource":"server"},{"operation":"reboot","name":"Reboot","description":"Reboot a server","resource":"server"},{"operation":"resume","name":"Resume","description":"Resume a suspended Cube server","resource":"server"},{"operation":"start","name":"Start","description":"Start a server","resource":"server"},{"operation":"stop","name":"Stop","description":"Stop a server","resource":"server"},{"operation":"suspend","name":"Suspend","description":"Suspend a Cube server","resource":"server"},{"operation":"update","name":"Update","description":"Update a server","resource":"server"},{"operation":"upgrade","name":"Upgrade","description":"Upgrade a server to a newer generation","resource":"server"},{"operation":"create","name":"Create","description":"Create a new volume","resource":"volume"},{"operation":"createSnapshot","name":"Create Snapshot","description":"Create a snapshot of a volume","resource":"volume"},{"operation":"delete","name":"Delete","description":"Delete a volume","resource":"volume"},{"operation":"get","name":"Get","description":"Get the data of a single volume","resource":"volume"},{"operation":"getAll","name":"Get Many","description":"Get many volumes within a datacenter","resource":"volume"},{"operation":"restoreSnapshot","name":"Restore Snapshot","description":"Restore a volume from a snapshot","resource":"volume"},{"operation":"update","name":"Update","description":"Update volume properties","resource":"volume"},{"operation":"delete","name":"Delete","description":"Delete a snapshot","resource":"snapshot"},{"operation":"get","name":"Get","description":"Get the data of a single snapshot","resource":"snapshot"},{"operation":"getAll","name":"Get Many","description":"Get many available snapshots","resource":"snapshot"},{"operation":"update","name":"Update","description":"Update snapshot properties","resource":"snapshot"},{"operation":"create","name":"Create","description":"Create a new network interface","resource":"nic"},{"operation":"delete","name":"Delete","description":"Delete a network interface","resource":"nic"},{"operation":"get","name":"Get","description":"Get the properties of a network interface","resource":"nic"},{"operation":"getAll","name":"Get Many","description":"Get many network interfaces of a server","resource":"nic"},{"operation":"update","name":"Update","description":"Update network interface properties","resource":"nic"},{"operation":"create","name":"Create","description":"Create a new firewall rule","resource":"firewallRule"},{"operation":"delete","name":"Delete","description":"Delete a firewall rule","resource":"firewallRule"},{"operation":"get","name":"Get","description":"Get the properties of a firewall rule","resource":"firewallRule"},{"operation":"getAll","name":"Get Many","description":"Get many firewall rules for a NIC","resource":"firewallRule"},{"operation":"update","name":"Update","description":"Update firewall rule properties","resource":"firewallRule"},{"operation":"create","name":"Create","description":"Create a new Kubernetes cluster","resource":"k8s"},{"operation":"delete","name":"Delete","description":"Delete a Kubernetes cluster","resource":"k8s"},{"operation":"get","name":"Get","description":"Get the properties of a Kubernetes cluster","resource":"k8s"},{"operation":"getKubeconfig","name":"Get Kubeconfig","description":"Get the kubeconfig file for a cluster","resource":"k8s"},{"operation":"getAll","name":"Get Many","description":"Get many Kubernetes clusters","resource":"k8s"},{"operation":"update","name":"Update","description":"Update Kubernetes cluster properties","resource":"k8s"},{"operation":"create","name":"Create","description":"Create a node pool","resource":"nodePool"},{"operation":"delete","name":"Delete","description":"Delete a node pool","resource":"nodePool"},{"operation":"deleteNode","name":"Delete Node","description":"Delete a node from a node pool","resource":"nodePool"},{"operation":"get","name":"Get","description":"Get a node pool","resource":"nodePool"},{"operation":"getAll","name":"Get Many","description":"Get many node pools","resource":"nodePool"},{"operation":"getNode","name":"Get Node","description":"Get a specific node in a node pool","resource":"nodePool"},{"operation":"getNodes","name":"Get Nodes","description":"Get all nodes in a node pool","resource":"nodePool"},{"operation":"replaceNode","name":"Replace Node","description":"Recreate a node in a node pool","resource":"nodePool"},{"operation":"update","name":"Update","description":"Update a node pool","resource":"nodePool"},{"operation":"create","name":"Create","description":"Create a new Private Cross-Connect","resource":"pcc"},{"operation":"delete","name":"Delete","description":"Delete a Private Cross-Connect","resource":"pcc"},{"operation":"get","name":"Get","description":"Get the properties of a Private Cross-Connect","resource":"pcc"},{"operation":"getAll","name":"Get Many","description":"Get many Private Cross-Connects","resource":"pcc"},{"operation":"update","name":"Update","description":"Update Private Cross-Connect properties","resource":"pcc"},{"operation":"attachNic","name":"Attach NIC","description":"Attach a NIC to load balancer","resource":"loadBalancer"},{"operation":"create","name":"Create","description":"Create a Load Balancer","resource":"loadBalancer"},{"operation":"delete","name":"Delete","description":"Delete a Load Balancer","resource":"loadBalancer"},{"operation":"detachNic","name":"Detach NIC","description":"Detach a NIC from load balancer","resource":"loadBalancer"},{"operation":"get","name":"Get","description":"Get a Load Balancer","resource":"loadBalancer"},{"operation":"getBalancedNic","name":"Get Balanced NIC","description":"Get a balanced NIC","resource":"loadBalancer"},{"operation":"getBalancedNics","name":"Get Balanced NICs","description":"List balanced NICs","resource":"loadBalancer"},{"operation":"getAll","name":"Get Many","description":"Get many Load Balancers","resource":"loadBalancer"},{"operation":"update","name":"Update","description":"Update a Load Balancer","resource":"loadBalancer"},{"operation":"create","name":"Create","description":"Create a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"createFlowLog","name":"Create Flow Log","description":"Create a flow log for a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"createForwardingRule","name":"Create Forwarding Rule","description":"Create a forwarding rule for a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"delete","name":"Delete","description":"Delete a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"deleteFlowLog","name":"Delete Flow Log","description":"Delete a flow log from a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"deleteForwardingRule","name":"Delete Forwarding Rule","description":"Delete a forwarding rule from a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"get","name":"Get","description":"Get a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"getFlowLog","name":"Get Flow Log","description":"Get a specific flow log of a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"getFlowLogs","name":"Get Flow Logs","description":"Get all flow logs of a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"getForwardingRule","name":"Get Forwarding Rule","description":"Get a specific forwarding rule of a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"getForwardingRules","name":"Get Forwarding Rules","description":"Get all forwarding rules of a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"getAll","name":"Get Many","description":"Get many Network Load Balancers","resource":"networkLoadBalancer"},{"operation":"update","name":"Update","description":"Update a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"updateFlowLog","name":"Update Flow Log","description":"Update a flow log of a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"updateForwardingRule","name":"Update Forwarding Rule","description":"Update a forwarding rule of a Network Load Balancer","resource":"networkLoadBalancer"},{"operation":"create","name":"Create","description":"Create an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"createFlowLog","name":"Create Flow Log","description":"Create a flow log for an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"createForwardingRule","name":"Create Forwarding Rule","description":"Create a forwarding rule for an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"delete","name":"Delete","description":"Delete an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"deleteFlowLog","name":"Delete Flow Log","description":"Delete a flow log from an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"deleteForwardingRule","name":"Delete Forwarding Rule","description":"Delete a forwarding rule from an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"get","name":"Get","description":"Get an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"getFlowLog","name":"Get Flow Log","description":"Get a specific flow log of an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"getFlowLogs","name":"Get Flow Logs","description":"Get all flow logs of an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"getForwardingRule","name":"Get Forwarding Rule","description":"Get a specific forwarding rule of an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"getForwardingRules","name":"Get Forwarding Rules","description":"Get all forwarding rules of an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"getAll","name":"Get Many","description":"Get many Application Load Balancers","resource":"applicationLoadBalancer"},{"operation":"update","name":"Update","description":"Update an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"updateFlowLog","name":"Update Flow Log","description":"Update a flow log of an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"updateForwardingRule","name":"Update Forwarding Rule","description":"Update a forwarding rule of an Application Load Balancer","resource":"applicationLoadBalancer"},{"operation":"create","name":"Create","description":"Create a target group","resource":"targetGroup"},{"operation":"delete","name":"Delete","description":"Delete a target group","resource":"targetGroup"},{"operation":"get","name":"Get","description":"Get a target group","resource":"targetGroup"},{"operation":"getMany","name":"Get Many","description":"Get many target groups","resource":"targetGroup"},{"operation":"update","name":"Update","description":"Update a target group","resource":"targetGroup"},{"operation":"create","name":"Create","description":"Create a new NAT Gateway","resource":"natGateway"},{"operation":"createFlowLog","name":"Create Flow Log","description":"Create a NAT Gateway flow log","resource":"natGateway"},{"operation":"createRule","name":"Create Rule","description":"Create a NAT Gateway rule","resource":"natGateway"},{"operation":"delete","name":"Delete","description":"Delete a NAT Gateway","resource":"natGateway"},{"operation":"deleteFlowLog","name":"Delete Flow Log","description":"Delete a NAT Gateway flow log","resource":"natGateway"},{"operation":"deleteRule","name":"Delete Rule","description":"Delete a NAT Gateway rule","resource":"natGateway"},{"operation":"get","name":"Get","description":"Get the properties of a NAT Gateway","resource":"natGateway"},{"operation":"getFlowLog","name":"Get Flow Log","description":"Get a specific NAT Gateway flow log","resource":"natGateway"},{"operation":"getFlowLogs","name":"Get Flow Logs","description":"Get all NAT Gateway flow logs","resource":"natGateway"},{"operation":"getAll","name":"Get Many","description":"Get many NAT Gateways within a datacenter","resource":"natGateway"},{"operation":"getRule","name":"Get Rule","description":"Get a specific NAT Gateway rule","resource":"natGateway"},{"operation":"getRules","name":"Get Rules","description":"Get all NAT Gateway rules","resource":"natGateway"},{"operation":"update","name":"Update","description":"Update NAT Gateway properties","resource":"natGateway"},{"operation":"updateFlowLog","name":"Update Flow Log","description":"Update a NAT Gateway flow log","resource":"natGateway"},{"operation":"updateRule","name":"Update Rule","description":"Update a NAT Gateway rule","resource":"natGateway"},{"operation":"create","name":"Create","description":"Create a new security group","resource":"securityGroup"},{"operation":"createRule","name":"Create Rule","description":"Create a new rule in a security group","resource":"securityGroup"},{"operation":"delete","name":"Delete","description":"Delete a security group","resource":"securityGroup"},{"operation":"deleteRule","name":"Delete Rule","description":"Delete a rule from a security group","resource":"securityGroup"},{"operation":"get","name":"Get","description":"Get the properties of a security group","resource":"securityGroup"},{"operation":"getAll","name":"Get Many","description":"Get many security groups within a datacenter","resource":"securityGroup"},{"operation":"getRule","name":"Get Rule","description":"Get properties of a specific rule","resource":"securityGroup"},{"operation":"getRules","name":"Get Rules","description":"List all rules in a security group","resource":"securityGroup"},{"operation":"update","name":"Update","description":"Update security group properties","resource":"securityGroup"},{"operation":"updateRule","name":"Update Rule","description":"Update a rule in a security group","resource":"securityGroup"}]

npm_readme:
  <div align="center">

  <img src="./credentials/ionos.svg" alt="IONOS Cloud" height="80" />&nbsp;&nbsp;&nbsp;&nbsp;<picture><source media="(prefers-color-scheme: dark)" srcset="https://n8n.io/brandguidelines/logo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://n8n.io/brandguidelines/logo-dark.svg"><img src="https://n8n.io/brandguidelines/logo-dark.svg" alt="n8n" height="80" /></picture>

  # n8n Nodes for IONOS Cloud

  [![npm version](https://img.shields.io/npm/v/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![License](https://img.shields.io/npm/l/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/blob/master/LICENSE)
  [![npm downloads](https://img.shields.io/npm/dm/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![n8n](https://img.shields.io/badge/n8n-community-blue.svg)](https://n8n.io)
  ![Official](https://img.shields.io/badge/IONOS%20Cloud-Official-00BFFF.svg)

  **Official IONOS Cloud n8n community nodes**

  Automate your cloud infrastructure, DNS, CDN, certificates, and AI workflows with [n8n](https://n8n.io/)

  [Installation](#installation) • [Operations](#operations) • [Credentials](#credentials) • [Usage](#usage) • [Examples](#common-patterns) • [Resources](#resources)

  </div>

  ---

  ## Overview

  This is the **official** n8n community node package for IONOS Cloud, developed and maintained by the IONOS Cloud team. [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  The package provides comprehensive integration with key IONOS Cloud services, enabling you to automate infrastructure provisioning, certificate management, DNS operations, CDN distribution, and AI-powered workflows directly from n8n.

  ## Included Nodes

  This package provides seven separate nodes for different IONOS Cloud services:

  1. **IONOS Cloud (Infrastructure)** - Core infrastructure management
  2. **IONOS Cloud (Certificate Manager)** - SSL/TLS certificate management  
  3. **IONOS Cloud (Cloud DNS)** - Domain name system management
  4. **IONOS Cloud (CDN)** - Content delivery network management
  5. **IONOS Cloud (AI Model Hub)** - AI model inference and RAG capabilities
  6. **IONOS Cloud Chat Model** ⚡ - LangChain sub-node for n8n's AI Agent (language model)
  7. **IONOS Cloud Embeddings** ⚡ - LangChain sub-node for n8n's AI Agent (text embeddings)

  ---

  ## Getting Started

  ### Prerequisites

  Before you begin, you will need:

  1. A [IONOS Cloud account](https://www.ionos.com/enterprise-cloud/signup)
  2. A Cloud API Bearer token ([learn how to generate tokens](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager))
  3. n8n installed (version 2.1.5 or higher)

  ### Installation

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

  #### Quick Installation Steps

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@ionos-cloud/n8n-nodes-ionos-cloud` in **Enter npm package name**
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **Note:** After installation, you may need to restart your n8n instance for the new node to be recognized.

  ## Operations

  ### Overview

  | Node | Resources | Operations | Description |
  |------|-----------|------------|-------------|
  | **Infrastructure** | 21 | 153 | Complete infrastructure management (compute, networking, storage, Kubernetes) |
  | **Certificate Manager** | 3 | 15 | SSL/TLS certificate lifecycle management with ACME support |
  | **Cloud DNS** | 7 | 28 | DNS zones, records (15 types), DNSSEC, zone transfers |
  | **CDN** | 2 | 7 | Content delivery with custom routing and geo-restrictions |
  | **AI Model Hub** | 4 | 20 | Foundation model inference, RAG capabilities, and OpenAI-compatible API |
  | **Chat Model** ⚡ | — | supplyData | LangChain chat model sub-node for n8n AI Agent |
  | **Embeddings** ⚡ | — | supplyData | LangChain embeddings sub-node for n8n AI Agent |

  > ⚡ **Sub-nodes**: The Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes (AI Agent, AI Chain, Vector Stores, etc.) rather than operating as standalone workflow nodes.

  > **✨ v1.0.2**: Patch release with enhanced subresource support for load balancers, NAT gateways, security groups, and target groups. Added request monitoring capabilities.


  <details>
  <summary><b>Infrastructure - Detailed Operations</b></summary>

  #### Account & Global Resources (12 operations)
  - **Contract** (1): Get Many
  - **Location** (2): Get, Get Many
  - **Image** (2): Get, Get Many  
  - **IP Block** (4): Create, Delete, Get, Get Many
  - **Request** (3): Get, Get All, Get Status

  #### Core Infrastructure (10 operations)
  - **Datacenter** (5): Create, Delete, Get, Get Many, Update
  - **LAN** (5): Create, Delete, Get, Get Many, Update

  #### Compute Resources (41 operations)
  - **Server** (21): Attach/Detach CDROM/Volume, Create, Delete, Get (+ CDROM/CDROMs/Volume/Volumes/Remote Console/Token), Get Many, Reboot, Resume, Start, Stop, Suspend, Update, Upgrade
  - **Volume** (6): Create, Create Snapshot, Delete, Get, Get Many, Update
  - **Snapshot** (4): Delete, Get, Get Many, Update
  - **NIC** (5): Create, Delete, Get, Get Many, Update
  - **Firewall Rule** (5): Create, Delete, Get, Get Many, Update

  #### Kubernetes (11 operations)
  - **Kubernetes Cluster** (6): Create, Delete, Get, Get Many, Get Kubeconfig, Update
  - **Node Pool** (5): Create, Delete, Get, Get Many, Update

  #### Networking (34 operations)
  - **Private Cross-Connect** (5): Create, Delete, Get, Get Many, Update
  - **Load Balancer** (9): Attach/Detach NIC, Create, Delete, Get (+ Balanced NIC/NICs), Get Many, Update
  - **Network Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources
  - **Application Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources with HTTP rules
  - **Target Group** (5): Create, Delete, Get, Get Many, Update
    - Enhanced with location and protocolVersion properties
  - **NAT Gateway** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Rules subresources

  #### Security (5 operations)
  - **Security Group** (5): Create, Delete, Get, Get Many, Update
    - Full support for Rules subresource with comprehensive rule properties

  </details>

  <details>
  <summary><b>Certificate Manager - Detailed Operations</b></summary>

  #### Certificate Resource (5 operations)
  Upload and manage SSL/TLS certificates manually with full chain and private key support.
  - Create, Delete, Get, Get Many, Update

  #### AutoCertificate Resource (5 operations)
  Configure automatic certificate renewal via ACME providers (Let's Encrypt, etc.).
  - Create, Delete, Get, Get Many, Update
  - **Key Algorithms**: RSA (2048/4096), ECDSA (256/384)
  - **Features**: Subject Alternative Names (SANs), common name, provider selection

  #### Provider Resource (5 operations)
  Configure ACME certificate providers with External Account Binding (EAB) support.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>Cloud DNS - Detailed Operations</b></summary>

  #### Zone Resource (5 operations)
  Manage primary DNS zones.
  - Create, Delete, Get, Get Many, Update

  #### Record Resource (5 operations)
  Manage DNS records with 15 supported types: A, AAAA, ALIAS, CAA, CNAME, DS, HTTPS, MX, NS, SMIMEA, SRV, SSHFP, SVCB, TLSA, TXT
  - Create, Delete, Get, Get Many, Update

  #### SecondaryZone Resource (7 operations)
  Secondary zones with AXFR (zone transfer) support.
  - Create, Delete, Get, Get Many, Update, AXFR Get, AXFR Start

  #### ZoneFile Resource (2 operations)
  Import/export zones in BIND format (RFC 1035).
  - Get (export), Update (import)

  #### Quota Resource (1 operation)
  View DNS resource usage and limits.
  - Get

  #### DNSSEC Resource (3 operations)
  Enable and manage DNSSEC for zones.
  - Create (enable), Delete (disable), Get

  #### ReverseRecord Resource (5 operations)
  Manage reverse DNS (PTR) records for IPv4/IPv6.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>CDN - Detailed Operations</b></summary>

  #### Distribution Resource (5 operations)
  Configure CDN distributions with custom routing rules.
  - Create, Delete, Get, Get Many, Update
  - **Features**: Domain routing, SSL/TLS integration, HTTP/HTTPS schemes, geo-restrictions, upstream origins

  #### Ip Resource (2 operations)
  Get CDN edge server IPs for origin whitelisting.
  - Get, Get Many

  </details>

  <details>
  <summary><b>AI Model Hub - Detailed Operations</b></summary>

  #### Model Resource (2 operations)
  Browse and invoke foundation models for AI inference.
  - Get Many (list available models), Predict (run inference)
  - **Features**: RAG support via collection queries, custom model options, streaming responses

  #### Collection Resource (6 operations)
  Manage vector database collections for document storage and retrieval.
  - Create, Delete, Get, Get Many, Update, Query
  - **Features**: Chunking strategies (sentence/fixed/recursive), embedding models, database types (chromadb/pgvector), semantic search

  #### Document Resource (7 operations)
  Manage documents within collections for RAG applications.
  - Add, Delete, Delete All, Get, Get Many, Get Chunks, Update
  - **Features**: Base64 content encoding, metadata management, chunk retrieval, batch operations

  #### OpenAI Compatible Resource (5 operations)
  Use OpenAI-compatible API endpoints for standardized AI interactions.

  **Chat Completion** - Create chat completions with message history
  - Supports system, user, and assistant message roles
  - Parameters: model, messages (required), temperature, top_p, max_tokens, max_completion_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, response_format, tools, tool_choice, user
  - Compatible with OpenAI chat completion API format

  **Completion** - Simple text completion
  - Parameters: model, prompt (required), temperature, top_p, max_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, user
  - Compatible with OpenAI completion API format

  **Create Embeddings** - Generate vector embeddings from text
  - Parameters: model (default: BAAI/bge-large-en-v1.5), input (single text or comma-separated multiple texts)
  - Returns embedding vectors for semantic search and similarity

  **Generate Image** - Text-to-image generation
  - Parameters: model (default: black-forest-labs/FLUX.1-schnell), prompt (required), n, size (1024x1024, 1024x1792, 1792x1024), response_format (b64_json), user
  - Generates images from text descriptions

  **Get Many** - List available models
  - Returns all models in OpenAI-compatible format
  - Shows model capabilities and availability

  **API Endpoint**: `https://openai.inference.de-txl.ionos.com` (path: `/v1/*`)

  **Features**: Full OpenAI API compatibility, drop-in replacement for OpenAI in existing workflows, comprehensive parameter support

  > **Note:** Model dropdowns are populated dynamically from the IONOS API at runtime (`GET /v1/models`). When models are added or retired, the dropdown lists update automatically without requiring a node update.

  </details>

  ---

  ## Credentials

  All nodes in this package share a single credential type: **IONOS Cloud API**

  Authentication uses the [Cloud API Bearer token](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager).

  The same token works across all IONOS Cloud services (Infrastructure, Certificate Manager, DNS, CDN, and AI Model Hub).

  ## Compatibility

  Tested against n8n version 2.1.5+

  ## Usage

  ### Authentication
  1. Create new credentials in n8n and select "IONOS Cloud API"
  2. Provide your API token (generated from IONOS Cloud Console)
  3. The same credential works for all five nodes

  ### Using the Nodes

  #### Infrastructure
  * Add the "IONOS Cloud (Infrastructure)" node to your workflow
  * Select the resource (e.g., Server, Volume, Datacenter)
  * Choose the operation and configure the required fields

  #### Certificate Manager
  * Add the "IONOS Cloud (Certificate Manager)" node to your workflow
  * Select the resource (Certificate, AutoCertificate, or Provider)
  * Configure certificate properties, domains, and ACME providers

  #### DNS
  * Add the "IONOS Cloud (Cloud DNS)" node to your workflow
  * Select the resource (Zone, Record, SecondaryZone, etc.)
  * Configure DNS zones, records, and DNSSEC settings

  #### CDN
  * Add the "IONOS Cloud (CDN)" node to your workflow
  * Select the resource (Distribution or Ip)
  * Configure CDN distributions with routing rules and upstream origins

  #### AI Model Hub
  * Add the "IONOS Cloud (AI Model Hub)" node to your workflow
  * Select the resource (Model, Collection, Document, or OpenAI Compatible)
  * **Model**: AI inference with native IONOS API
  * **Collection**: Vector database management for RAG
  * **Document**: Manage documents in collections
  * **OpenAI Compatible**: Use OpenAI-compatible endpoints (chat, completions, embeddings, images)

  #### AI Agent Integration (Chat Model & Embeddings Sub-Nodes)

  The **IONOS Cloud Chat Model** and **IONOS Cloud Embeddings** are LangChain sub-nodes that integrate with n8n's built-in AI nodes.

  **Chat Model** — Use IONOS AI Model Hub as the LLM brain for the AI Agent:
  1. Add an **AI Agent** node to your workflow
  2. Click **+** on the AI Agent's **Language Model** input
  3. Select **IONOS Cloud Chat Model**
  4. Choose your credential and pick a model from the auto-populated dropdown
  5. The agent now uses IONOS AI Model Hub for all LLM reasoning

  **Embeddings** — Use IONOS AI Model Hub for text embeddings in RAG pipelines:
  1. Add an **In-Memory Vector Store** (or any vector store node)
  2. Click **+** on the vector store's **Embedding** input
  3. Select **IONOS Cloud Embeddings**
  4. Choose your credential and pick an embedding model

  **Example: AI Agent with RAG**
  ```
  Chat Trigger → AI Agent
                   ├── Language Model: IONOS Cloud Chat Model
                   ├── Memory: Window Buffer Memory
                   └── Tool: Vector Store Tool
                                └── In-Memory Vector Store (Load)
                                         └── Embedding: IONOS Cloud Embeddings
  ```

  > **Note:** The model dropdowns are populated dynamically from the IONOS API at runtime. Both sub-nodes reuse the same **IONOS Cloud API** credential as all other nodes in this package.

  ### Common Patterns

  **Automated SSL Certificate Deployment:**
  1. Use Certificate Manager to create an AutoCertificate
  2. Use CDN node to create a Distribution referencing the certificate ID
  3. Automate certificate renewal with n8n scheduling

  **Infrastructure Provisioning:**
  1. Use Infrastructure node to create Datacenter, Server, and Volume
  2. Use DNS node to create Zone and A/AAAA Records pointing to server IPs
  3. Use Certificate Manager to provision SSL certificates for domains

  **DNS Management:**
  1. Use DNS Zone resource to create zones
  2. Use Record resource to manage DNS records (A, CNAME, MX, TXT, etc.)
  3. Use DNSSEC resource to enable DNSSEC signing
  4. Use ReverseRecord for PTR records

  **AI-Powered Applications with RAG:**
  1. Use AI Model Hub Collection resource to create a vector database
  2. Use Document resource to add knowledge base documents
  3. Use Model Predict operation with collection query for context-aware responses
  4. Automate document updates and model inference in workflows

  **OpenAI-Compatible AI Integration:**
  1. Use OpenAI Compatible Chat Completion for conversational AI
  2. Use Create Embeddings for semantic search and similarity
  3. Use Generate Image for text-to-image generation
  4. Drop-in replacement for OpenAI API in existing n8n workflows

  **AI Agent with IONOS Cloud (native n8n AI integration):**
  1. Use IONOS Cloud Chat Model as the language model for n8n's AI Agent
  2. Use IONOS Cloud Embeddings with Vector Stores for RAG pipelines
  3. Combine with Window Buffer Memory for conversational context
  4. Add Vector Store Tool to give the agent access to your knowledge base
  5. See `examples/ionos-ai-agent-workflow.json` for a ready-to-import workflow

  ### Avoiding Rate Limits

  The IONOS AI Model Hub API enforces rate limits (300 requests/min, 5 requests/sec with a burst of 10). When a node receives multiple input items (e.g., from a preceding "Get All" operation), n8n executes the node once per item, which can trigger `429 Too Many Requests` errors.

  To prevent this, configure **batching** in the node's **Settings** tab:

  1. Open the AI Model Hub node and go to the **Settings** tab
  2. Under **Request Options**, click **Add Option** and select **Batching**
  3. Set **Items per Batch** to `2` (or lower)
  4. Set **Batch Interval (ms)** to `1000` (or higher)

  This ensures n8n processes only a few items at a time with a delay between batches, staying within the API rate limits.

  > **Tip:** If your workflow only needs a single API call (e.g., one Chat Completion), use a **Limit** node before the AI Model Hub node to reduce the input to 1 item.

  ## API Endpoints

  Each node connects to:

  - **Infrastructure**: `https://api.ionos.com/cloudapi/v6/`
  - **Certificate Manager**: `https://certificate-manager.de-fra.ionos.com`
  - **Cloud DNS**: `https://dns.de-fra.ionos.com`
  - **CDN**: `https://cdn.de-fra.ionos.com`
  - **AI Model Hub (Inference API)**: `https://inference.de-txl.ionos.com`
  - **AI Model Hub (OpenAI Compatible API)**: `https://openai.inference.de-txl.ionos.com`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [IONOS Cloud Documentation](https://docs.ionos.com/cloud)
  * [Infrastructure API Documentation](https://api.ionos.com/docs/cloud/v6/)
  * [Certificate Manager API Documentation](https://api.ionos.com/docs/certmanager/v2/)
  * [Cloud DNS API Documentation](https://api.ionos.com/docs/dns/v1/)
  * [CDN API Documentation](https://api.ionos.com/docs/cdn/v1/)
  * [AI Model Hub API Documentation](https://api.ionos.com/docs/inference-modelhub/v1/)
  * [AI Model Hub OpenAI-compatible API Documentation](https://api.ionos.com/docs/inference-openai/v1/)

  ## Contributing

  We welcome contributions! If you find a bug or have a feature request:

  1. Check the [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues) to see if it's already been reported
  2. Open a new issue with a clear description and reproduction steps
  3. For feature requests, explain the use case and expected behavior

  ### Development

  To contribute code:

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

  ## License

  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

  ## Support

  - 📖 [Documentation](https://docs.ionos.com/cloud)
  - 💬 [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues)
  - 🌐 [IONOS Cloud](https://www.ionos.com/cloud)
  - 📧 [Support](https://docs.ionos.com/cloud/support/general-information/contact-information)

  ---

  <div align="center">

  Made with ❤️ by the IONOS Cloud team

  </div>

ai_documentation_summary:
  {"purpose":"Manages IONOS Cloud infrastructure resources including compute, networking, storage, Kubernetes, DNS, certificates, CDN, and AI models within n8n workflows.","capabilities":["Infrastructure provisioning and management (servers, volumes, snapshots, NICs, firewalls)","Kubernetes cluster and node pool management","IP block and request management","DNS zone and record management with DNSSEC support","SSL/TLS certificate lifecycle management with ACME support","CDN content delivery with custom routing and geo-restrictions","AI model inference and RAG capabilities","LangChain sub-node integration for AI Agent workflows","Load balancer, NAT gateway, and security group management","Request monitoring capabilities"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Automating server provisioning and configuration","Managing SSL certificates for web applications","Configuring DNS zones and records","Setting up CDN for content delivery","Deploying and managing Kubernetes clusters"],"limitations":["Requires n8n version 2.1.5 or higher","Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes rather than operating as standalone workflow nodes","Some operations may require instance restart after installation"],"relatedNodes":["IONOS Cloud (Certificate Manager)","IONOS Cloud (Cloud DNS)","IONOS Cloud (CDN)","IONOS Cloud (AI Model Hub)","IONOS Cloud Chat Model"]}


node_type: @smartbooks-ai/n8n-nodes-api.smartbooksApi
package_name: @smartbooks-ai/n8n-nodes-api
display_name: Smartbooks API
description: Interact with Smartbooks API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: alexey-at-smartbooks
author_github_url: https://github.com/smartbooks-ai/n8n-nodes-api.git
npm_package_name: @smartbooks-ai/n8n-nodes-api
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:40.538Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Reporting",
      "options": [
        {
          "name": "Input",
          "value": "Input"
        },
        {
          "name": "Module",
          "value": "Modules"
        },
        {
          "name": "Profile",
          "value": "Profile"
        },
        {
          "name": "Reporting",
          "value": "Reporting"
        },
        {
          "name": "Structure",
          "value": "Structure"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Input Post Batch",
      "options": [
        {
          "name": "Batch Input",
          "value": "Input Post Batch",
          "action": "Batch input",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/input/batch",
              "method": "POST"
            }
          },
          "description": "Batch input for a given year and period. Requires scope input:write."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Input"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Modules Get Item Public",
      "options": [
        {
          "name": "Get Module",
          "value": "Modules Get Item Public",
          "action": "Get module",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/modules/{{$parameter[\"moduleCode\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a module by code. Requires scope modeling:read."
        },
        {
          "name": "Add Account",
          "value": "Modules Post Account",
          "action": "Add account",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/modules/{{$parameter[\"moduleCode\"]}}/subaccountstables/{{$parameter[\"subaccountsTableCode\"]}}/accounts",
              "method": "POST"
            }
          },
          "description": "Add an account to a subaccounts table of a module. Requires scope modeling:write."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Modules"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Reporting Yearly Amounts",
      "options": [
        {
          "name": "Get Outstanding Payables",
          "value": "Outstandingpayablesandreceivables Outstanding Payables",
          "action": "Get outstanding payables",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/outstanding/payables",
              "method": "GET"
            }
          },
          "description": "Get outstanding payables. Requires scope reporting:read."
        },
        {
          "name": "Get Outstanding Receivables",
          "value": "Outstandingpayablesandreceivables Outstanding Receivables",
          "action": "Get outstanding receivables",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/outstanding/receivables",
              "method": "GET"
            }
          },
          "description": "Get outstanding receivables. Requires scope reporting:read."
        },
        {
          "name": "Get Yearly Amounts",
          "value": "Reporting Yearly Amounts",
          "action": "Get yearly amounts",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/amounts/yearly/{{$parameter[\"year\"]}}",
              "method": "GET"
            }
          },
          "description": "Get yearly amounts for a given year. Requires scope reporting:read."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Structure Balance Sheet",
      "options": [
        {
          "name": "Get Balance Sheet Structure",
          "value": "Structure Balance Sheet",
          "action": "Get balance sheet structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/balance-sheet",
              "method": "GET"
            }
          },
          "description": "Get balance sheet structure. Requires scope reporting:read."
        },
        {
          "name": "Get Cash Flow Structure",
          "value": "Structure Cash Flow",
          "action": "Get cash flow structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/cash-flow",
              "method": "GET"
            }
          },
          "description": "Get cash flow structure. Requires scope reporting:read."
        },
        {
          "name": "Get Metrics Structure",
          "value": "Structure Metrics",
          "action": "Get metrics structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/metrics",
              "method": "GET"
            }
          },
          "description": "Get metrics structure. Requires scope reporting:read."
        },
        {
          "name": "Get Profit And Loss Structure",
          "value": "Structure Profit And Loss",
          "action": "Get profit and loss structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/profit-and-loss",
              "method": "GET"
            }
          },
          "description": "Get profit and loss structure. Requires scope reporting:read."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Profile My",
      "options": [
        {
          "name": "Get Profile",
          "value": "Profile My",
          "action": "Get profile",
          "routing": {
            "request": {
              "url": "=/api/v1/profile/my",
              "method": "GET"
            }
          },
          "description": "Get profile details including allowed tenants and companies. Requires scope profile:read."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Profile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /api/v1/c/{companyCode}/input/batch",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Input"
          ],
          "operation": [
            "Input Post Batch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/modules/{moduleCode}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Modules"
          ],
          "operation": [
            "Modules Get Item Public"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /api/v1/c/{companyCode}/modules/{moduleCode}/subaccountstables/{subaccountsTableCode}/accounts",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Modules"
          ],
          "operation": [
            "Modules Post Account"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/reporting/amounts/yearly/{year}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ],
          "operation": [
            "Reporting Yearly Amounts"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/reporting/outstanding/payables",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ],
          "operation": [
            "Outstandingpayablesandreceivables Outstanding Payables"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/reporting/outstanding/receivables",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ],
          "operation": [
            "Outstandingpayablesandreceivables Outstanding Receivables"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/balance-sheet",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Balance Sheet"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/cash-flow",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Cash Flow"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/metrics",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Metrics"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/profit-and-loss",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Profit And Loss"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/profile/my",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Profile"
          ],
          "operation": [
            "Profile My"
          ]
        }
      }
    }
  ]

operations:
  [{"operation":"Input Post Batch","name":"Batch Input","description":"Batch input for a given year and period. Requires scope input:write.","resource":"Input"},{"operation":"Modules Get Item Public","name":"Get Module","description":"Get a module by code. Requires scope modeling:read.","resource":"Modules"},{"operation":"Modules Post Account","name":"Add Account","description":"Add an account to a subaccounts table of a module. Requires scope modeling:write.","resource":"Modules"},{"operation":"Outstandingpayablesandreceivables Outstanding Payables","name":"Get Outstanding Payables","description":"Get outstanding payables. Requires scope reporting:read.","resource":"Reporting"},{"operation":"Outstandingpayablesandreceivables Outstanding Receivables","name":"Get Outstanding Receivables","description":"Get outstanding receivables. Requires scope reporting:read.","resource":"Reporting"},{"operation":"Reporting Yearly Amounts","name":"Get Yearly Amounts","description":"Get yearly amounts for a given year. Requires scope reporting:read.","resource":"Reporting"},{"operation":"Structure Balance Sheet","name":"Get Balance Sheet Structure","description":"Get balance sheet structure. Requires scope reporting:read.","resource":"Structure"},{"operation":"Structure Cash Flow","name":"Get Cash Flow Structure","description":"Get cash flow structure. Requires scope reporting:read.","resource":"Structure"},{"operation":"Structure Metrics","name":"Get Metrics Structure","description":"Get metrics structure. Requires scope reporting:read.","resource":"Structure"},{"operation":"Structure Profit And Loss","name":"Get Profit And Loss Structure","description":"Get profit and loss structure. Requires scope reporting:read.","resource":"Structure"},{"operation":"Profile My","name":"Get Profile","description":"Get profile details including allowed tenants and companies. Requires scope profile:read.","resource":"Profile"}]

npm_readme:
  # Smartbooks API – n8n Node

  [n8n](https://n8n.io) community node for the [Smartbooks API](https://smartbooks.ai). Use it in n8n workflows to interact with Smartbooks (reporting, input, intercompany matching, modules, and more).

  ## Installation

  In n8n:

  1. Open **Settings** → **Community nodes** → **Install**.
  2. Enter: `@smartbooks-ai/n8n-nodes-api`
  3. Install and restart n8n if prompted.

  Or install via CLI in your n8n project:

  ```bash
  npm install @smartbooks-ai/n8n-nodes-api
  ```

  ## Credentials

  The node uses **Smartbooks OAuth2 API** credentials.

  1. Add a **Smartbooks API** credential in n8n.
  2. Use your Smartbooks OAuth2 client ID and client secret.
  3. Authorize; the node will use this credential for all requests.

  ## Resources & operations

  The node supports these Smartbooks resources and their operations:

  - **Input** – e.g. batch input (by year and period)
  - **Module** – module operations
  - **Profile** – profile operations
  - **Reporting** – reporting operations
  - **Structure** – structure operations

  Choose **Resource** and **Operation** in the node; required parameters (e.g. company code, IDs) will appear as needed.

  ## License

  MIT © [smartbooks](https://smartbooks.ai)

ai_documentation_summary:
  {"purpose":"A community n8n node that enables interaction with the Smartbooks API for accounting operations including reporting, input, intercompany matching, and module management.","capabilities":["Batch input by year and period","Module operations","Profile operations","Reporting operations","Structure operations","Intercompany matching","Company code management","ID-based resource queries"],"authentication":"OAuth2 (Smartbooks OAuth2 API credentials with client ID and client secret)","commonUseCases":["Automated financial reporting generation","Batch data entry for accounting periods","Intercompany transaction matching","Module configuration and updates","Company structure management"],"limitations":["Community node (may lack official support)","Requires prior setup of Smartbooks OAuth2 credentials in n8n","Specific parameters depend on selected resource and operation types"],"relatedNodes":["Smartbooks API Credential","General API nodes","OAuth2 authentication nodes"]}


node_type: n8n-nodes-dumplingai.dumplingAi
package_name: n8n-nodes-dumplingai
display_name: Dumpling AI
description: Interact with Dumpling AI APIs (data, web scraping, document conversion, AI, etc.)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dumplingai
author_github_url: https://github.com/dumplingai/
npm_package_name: n8n-nodes-dumplingai
npm_version: 0.1.1
community_fetched_at: 2026-03-25T21:19:40.538Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "dataApi",
      "options": [
        {
          "name": "Data API",
          "value": "dataApi"
        },
        {
          "name": "Web Scraping",
          "value": "webScraping"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getYouTubeTranscript",
      "options": [
        {
          "name": "Get Google Reviews",
          "value": "getGoogleReviews",
          "action": "Get Google Reviews",
          "routing": {
            "request": {
              "url": "/get-google-reviews",
              "body": {
                "cid": "={{ $parameter.inputType === \"cid\" ? $parameter.cid : undefined }}",
                "sortBy": "={{ $parameter.sortBy }}",
                "keyword": "={{ $parameter.inputType === \"keyword\" ? $parameter.keyword : undefined }}",
                "placeId": "={{ $parameter.inputType === \"placeId\" ? $parameter.placeId : undefined }}",
                "reviews": "={{ $parameter.reviews }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location || undefined }}"
              },
              "method": "POST"
            }
          },
          "description": "Get Google Reviews for a place or business"
        },
        {
          "name": "Get TikTok Transcript",
          "value": "getTikTokTranscript",
          "action": "Get TikTok Transcript",
          "routing": {
            "request": {
              "url": "/get-tiktok-transcript",
              "body": {
                "videoUrl": "={{ $parameter.videoUrl }}",
                "preferredLanguage": "={{ $parameter.preferredLanguage }}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve the transcript from a TikTok video"
        },
        {
          "name": "Get YouTube Transcript",
          "value": "getYouTubeTranscript",
          "action": "Get YouTube Transcript",
          "routing": {
            "request": {
              "url": "/get-youtube-transcript",
              "body": {
                "videoUrl": "={{ $parameter.videoUrl }}",
                "includeTimestamps": "={{ $parameter.includeTimestamps }}",
                "preferredLanguage": "={{ $parameter.preferredLanguage }}",
                "timestampsToCombine": "={{ $parameter.timestampsToCombine }}"
              },
              "method": "POST"
            }
          },
          "description": "Extract the transcript from a specified YouTube video URL"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search Google",
          "routing": {
            "request": {
              "url": "/search",
              "body": {
                "page": "={{ $parameter.page }}",
                "query": "={{ $parameter.query }}",
                "country": "={{ $parameter.country }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location }}",
                "dateRange": "={{ $parameter.dateRange }}",
                "scrapeOptions": {
                  "format": "={{ $parameter.scrapeFormat }}",
                  "cleaned": "={{ $parameter.scrapeCleaned }}"
                },
                "scrapeResults": "={{ $parameter.scrapeResults }}",
                "numResultsToScrape": "={{ $parameter.numResultsToScrape }}"
              },
              "method": "POST"
            }
          },
          "description": "Perform a Google web search with optional content scraping"
        },
        {
          "name": "Search News",
          "value": "searchNews",
          "action": "Search News",
          "routing": {
            "request": {
              "url": "/search-news",
              "body": {
                "page": "={{ $parameter.page }}",
                "query": "={{ $parameter.query }}",
                "country": "={{ $parameter.country }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location }}",
                "dateRange": "={{ $parameter.dateRange }}"
              },
              "method": "POST"
            }
          },
          "description": "Search Google News for articles"
        },
        {
          "name": "Search Places",
          "value": "searchPlaces",
          "action": "Search Places",
          "routing": {
            "request": {
              "url": "/search-places",
              "body": {
                "page": "={{ $parameter.page }}",
                "query": "={{ $parameter.query }}",
                "country": "={{ $parameter.country }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location }}"
              },
              "method": "POST"
            }
          },
          "description": "Search Google Places for businesses and locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape URL",
          "routing": {
            "request": {
              "url": "/scrape",
              "body": {
                "url": "={{ $parameter.url }}",
                "format": "={{ $parameter.format }}",
                "cleaned": "={{ $parameter.cleaned }}",
                "renderJs": "={{ $parameter.renderJs }}"
              },
              "method": "POST"
            }
          },
          "description": "Scrape data from a specified URL with formatting options"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webScraping"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"getGoogleReviews","name":"Get Google Reviews","description":"Get Google Reviews for a place or business","resource":"dataApi"},{"operation":"getTikTokTranscript","name":"Get TikTok Transcript","description":"Retrieve the transcript from a TikTok video","resource":"dataApi"},{"operation":"getYouTubeTranscript","name":"Get YouTube Transcript","description":"Extract the transcript from a specified YouTube video URL","resource":"dataApi"},{"operation":"search","name":"Search","description":"Perform a Google web search with optional content scraping","resource":"dataApi"},{"operation":"searchNews","name":"Search News","description":"Search Google News for articles","resource":"dataApi"},{"operation":"searchPlaces","name":"Search Places","description":"Search Google Places for businesses and locations","resource":"dataApi"},{"operation":"scrapeUrl","name":"Scrape URL","description":"Scrape data from a specified URL with formatting options","resource":"webScraping"}]

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

  # n8n-nodes-dumplingai

  This is an n8n community node that provides integration with [Dumpling AI](https://dumplingai.com) APIs for data extraction, web scraping, document conversion, and AI-powered operations.

  [Dumpling AI](https://dumplingai.com) is a comprehensive API platform that provides various data extraction and AI services including YouTube transcript extraction, TikTok data scraping, web scraping, document conversion, and more.

  ## Installation

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

  ## Credentials

  You must have a Dumpling AI API key to use this node. You can register for a free account to get an API key here:

  https://app.dumplingai.com/register

  Once registered, you can find your API key here:

  https://app.dumplingai.com/api-keys

  Then you'll need to create a credential in n8n for Dumpling AI.

  ## Usage

  Add Dumpling AI to a workflow and configure your operation.

  ### Available Operations

  This node currently supports:

  #### Data API Operations
  - **Get YouTube Transcript** - Extract transcripts from YouTube videos with timestamps and language options
  - **Get TikTok Transcript** - Extract transcripts/captions from TikTok videos
  - **Search (Google Web)** - Perform Google web searches with optional content scraping
  - **Search Places** - Search Google Places for businesses and locations
  - **Search News** - Search Google News for articles
  - **Get Google Reviews** - Extract Google Reviews for businesses using keywords, CID, or Place ID

  #### Web Scraping Operations
  - **Scrape URL** - Extract content from web pages with formatting options

  Additional operations will be added in future releases.

  #### Get YouTube Transcript

  Extract transcripts from YouTube videos with optional timestamps and language preferences.

  ```json
  {
    "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "includeTimestamps": true,
    "timestampsToCombine": 5,
    "preferredLanguage": "en"
  }
  ```

  #### Get TikTok Transcript

  Extract transcripts/captions from TikTok videos with language preferences.

  ```json
  {
    "videoUrl": "https://www.tiktok.com/@username/video/1234567890",
    "preferredLanguage": "en"
  }
  ```

  #### Search (Google Web)

  Perform Google web searches with optional content scraping of results.

  ```json
  {
    "query": "artificial intelligence trends 2024",
    "country": "US",
    "language": "en",
    "scrapeResults": true,
    "numResultsToScrape": 3,
    "scrapeFormat": "markdown"
  }
  ```

  #### Search Places

  Search Google Places for businesses and locations.

  ```json
  {
    "query": "coffee shops near me",
    "location": "New York, NY",
    "language": "en"
  }
  ```

  #### Search News

  Search Google News for articles and news content.

  ```json
  {
    "query": "climate change",
    "dateRange": "past_week",
    "language": "en"
  }
  ```

  #### Get Google Reviews

  Extract Google Reviews for businesses using different identification methods.

  ```json
  {
    "inputType": "keyword",
    "keyword": "Starbucks Times Square",
    "reviews": 20,
    "sortBy": "newest"
  }
  ```

  #### Scrape URL

  Extract content from web pages with customizable formatting and processing options.

  ```json
  {
    "url": "https://example.com",
    "format": "markdown",
    "cleaned": true,
    "renderJs": true
  }
  ```

  **Output Formats:**
  - **HTML** - Raw HTML content
  - **Markdown** - Clean markdown format  
  - **Screenshot** - Screenshot of the page

  ## API Resources

  This node currently supports the most popular Dumpling AI APIs. If there's an API missing that you would like to use, please let us know at admin@dumplingai.com

  In the meantime, you can also use the [generic HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to construct your requests.

  ### Coming Soon

  - Document Conversion (PDF, Word, Excel, etc.)
  - AI Operations (Agent completions, Knowledge base search, Image generation)
  - Developer Tools (JavaScript/Python code execution)
  - Additional Data APIs (Social media profiles, advanced scraping)

  ## Related Resources

  Dumpling AI's complete API documentation is available here:

  https://docs.dumplingai.com/api-reference/introduction

  You can also find additional tutorials and resources here:

  https://docs.dumplingai.com/guides

  ## Development

  ### Release Flow

  After merging PRs into main, follow these steps to publish a new version:

  ```bash
  # Switch to main branch and ensure it's up to date
  git checkout main
  git pull origin main

  # Bump version (patch, minor, or major)
  npm version patch         # or minor / major

  # Push changes and tags
  git push origin main
  git push origin v$(node -p "require('./package.json').version")
  ```

  The tag push will automatically trigger the GitHub Actions workflow, which will:
  1. Build the package
  2. Check if the version already exists on npm
  3. Publish to npm if it's a new version

  You'll see a ✅ job in the Actions tab and the new version will appear on npm within a minute.

  ## License

  [MIT](https://github.com/dumplingai/n8n-nodes-dumplingai/blob/master/LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Dumpling AI APIs to perform data extraction, web scraping, document conversion, and AI-powered operations.","capabilities":["Extract YouTube transcripts with timestamps","Extract TikTok transcripts/captions","Perform Google web searches with optional content scraping","Search Google Places for businesses and locations","Search Google News for articles","Extract Google Reviews for businesses","Scrape arbitrary URLs with customizable formatting","Output results in HTML, Markdown, or Screenshot formats"],"authentication":"API key required (configured via n8n credentials)","commonUseCases":["Extracting video content from YouTube and TikTok","Gathering business information and reviews","Web scraping with content cleaning options","Performing targeted Google searches with scraping"],"limitations":["Document conversion (PDF, Word, Excel) not yet available","AI operations (Agent completions, Knowledge base search, Image generation) not yet available","Developer Tools (JavaScript/Python code execution) not yet available","Additional social media profiles and advanced scraping features not yet available","Generic HTTP Request node can be used as a workaround for missing APIs"],"relatedNodes":["n8n-nodes-base.httprequest"]}


node_type: @ionos-cloud/n8n-nodes-ionos-cloud.ionosCloudCdn
package_name: @ionos-cloud/n8n-nodes-ionos-cloud
display_name: IONOS Cloud (CDN)
description: Interact with IONOS Cloud CDN API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: rijeshharidas
author_github_url: https://github.com/ionos-cloud/n8n-nodes-ionos-cloud.git
npm_package_name: @ionos-cloud/n8n-nodes-ionos-cloud
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.539Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "distribution",
      "options": [
        {
          "name": "Distribution",
          "value": "distribution"
        },
        {
          "name": "Ip",
          "value": "ips"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create distribution",
          "routing": {
            "request": {
              "url": "/distributions",
              "method": "POST"
            }
          },
          "description": "Create a new distribution"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete distribution",
          "routing": {
            "request": {
              "url": "=/distributions/{{$parameter.distributionId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a distribution"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get distribution",
          "routing": {
            "request": {
              "url": "=/distributions/{{$parameter.distributionId}}",
              "method": "GET"
            }
          },
          "description": "Get a distribution by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many distributions",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/distributions",
              "method": "GET"
            }
          },
          "description": "Retrieve many distributions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update distribution",
          "routing": {
            "request": {
              "url": "=/distributions/{{$parameter.distributionId}}",
              "method": "PUT"
            }
          },
          "description": "Update a distribution"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "distribution"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get edge server IP info",
          "routing": {
            "request": {
              "url": "=/ips/{{$parameter.ipId}}",
              "method": "GET"
            }
          },
          "description": "Get edge server IP information by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many edge server i ps",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/ips",
              "method": "GET"
            }
          },
          "description": "Retrieve many edge server IPs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ips"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new distribution","resource":"distribution"},{"operation":"delete","name":"Delete","description":"Delete a distribution","resource":"distribution"},{"operation":"get","name":"Get","description":"Get a distribution by ID","resource":"distribution"},{"operation":"getAll","name":"Get Many","description":"Retrieve many distributions","resource":"distribution"},{"operation":"update","name":"Update","description":"Update a distribution","resource":"distribution"},{"operation":"get","name":"Get","description":"Get edge server IP information by ID","resource":"ips"},{"operation":"getAll","name":"Get Many","description":"Retrieve many edge server IPs","resource":"ips"}]

npm_readme:
  <div align="center">

  <img src="./credentials/ionos.svg" alt="IONOS Cloud" height="80" />&nbsp;&nbsp;&nbsp;&nbsp;<picture><source media="(prefers-color-scheme: dark)" srcset="https://n8n.io/brandguidelines/logo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://n8n.io/brandguidelines/logo-dark.svg"><img src="https://n8n.io/brandguidelines/logo-dark.svg" alt="n8n" height="80" /></picture>

  # n8n Nodes for IONOS Cloud

  [![npm version](https://img.shields.io/npm/v/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![License](https://img.shields.io/npm/l/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/blob/master/LICENSE)
  [![npm downloads](https://img.shields.io/npm/dm/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![n8n](https://img.shields.io/badge/n8n-community-blue.svg)](https://n8n.io)
  ![Official](https://img.shields.io/badge/IONOS%20Cloud-Official-00BFFF.svg)

  **Official IONOS Cloud n8n community nodes**

  Automate your cloud infrastructure, DNS, CDN, certificates, and AI workflows with [n8n](https://n8n.io/)

  [Installation](#installation) • [Operations](#operations) • [Credentials](#credentials) • [Usage](#usage) • [Examples](#common-patterns) • [Resources](#resources)

  </div>

  ---

  ## Overview

  This is the **official** n8n community node package for IONOS Cloud, developed and maintained by the IONOS Cloud team. [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  The package provides comprehensive integration with key IONOS Cloud services, enabling you to automate infrastructure provisioning, certificate management, DNS operations, CDN distribution, and AI-powered workflows directly from n8n.

  ## Included Nodes

  This package provides seven separate nodes for different IONOS Cloud services:

  1. **IONOS Cloud (Infrastructure)** - Core infrastructure management
  2. **IONOS Cloud (Certificate Manager)** - SSL/TLS certificate management  
  3. **IONOS Cloud (Cloud DNS)** - Domain name system management
  4. **IONOS Cloud (CDN)** - Content delivery network management
  5. **IONOS Cloud (AI Model Hub)** - AI model inference and RAG capabilities
  6. **IONOS Cloud Chat Model** ⚡ - LangChain sub-node for n8n's AI Agent (language model)
  7. **IONOS Cloud Embeddings** ⚡ - LangChain sub-node for n8n's AI Agent (text embeddings)

  ---

  ## Getting Started

  ### Prerequisites

  Before you begin, you will need:

  1. A [IONOS Cloud account](https://www.ionos.com/enterprise-cloud/signup)
  2. A Cloud API Bearer token ([learn how to generate tokens](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager))
  3. n8n installed (version 2.1.5 or higher)

  ### Installation

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

  #### Quick Installation Steps

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@ionos-cloud/n8n-nodes-ionos-cloud` in **Enter npm package name**
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **Note:** After installation, you may need to restart your n8n instance for the new node to be recognized.

  ## Operations

  ### Overview

  | Node | Resources | Operations | Description |
  |------|-----------|------------|-------------|
  | **Infrastructure** | 21 | 153 | Complete infrastructure management (compute, networking, storage, Kubernetes) |
  | **Certificate Manager** | 3 | 15 | SSL/TLS certificate lifecycle management with ACME support |
  | **Cloud DNS** | 7 | 28 | DNS zones, records (15 types), DNSSEC, zone transfers |
  | **CDN** | 2 | 7 | Content delivery with custom routing and geo-restrictions |
  | **AI Model Hub** | 4 | 20 | Foundation model inference, RAG capabilities, and OpenAI-compatible API |
  | **Chat Model** ⚡ | — | supplyData | LangChain chat model sub-node for n8n AI Agent |
  | **Embeddings** ⚡ | — | supplyData | LangChain embeddings sub-node for n8n AI Agent |

  > ⚡ **Sub-nodes**: The Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes (AI Agent, AI Chain, Vector Stores, etc.) rather than operating as standalone workflow nodes.

  > **✨ v1.0.2**: Patch release with enhanced subresource support for load balancers, NAT gateways, security groups, and target groups. Added request monitoring capabilities.


  <details>
  <summary><b>Infrastructure - Detailed Operations</b></summary>

  #### Account & Global Resources (12 operations)
  - **Contract** (1): Get Many
  - **Location** (2): Get, Get Many
  - **Image** (2): Get, Get Many  
  - **IP Block** (4): Create, Delete, Get, Get Many
  - **Request** (3): Get, Get All, Get Status

  #### Core Infrastructure (10 operations)
  - **Datacenter** (5): Create, Delete, Get, Get Many, Update
  - **LAN** (5): Create, Delete, Get, Get Many, Update

  #### Compute Resources (41 operations)
  - **Server** (21): Attach/Detach CDROM/Volume, Create, Delete, Get (+ CDROM/CDROMs/Volume/Volumes/Remote Console/Token), Get Many, Reboot, Resume, Start, Stop, Suspend, Update, Upgrade
  - **Volume** (6): Create, Create Snapshot, Delete, Get, Get Many, Update
  - **Snapshot** (4): Delete, Get, Get Many, Update
  - **NIC** (5): Create, Delete, Get, Get Many, Update
  - **Firewall Rule** (5): Create, Delete, Get, Get Many, Update

  #### Kubernetes (11 operations)
  - **Kubernetes Cluster** (6): Create, Delete, Get, Get Many, Get Kubeconfig, Update
  - **Node Pool** (5): Create, Delete, Get, Get Many, Update

  #### Networking (34 operations)
  - **Private Cross-Connect** (5): Create, Delete, Get, Get Many, Update
  - **Load Balancer** (9): Attach/Detach NIC, Create, Delete, Get (+ Balanced NIC/NICs), Get Many, Update
  - **Network Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources
  - **Application Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources with HTTP rules
  - **Target Group** (5): Create, Delete, Get, Get Many, Update
    - Enhanced with location and protocolVersion properties
  - **NAT Gateway** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Rules subresources

  #### Security (5 operations)
  - **Security Group** (5): Create, Delete, Get, Get Many, Update
    - Full support for Rules subresource with comprehensive rule properties

  </details>

  <details>
  <summary><b>Certificate Manager - Detailed Operations</b></summary>

  #### Certificate Resource (5 operations)
  Upload and manage SSL/TLS certificates manually with full chain and private key support.
  - Create, Delete, Get, Get Many, Update

  #### AutoCertificate Resource (5 operations)
  Configure automatic certificate renewal via ACME providers (Let's Encrypt, etc.).
  - Create, Delete, Get, Get Many, Update
  - **Key Algorithms**: RSA (2048/4096), ECDSA (256/384)
  - **Features**: Subject Alternative Names (SANs), common name, provider selection

  #### Provider Resource (5 operations)
  Configure ACME certificate providers with External Account Binding (EAB) support.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>Cloud DNS - Detailed Operations</b></summary>

  #### Zone Resource (5 operations)
  Manage primary DNS zones.
  - Create, Delete, Get, Get Many, Update

  #### Record Resource (5 operations)
  Manage DNS records with 15 supported types: A, AAAA, ALIAS, CAA, CNAME, DS, HTTPS, MX, NS, SMIMEA, SRV, SSHFP, SVCB, TLSA, TXT
  - Create, Delete, Get, Get Many, Update

  #### SecondaryZone Resource (7 operations)
  Secondary zones with AXFR (zone transfer) support.
  - Create, Delete, Get, Get Many, Update, AXFR Get, AXFR Start

  #### ZoneFile Resource (2 operations)
  Import/export zones in BIND format (RFC 1035).
  - Get (export), Update (import)

  #### Quota Resource (1 operation)
  View DNS resource usage and limits.
  - Get

  #### DNSSEC Resource (3 operations)
  Enable and manage DNSSEC for zones.
  - Create (enable), Delete (disable), Get

  #### ReverseRecord Resource (5 operations)
  Manage reverse DNS (PTR) records for IPv4/IPv6.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>CDN - Detailed Operations</b></summary>

  #### Distribution Resource (5 operations)
  Configure CDN distributions with custom routing rules.
  - Create, Delete, Get, Get Many, Update
  - **Features**: Domain routing, SSL/TLS integration, HTTP/HTTPS schemes, geo-restrictions, upstream origins

  #### Ip Resource (2 operations)
  Get CDN edge server IPs for origin whitelisting.
  - Get, Get Many

  </details>

  <details>
  <summary><b>AI Model Hub - Detailed Operations</b></summary>

  #### Model Resource (2 operations)
  Browse and invoke foundation models for AI inference.
  - Get Many (list available models), Predict (run inference)
  - **Features**: RAG support via collection queries, custom model options, streaming responses

  #### Collection Resource (6 operations)
  Manage vector database collections for document storage and retrieval.
  - Create, Delete, Get, Get Many, Update, Query
  - **Features**: Chunking strategies (sentence/fixed/recursive), embedding models, database types (chromadb/pgvector), semantic search

  #### Document Resource (7 operations)
  Manage documents within collections for RAG applications.
  - Add, Delete, Delete All, Get, Get Many, Get Chunks, Update
  - **Features**: Base64 content encoding, metadata management, chunk retrieval, batch operations

  #### OpenAI Compatible Resource (5 operations)
  Use OpenAI-compatible API endpoints for standardized AI interactions.

  **Chat Completion** - Create chat completions with message history
  - Supports system, user, and assistant message roles
  - Parameters: model, messages (required), temperature, top_p, max_tokens, max_completion_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, response_format, tools, tool_choice, user
  - Compatible with OpenAI chat completion API format

  **Completion** - Simple text completion
  - Parameters: model, prompt (required), temperature, top_p, max_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, user
  - Compatible with OpenAI completion API format

  **Create Embeddings** - Generate vector embeddings from text
  - Parameters: model (default: BAAI/bge-large-en-v1.5), input (single text or comma-separated multiple texts)
  - Returns embedding vectors for semantic search and similarity

  **Generate Image** - Text-to-image generation
  - Parameters: model (default: black-forest-labs/FLUX.1-schnell), prompt (required), n, size (1024x1024, 1024x1792, 1792x1024), response_format (b64_json), user
  - Generates images from text descriptions

  **Get Many** - List available models
  - Returns all models in OpenAI-compatible format
  - Shows model capabilities and availability

  **API Endpoint**: `https://openai.inference.de-txl.ionos.com` (path: `/v1/*`)

  **Features**: Full OpenAI API compatibility, drop-in replacement for OpenAI in existing workflows, comprehensive parameter support

  > **Note:** Model dropdowns are populated dynamically from the IONOS API at runtime (`GET /v1/models`). When models are added or retired, the dropdown lists update automatically without requiring a node update.

  </details>

  ---

  ## Credentials

  All nodes in this package share a single credential type: **IONOS Cloud API**

  Authentication uses the [Cloud API Bearer token](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager).

  The same token works across all IONOS Cloud services (Infrastructure, Certificate Manager, DNS, CDN, and AI Model Hub).

  ## Compatibility

  Tested against n8n version 2.1.5+

  ## Usage

  ### Authentication
  1. Create new credentials in n8n and select "IONOS Cloud API"
  2. Provide your API token (generated from IONOS Cloud Console)
  3. The same credential works for all five nodes

  ### Using the Nodes

  #### Infrastructure
  * Add the "IONOS Cloud (Infrastructure)" node to your workflow
  * Select the resource (e.g., Server, Volume, Datacenter)
  * Choose the operation and configure the required fields

  #### Certificate Manager
  * Add the "IONOS Cloud (Certificate Manager)" node to your workflow
  * Select the resource (Certificate, AutoCertificate, or Provider)
  * Configure certificate properties, domains, and ACME providers

  #### DNS
  * Add the "IONOS Cloud (Cloud DNS)" node to your workflow
  * Select the resource (Zone, Record, SecondaryZone, etc.)
  * Configure DNS zones, records, and DNSSEC settings

  #### CDN
  * Add the "IONOS Cloud (CDN)" node to your workflow
  * Select the resource (Distribution or Ip)
  * Configure CDN distributions with routing rules and upstream origins

  #### AI Model Hub
  * Add the "IONOS Cloud (AI Model Hub)" node to your workflow
  * Select the resource (Model, Collection, Document, or OpenAI Compatible)
  * **Model**: AI inference with native IONOS API
  * **Collection**: Vector database management for RAG
  * **Document**: Manage documents in collections
  * **OpenAI Compatible**: Use OpenAI-compatible endpoints (chat, completions, embeddings, images)

  #### AI Agent Integration (Chat Model & Embeddings Sub-Nodes)

  The **IONOS Cloud Chat Model** and **IONOS Cloud Embeddings** are LangChain sub-nodes that integrate with n8n's built-in AI nodes.

  **Chat Model** — Use IONOS AI Model Hub as the LLM brain for the AI Agent:
  1. Add an **AI Agent** node to your workflow
  2. Click **+** on the AI Agent's **Language Model** input
  3. Select **IONOS Cloud Chat Model**
  4. Choose your credential and pick a model from the auto-populated dropdown
  5. The agent now uses IONOS AI Model Hub for all LLM reasoning

  **Embeddings** — Use IONOS AI Model Hub for text embeddings in RAG pipelines:
  1. Add an **In-Memory Vector Store** (or any vector store node)
  2. Click **+** on the vector store's **Embedding** input
  3. Select **IONOS Cloud Embeddings**
  4. Choose your credential and pick an embedding model

  **Example: AI Agent with RAG**
  ```
  Chat Trigger → AI Agent
                   ├── Language Model: IONOS Cloud Chat Model
                   ├── Memory: Window Buffer Memory
                   └── Tool: Vector Store Tool
                                └── In-Memory Vector Store (Load)
                                         └── Embedding: IONOS Cloud Embeddings
  ```

  > **Note:** The model dropdowns are populated dynamically from the IONOS API at runtime. Both sub-nodes reuse the same **IONOS Cloud API** credential as all other nodes in this package.

  ### Common Patterns

  **Automated SSL Certificate Deployment:**
  1. Use Certificate Manager to create an AutoCertificate
  2. Use CDN node to create a Distribution referencing the certificate ID
  3. Automate certificate renewal with n8n scheduling

  **Infrastructure Provisioning:**
  1. Use Infrastructure node to create Datacenter, Server, and Volume
  2. Use DNS node to create Zone and A/AAAA Records pointing to server IPs
  3. Use Certificate Manager to provision SSL certificates for domains

  **DNS Management:**
  1. Use DNS Zone resource to create zones
  2. Use Record resource to manage DNS records (A, CNAME, MX, TXT, etc.)
  3. Use DNSSEC resource to enable DNSSEC signing
  4. Use ReverseRecord for PTR records

  **AI-Powered Applications with RAG:**
  1. Use AI Model Hub Collection resource to create a vector database
  2. Use Document resource to add knowledge base documents
  3. Use Model Predict operation with collection query for context-aware responses
  4. Automate document updates and model inference in workflows

  **OpenAI-Compatible AI Integration:**
  1. Use OpenAI Compatible Chat Completion for conversational AI
  2. Use Create Embeddings for semantic search and similarity
  3. Use Generate Image for text-to-image generation
  4. Drop-in replacement for OpenAI API in existing n8n workflows

  **AI Agent with IONOS Cloud (native n8n AI integration):**
  1. Use IONOS Cloud Chat Model as the language model for n8n's AI Agent
  2. Use IONOS Cloud Embeddings with Vector Stores for RAG pipelines
  3. Combine with Window Buffer Memory for conversational context
  4. Add Vector Store Tool to give the agent access to your knowledge base
  5. See `examples/ionos-ai-agent-workflow.json` for a ready-to-import workflow

  ### Avoiding Rate Limits

  The IONOS AI Model Hub API enforces rate limits (300 requests/min, 5 requests/sec with a burst of 10). When a node receives multiple input items (e.g., from a preceding "Get All" operation), n8n executes the node once per item, which can trigger `429 Too Many Requests` errors.

  To prevent this, configure **batching** in the node's **Settings** tab:

  1. Open the AI Model Hub node and go to the **Settings** tab
  2. Under **Request Options**, click **Add Option** and select **Batching**
  3. Set **Items per Batch** to `2` (or lower)
  4. Set **Batch Interval (ms)** to `1000` (or higher)

  This ensures n8n processes only a few items at a time with a delay between batches, staying within the API rate limits.

  > **Tip:** If your workflow only needs a single API call (e.g., one Chat Completion), use a **Limit** node before the AI Model Hub node to reduce the input to 1 item.

  ## API Endpoints

  Each node connects to:

  - **Infrastructure**: `https://api.ionos.com/cloudapi/v6/`
  - **Certificate Manager**: `https://certificate-manager.de-fra.ionos.com`
  - **Cloud DNS**: `https://dns.de-fra.ionos.com`
  - **CDN**: `https://cdn.de-fra.ionos.com`
  - **AI Model Hub (Inference API)**: `https://inference.de-txl.ionos.com`
  - **AI Model Hub (OpenAI Compatible API)**: `https://openai.inference.de-txl.ionos.com`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [IONOS Cloud Documentation](https://docs.ionos.com/cloud)
  * [Infrastructure API Documentation](https://api.ionos.com/docs/cloud/v6/)
  * [Certificate Manager API Documentation](https://api.ionos.com/docs/certmanager/v2/)
  * [Cloud DNS API Documentation](https://api.ionos.com/docs/dns/v1/)
  * [CDN API Documentation](https://api.ionos.com/docs/cdn/v1/)
  * [AI Model Hub API Documentation](https://api.ionos.com/docs/inference-modelhub/v1/)
  * [AI Model Hub OpenAI-compatible API Documentation](https://api.ionos.com/docs/inference-openai/v1/)

  ## Contributing

  We welcome contributions! If you find a bug or have a feature request:

  1. Check the [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues) to see if it's already been reported
  2. Open a new issue with a clear description and reproduction steps
  3. For feature requests, explain the use case and expected behavior

  ### Development

  To contribute code:

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

  ## License

  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

  ## Support

  - 📖 [Documentation](https://docs.ionos.com/cloud)
  - 💬 [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues)
  - 🌐 [IONOS Cloud](https://www.ionos.com/cloud)
  - 📧 [Support](https://docs.ionos.com/cloud/support/general-information/contact-information)

  ---

  <div align="center">

  Made with ❤️ by the IONOS Cloud team

  </div>

ai_documentation_summary:
  {"purpose":"This node enables interaction with the IONOS Cloud CDN API to manage content delivery network resources within n8n workflows.","capabilities":["Content delivery network configuration","Custom routing setup","Geo-restriction management","CDN resource monitoring","CDN status checks"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Automating CDN configuration for web applications","Managing geo-based content delivery restrictions","Monitoring CDN performance and status"],"limitations":["Limited to 2 resources and 7 operations as specified in the overview table"],"relatedNodes":["IONOS Cloud (Infrastructure)","IONOS Cloud (Certificate Manager)","IONOS Cloud (Cloud DNS)","IONOS Cloud (AI Model Hub)","IONOS Cloud Chat Model"]}


node_type: n8n-nodes-straker-verify.strakerVerify
package_name: n8n-nodes-straker-verify
display_name: Straker Verify
description: Interact with Straker Verify API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: strakergroup
author_github_url: https://github.com/strakergroup/int-n8n-verify.git
npm_package_name: n8n-nodes-straker-verify
npm_version: 0.1.31
community_fetched_at: 2026-03-25T21:19:40.540Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Project",
          "value": "project"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new project",
          "description": "Create a new Verify project"
        },
        {
          "name": "Download Files",
          "value": "downloadFiles",
          "action": "Download translated files",
          "description": "Download translated files for a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new Verify project","resource":"project"},{"operation":"downloadFiles","name":"Download Files","description":"Download translated files for a project","resource":"project"}]

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

  # n8n-nodes-straker-verify

  This is an n8n community node. It lets you use the Straker Verify 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)  
  [Resources](#resources)  

  ## Installation

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

  ### Quick Installation

  1. Open your n8n instance
  2. Go to **Settings > Community Nodes**
  3. Select **Install**
  4. Enter `n8n-nodes-straker-verify` in **Enter npm package name**
  5. Agree to the risks of using community nodes: select **I understand the risks of installing unverified code from a third party**
  6. Select **Install**

  ## Operations

  ### Project Resource

  * **Create**: Create a new project with files for translation
  * **Download Files**: Download translated files for a completed project

  ## Credentials

  To use this node, you'll need to create an API key from the Straker Verify platform.

  1. Log in to your Straker Verify account
  2. Navigate to API Keys section
  3. Create a new API key
  4. Use the generated key in your n8n credentials for this node

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Straker Verify API Documentation](https://api-verify.straker.ai/docs#/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Straker Verify API to manage translation projects, including creating new projects and downloading translated files.","capabilities":["Create new translation projects","Download translated files from completed projects","Interact with Straker Verify API endpoints"],"authentication":"API key required (generated from Straker Verify platform)","commonUseCases":["Automating translation project workflows","Retrieving translated documents in n8n","Integrating Straker Verify services into business processes"],"limitations":["Community node (unverified code from third party)","Requires manual API key creation outside of n8n"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-straker-strakerVerify"]}


node_type: @mookielianhd/n8n-nodes-instagram.instagramTrigger
package_name: @mookielianhd/n8n-nodes-instagram
display_name: Instagram Trigger
category: Community
development_style: declarative
version: 2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mookielian
author_github_url: https://github.com/MookieLian/n8n-nodes-instagram.git
npm_package_name: @mookielianhd/n8n-nodes-instagram
npm_version: 3.4.0
community_fetched_at: 2026-03-25T21:19:40.541Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Instagram trigger to receive real-time webhook events from Meta and start a workflow when an event is received.

npm_readme:
  ![Banner image](assets/banner_instagram_node.jpeg)

  # @mookielianhd/n8n-nodes-instagram

  This package’s Instagram nodes for n8n let you publish and manage content, moderate comments, send DMs, and react to real-time events (comments, messages, mentions, story insights, etc.) on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.

  All functionality is built on the Facebook/Instagram Graph API, including media publishing (images, Reels, Stories, carousels), comment moderation, private replies, messaging, hashtag search, IG User/Page helpers, and webhook-based triggers for Business and Creator accounts.

  [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)
  [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.

  ## Operations

  The node exposes several resources:

  | Resource | Description |
  | --- | --- |
  | `Image` | Publish a single image with an optional caption. Uses the two-step container → publish flow. Supports alt text, location, user tags, and product tags. |
  | `Reels` | Publish a reel video. Handles container polling until the video is processed before publishing. Supports product tags and **Trial Reels** via `trial_params`. |
  | `Stories` | Publish a story video using the same logic as reels with `media_type=STORIES`. |
  | `Carousel` | Publish a carousel (album) post with up to 10 images and/or videos. The node creates child containers, builds a carousel container, waits for it to be ready, then publishes it. Includes detailed per-item error reporting and progress messages. |
  | `Comments` | List comments on media, hide/unhide or delete individual comments, disable/enable comments on media, and send **private replies** to commenters. |
  | `IG User` | Read basic profile data for an Instagram Business/Creator account and list its media using the IG User Graph API. |
  | `IG Hashtag` | Search for hashtags by name and fetch top or recent media for a hashtag with paging and limit/return-all support. |
  | `Messaging` | Send direct messages (DMs) to Instagram users via the Instagram Messaging API. |
  | `Page` | Given a Facebook Page ID, fetch the connected Instagram Business/Creator account (`instagram_business_account`). |
  | `Auth` | Exchange short-lived Instagram User tokens for long-lived tokens, refresh long-lived tokens, and call the Graph API `/me` endpoint. |
  | **Instagram Trigger** | **Trigger:** receive real-time webhook events from Meta (comments, messages, mentions, story insights, etc.) and run a workflow for each event. Requires a separate **Instagram Webhook** credential (App Secret) and Meta App Dashboard webhook configuration. |

  ## Credentials

  Create an **Instagram API** credential that stores a long-lived Facebook Graph API user access token with at least:

  * `instagram_basic`
  * `pages_show_list`
  * `instagram_content_publish`
  * `pages_read_engagement`
  * `instagram_manage_comments` (or `instagram_business_manage_comments` if using Instagram Login)
  Steps:

  1. Make sure the Instagram account is a Business/Creator account connected to a Facebook Page.  
  2. Use Meta’s Graph Explorer or your own app to generate an access token that includes the scopes listed above.  
  3. Convert it to a long-lived token and paste it into the credential’s **Access Token** field.  
  4. The built-in credential test hits `https://graph.facebook.com/v22.0/me` to confirm the token works.

  ### Instagram Webhook Trigger credentials

  For the **Instagram Trigger** node you need a separate **Instagram Webhook** credential that stores your Meta **App Secret** (from App Dashboard → Settings → Basic). The App Secret is used to verify the `X-Hub-Signature-256` header on incoming webhook POSTs from Meta. The **Verify Token** is set in the node parameters (see below) and must match the value you enter in the Meta App Dashboard when configuring the webhook URL.

  ## Instagram Webhook Trigger

  This package’s Instagram nodes for n8n let you publish and manage content, moderate comments, send DMs, and react to real-time events (comments, messages, mentions, story insights, etc.) on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.

  The **Instagram Trigger** node listens for real-time webhook events from Meta and starts a workflow when an event is received.

  ### Setup

  1. **Create the credential**  
     Add an **Instagram Webhook** credential and enter your Meta **App Secret** (from your app’s Settings → Basic in the Meta App Dashboard).

  2. **Add the trigger to your workflow**  
     Add the **Instagram Trigger** node. Set **Verify Token** to any string you will use in the Meta Dashboard (e.g. a random secret). Copy the **Webhook URL** shown in the node (Production or Test URL).

  3. **Configure Webhooks in Meta App Dashboard**  
     - In [Meta for Developers](https://developers.facebook.com/), open your app and go to **Webhooks** (or add the Webhooks product).  
     - For **Instagram**, set:  
       - **Callback URL**: paste the n8n Webhook URL from the trigger node.  
       - **Verify Token**: the same string you set in the node’s **Verify Token** parameter.  
     - Subscribe to the Instagram fields you need (e.g. `comments`, `messages`, `mentions`, `story_insights`).  
     - Save. Meta will send a GET request to your URL; the node responds with the challenge so verification succeeds.

  4. **Optional: filter events**  
     Use **Events to Include** on the node to pass only selected event types (e.g. only `messages` and `mentions`) to the workflow. If left empty, all received events are output.

  Each event is output as an item with `object`, `field`, `value`, `id`, `time` and the raw change payload, so you can use the **Instagram** node (e.g. Messaging, Comments) in the same workflow to reply or moderate. To return a custom response to the caller instead of the default 200 OK, add a **Respond to Webhook** node after the trigger.

  ## Compatibility

  - Built and tested against **n8n 2.6.x–2.8.x**.  
  - Declares a peer dependency on **`n8n-workflow >=2.6.1`** (the first secure stream-enabled version suggested by Snyk).  
  - Requires n8n with community nodes enabled (recommended `>=2.x`).  
  - Uses only built-in n8n dependencies, so it is Cloud-compatible.

  ## Usage

  ### Publishing media (Image / Reels / Stories)

  1. Add the **Instagram** node to your workflow and select one of the resources (`Image` / `Reels` / `Stories`).  
  2. Provide the Instagram Business Account ID (the `Node` parameter), media URL and caption.  
  3. The node first creates the media container, polls Graph API until processing completes, then triggers `media_publish`.  
  4. For long-running uploads (large videos), the node uses robust polling and retry logic and surfaces progress via the n8n execution logs (for example, when publishing Reels or Trial Reels).  
  5. Handle any errors returned by the API (rate limits, permissions, validation) via the node’s error output or `Continue On Fail`.

  ### Publishing carousel posts (Carousel)

  1. Add the **Instagram** node and set **Resource** to `Carousel`, **Operation** to `Publish`.  
  2. Provide:
     - `Node` – the IG User ID to publish from.  
     - `Graph API Version` – for example `v24.0`.  
     - `Caption` – the carousel caption.  
     - `Carousel Media` – 2–10 items, each with:
       - `Media Type` – `Image` or `Video`.  
       - `Image URL` or `Video URL` – public URLs Meta can fetch.  
  3. The node:
     - Creates one child container per image/video (`is_carousel_item=true` for each).  
     - Waits for each child container to become ready.  
     - Creates a carousel container (`media_type=CAROUSEL`, `children=<child_ids>`) with the caption.  
     - Waits for the carousel container to be ready, then calls `/{ig-user-id}/media_publish`.  
  4. Errors during any step are annotated with **which child item failed** (for example, “Carousel item 3 (video)…”), making it easier to debug problematic URLs.

  ### Comment moderation and private replies (Comments)

  1. Add the **Instagram** node and set **Resource** to `Comments`.  
  2. Choose an **Operation**:
     - `List` – fetch comments for a given media ID.  
     - `Hide` / `Unhide` / `Delete` – moderate a specific comment by its comment ID.  
     - `Disable Comments` / `Enable Comments` – toggle comments on a media object by its media ID.  
     - `Send Private Reply` – send a private reply message to a commenter using their comment ID.  
  3. Provide the required IDs:
     - `Media ID` for listing comments or enabling/disabling comments.  
     - `Comment ID` for hide/unhide/delete/private reply operations.  
  4. For **Send Private Reply**, also fill in:
     - `Node` – the Instagram professional account ID that owns the commented media.  
     - `Message` – the private reply text that will be sent to the commenter’s inbox/request folder (subject to the 7‑day and messaging window rules defined by Meta).  

  ### Reading IG User profile and media (IG User)

  1. Add the **Instagram** node and set **Resource** to `IG User`.  
  2. Choose an **Operation**:
     - `Get` – fetch basic profile information for an Instagram Business/Creator account (username, name, bio, website, media_count, followers/follows, profile picture URL).  
     - `Get Media` – list media owned by that account, including media type, URLs, caption, permalink, timestamp and username.  
  3. Provide:
     - `Node` – the IG User ID of the professional account you want to read (or `me` if your credential token belongs to that account).  
     - `Graph API Version` – the Graph version to use (for example `v24.0`).  

  ### Searching hashtags and fetching hashtag media (IG Hashtag)

  1. Add the **Instagram** node and set **Resource** to `IG Hashtag`.  
  2. Choose an **Operation**:
     - `Search` – look up a hashtag by name and get its global hashtag ID.  
     - `Get Recent Media` – get the most recently published media tagged with a hashtag.  
     - `Get Top Media` – get the most popular media tagged with a hashtag.  
  3. For **Search**, provide:
     - `Node` – the IG User ID performing the query.  
     - `Hashtag Name` – the hashtag name, without `#`.  
  4. For **Get Recent Media** / **Get Top Media**, provide:
     - `Node` – the IG User ID performing the query.  
     - `Hashtag ID` – the ID returned from the search operation.  
     - `Return All` / `Limit` – choose whether to fetch all available media (within a safety cap) or only up to a limit.  

  ### Sending direct messages (Messaging)

  1. Add the **Instagram** node and set **Resource** to `Messaging`.  
  2. Choose **Operation** `Send Message`.  
  3. Provide:
     - `Node` – the IG professional account ID that will send the message.  
     - `Graph API Version` – the Graph version to use (for example `v24.0`).  
     - `Recipient IG User ID` – the Instagram-scoped user ID (IGSID) of the recipient, typically obtained from Messaging webhook events.  
     - `Message Text` – the text body of the direct message.  

  ### Token exchange, refresh and `/me` (Auth)

  1. Add the **Instagram** node and set **Resource** to `Auth`.  
  2. Choose an **Operation**:
     - `Exchange Access Token` – exchange a **short-lived** Instagram User access token for a **long-lived** token.  
     - `Refresh Access Token` – refresh an existing long-lived token using the Instagram Platform refresh endpoint.  
     - `Get Me` – call the Graph API `/me` endpoint using the `instagramApi` credential’s access token.  
  3. For **Exchange Access Token**, provide:
     - `Short-Lived Access Token` – the short-lived token from your login flow.  
     - `App Secret` – the Instagram App Secret from your Meta App Dashboard.  
  4. For **Refresh Access Token**, optionally provide:
     - `Access Token` – the long-lived token to refresh. Leave empty to use the token from the credential.  
  5. For **Get Me**, the node uses a fixed, versioned `/me` URL under the hood and does **not** depend on any UI parameters, so older workflows remain compatible.

  ### Getting the Instagram account for a Facebook Page (Page)

  1. Add the **Instagram** node and set **Resource** to `Page`, **Operation** to `Get Instagram Account`.  
  2. Provide:
     - `Graph API Version` – for example `v24.0`.  
     - `Page ID` – the Facebook Page ID that is linked to your Instagram professional account.  
  3. The node calls:
     - `GET /{page-id}?fields=instagram_business_account`
     and returns the `instagram_business_account` object (including the Instagram User ID) so you can feed it into other resources (Image/Reels/Stories/Carousel/IG User).

  ### Trial Reels (Reels with `trial_params`)

  1. Add the **Instagram** node and set **Resource** to `Reels`, **Operation** to `Publish`.  
  2. Under **Additional Fields**, set **Trial Reel – Graduation Strategy**:
     - `MANUAL` – you will decide in the Instagram app when (or if) to graduate the trial reel.  
     - `SS_PERFORMANCE` – Instagram will automatically graduate the trial reel if it performs well.  
  3. The node sends a `trial_params` JSON object in the create-container request, as documented in the IG User Media reference.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)  
  * [Instagram Graph API - Publishing](https://developers.facebook.com/docs/instagram-api/reference/ig-user/media)  
  * [Video/Reels publishing guide](https://developers.facebook.com/docs/instagram-api/guides/content-publishing/reels/)  
  * [Comment Moderation](https://developers.facebook.com/docs/instagram-platform/comment-moderation)  
  * [Private Replies](https://developers.facebook.com/docs/instagram-platform/private-replies)  
  * [IG User](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user)  
  * [IG Hashtag Search](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag-search/)  
  * [IG Hashtag Recent Media](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag/recent-media/)  
  * [IG Hashtag Top Media](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag/top-media/)  
  * [Instagram Messaging API](https://developers.facebook.com/docs/messenger-platform/instagram/features/)  
  * [Instagram Platform Access Token](https://developers.facebook.com/docs/instagram-platform/reference/access_token/)  
  * [Instagram Platform Refresh Access Token](https://developers.facebook.com/docs/instagram-platform/reference/refresh_access_token/)  
  * [Instagram Platform /me](https://developers.facebook.com/docs/instagram-platform/reference/me/)  
  * [Webhooks from Meta (getting started)](https://developers.facebook.com/docs/graph-api/webhooks/getting-started)  
  * [Instagram webhook reference](https://developers.facebook.com/docs/graph-api/webhooks/reference/instagram)

  ## Version history

  | Version | Notes |
  | --- | --- |
  | 3.1.1 | Fixes overlapping description text in the node UI; documentation/layout-only cleanup with no runtime behavior changes. |
  | 3.1.0 | Sets `skipSignatureVerification` to `true` by default for the Instagram Trigger node and ensures webhook executions are correctly registered. |
  | 3.0.0 | Introduces the Instagram Trigger node for webhook-based events (comments, messages, mentions, story insights) and updates underlying dependencies. |
  | 2.6.2 | Documentation-only release. Adds or updates `CONTRIBUTING.md` contributor guidance and refreshes this README to reflect recent changes; does not modify runtime behavior or node functionality. |
  | 2.6.1 | Patch release that keeps all execution-time, polling and error-reporting improvements from 2.6.0 and updates docs/readme to reflect the current behavior and supported resources. |
  | 2.6.0 | Shortens polling intervals across resources, adds general execution time optimizations, introduces URL validation before making Graph API calls, and adds more detailed error messages to make debugging easier. |
  | 2.5.4 | Further shortens the container health polling interval in the **Reels** resource to reduce average execution time when publishing videos. |
  | 2.5.3 | Adds `CODE_OF_CONDUCT.md` and `LICENSE`. This is a documentation/compliance update and does not change runtime behavior. |
  | 2.5.2 | Bumps the required `n8n-workflow` peer dependency to `>=2.6.1` to address security advisories (arbitrary file upload, RCE, prototype pollution, etc.) and updates the README to describe the latest features. |
  | 2.5.1 | Introduces the `Page` resource to retrieve the connected Instagram Business/Creator account for a Facebook Page and adds the **Trial Reel – Graduation Strategy** option for Reels (via `trial_params`), alongside the first stable release of Carousel publishing, extended tagging options, and streaming-style progress messages. |
  | 2.4.0 | Adds `IG Hashtag` (search, recent media, top media), `Messaging` (send DMs), and `Auth` helpers for token exchange/refresh and `/me`. |
  | 2.3.0 | Adds `Comments` resource with comment moderation (list/hide/unhide/delete, enable/disable comments) and **Private Replies** support, and an `IG User` resource for reading profile data and listing media. |
  | 2.2.0 | Improves publishing UX and adds alt text, location ID, user tags, and product tags support for media publishing. |
  | 2.1.0 | Stable release of Instagram publishing (Image/Reels/Stories) using the container → publish flow with robust polling and error handling. |
  | 0.1.0 | Initial release with Image, Reels and Stories publishing & built-in container polling. |

ai_documentation_summary:
  {"purpose":"The Instagram Trigger node listens for real-time webhook events from Meta (such as comments, messages, mentions, and story insights) on Instagram Business and Creator accounts to automatically initiate n8n workflows.","capabilities":["Receive real-time webhook events from Meta","Filter specific event types (comments, messages, mentions, story insights)","Start n8n workflows upon event receipt","Support both Production and Test webhook URLs","Verify webhook signatures using App Secret"],"authentication":"App Secret required (stored in separate Instagram Webhook credential); Verify Token configured in node parameters","commonUseCases":["Automated comment moderation and replies","Direct message handling and customer support automation","Story insights monitoring and reporting","Mention tracking and social media management","Real-time engagement alerts"],"limitations":["Requires a separate Instagram Webhook credential with App Secret","Webhook URL must be configured in Meta App Dashboard","Requires Instagram Business or Creator account","Requires proper Meta Graph API permissions (instagram_manage_comments, etc.)"],"relatedNodes":["Instagram Publish Image","Instagram Publish Reels","Instagram Publish Stories","Instagram Publish Carousel","Instagram Comments"]}


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

updated_at: 2026-03-25 21:19:40
author_name: actaport.integration
author_github_url: https://github.com/actaport/n8n-nodes-actaport.git
npm_package_name: @actaport/n8n-nodes-actaport
npm_version: 0.3.0
community_fetched_at: 2026-03-25T21:19:40.542Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Additional Information Category",
          "value": "additionalInformationCategory"
        },
        {
          "name": "Case File",
          "value": "caseFile"
        },
        {
          "name": "Collision",
          "value": "collision"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Deadline",
          "value": "deadline"
        },
        {
          "name": "Department",
          "value": "department"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document Template",
          "value": "documentTemplate"
        },
        {
          "name": "Expense",
          "value": "expense"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Resubmission",
          "value": "resubmission"
        },
        {
          "name": "RVG Fee",
          "value": "rvg"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Third Party Cost",
          "value": "thirdPartyCost"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get additional information category",
          "routing": {
            "request": {
              "url": "=/v1/zusatzinformation/kategorien/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get additional information categories",
          "routing": {
            "request": {
              "url": "=/v1/zusatzinformation/kategorien",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "additionalInformationCategory"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get case files",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve case files"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get case file",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve case file"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create case file",
          "routing": {
            "send": {
              "preSend": []
            },
            "request": {
              "url": "=/v1/akten",
              "method": "POST"
            }
          },
          "description": "Create new case file"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update case file",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update case"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "caseFile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get collision check",
          "routing": {
            "request": {
              "url": "=/v1/kollisionspruefung",
              "method": "GET"
            }
          },
          "description": "Check for collisions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collision"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "routing": {
            "request": {
              "url": "=/v1/kontakte",
              "method": "POST"
            }
          },
          "description": "Creates a new contact with the given data"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "routing": {
            "request": {
              "url": "=/v1/kontakte/{{$parameter.id}}",
              "method": "GET"
            }
          },
          "description": "Retrieves the metadata of a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/kontakte",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieves multiple contacts"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contacts",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 20 : $parameter['size'] }}"
              },
              "url": "=/v1/kontakte/suche",
              "method": "GET"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 20 }}",
                      "suchbegriff": "={{ $request.qs.suchbegriff }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Search contacts with a search term. The search will be performed on certain fields of the contact."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "routing": {
            "request": {
              "url": "=/v1/kontakte/{{$parameter.id}}",
              "method": "PUT"
            }
          },
          "description": "Updates the data of a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create deadline",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen",
              "method": "POST"
            }
          },
          "description": "Create a new deadline"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get deadline",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single deadline"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get deadlines",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/fristen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many deadlines"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update deadline",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing deadline"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update deadline status",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
              "method": "PUT"
            }
          },
          "description": "Change the status of a deadline"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deadline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get department",
          "routing": {
            "request": {
              "url": "=/v1/info/kanzlei/dezernate/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieves a department by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get departments",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/info/kanzlei/dezernate",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieves many departments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "department"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create document",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/neu",
              "method": "POST"
            }
          },
          "description": "Create a new document with template if supported. If no template is specified, a blank document will be created."
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download document",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/v1/documents/{{$parameter[\"id\"]}}",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Download a single document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get document",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single document"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get documents",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/uebersicht",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many documents"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search documents",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 20 : $parameter['size'] }}"
              },
              "url": "=/v1/documents/search",
              "method": "GET"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 20 }}",
                      "aktennummer": "={{ $request.qs?.aktennummer }}",
                      "suchbegriff": "={{ $request.qs.suchbegriff }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Search documents with a search term. The search will be performed on the document attributes and content."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update document",
          "routing": {
            "request": {
              "url": "=/v1/documents/{{$parameter[\"id\"]}}/metadata",
              "method": "PUT"
            }
          },
          "description": "Update a single document"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload document",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/akten/{{$parameter.laufendeNummer}}/{{$parameter.bezugsJahr}}/dokumente",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              }
            }
          },
          "description": "Upload a document to a case"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get document template",
          "routing": {
            "request": {
              "url": "=/v1/vorlagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single document template"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get document templates",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/vorlagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many document templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentTemplate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen",
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get expenses",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create folder",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner",
              "method": "POST"
            }
          },
          "description": "Create a new folder in a case file"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get folder",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single folder"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get folders",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve folder structure of a case file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get invoices",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/rechnungen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many invoices"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get invoice",
          "routing": {
            "request": {
              "url": "=/v1/rechnungen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single invoice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create note",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen",
              "method": "POST"
            }
          },
          "description": "Create a new note"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get note",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single note"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get notes",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many notes"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update note",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing note"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create resubmission",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen",
              "method": "POST"
            }
          },
          "description": "Create a new resubmission"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get resubmission",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single resubmission"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get resubmissions",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/wiedervorlagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many resubmissions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update resubmission",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing resubmission"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update resubmission status",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
              "method": "PUT"
            }
          },
          "description": "Change the status of a resubmission"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "resubmission"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg",
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get rvg fees",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rvg"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create task",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben",
              "method": "POST"
            }
          },
          "description": "Create a new task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get task",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get tasks",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/aufgaben",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many tasks"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update task",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing task"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update task status",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
              "method": "PUT"
            }
          },
          "description": "Change the status of a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen",
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get third party costs",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "thirdPartyCost"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrent",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "routing": {
            "request": {
              "url": "=/v1/benutzer/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get the data of a single user"
        },
        {
          "name": "Get Me",
          "value": "getCurrent",
          "action": "Get me",
          "routing": {
            "request": {
              "url": "=/v1/info/me",
              "method": "GET"
            }
          },
          "description": "Get the data of the current authenticated user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/benutzer",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Get the data of multiple users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"get","name":"Get","resource":"additionalInformationCategory"},{"operation":"getAll","name":"Get Many","resource":"additionalInformationCategory"},{"operation":"getAll","name":"Get Many","description":"Retrieve case files","resource":"caseFile"},{"operation":"get","name":"Get","description":"Retrieve case file","resource":"caseFile"},{"operation":"create","name":"Create","description":"Create new case file","resource":"caseFile"},{"operation":"update","name":"Update","description":"Update case","resource":"caseFile"},{"operation":"get","name":"Get","description":"Check for collisions","resource":"collision"},{"operation":"create","name":"Create","description":"Creates a new contact with the given data","resource":"contact"},{"operation":"get","name":"Get","description":"Retrieves the metadata of a contact","resource":"contact"},{"operation":"getAll","name":"Get Many","description":"Retrieves multiple contacts","resource":"contact"},{"operation":"search","name":"Search","description":"Search contacts with a search term. The search will be performed on certain fields of the contact.","resource":"contact"},{"operation":"update","name":"Update","description":"Updates the data of a contact","resource":"contact"},{"operation":"create","name":"Create","description":"Create a new deadline","resource":"deadline"},{"operation":"get","name":"Get","description":"Retrieve a single deadline","resource":"deadline"},{"operation":"getAll","name":"Get Many","description":"Retrieve many deadlines","resource":"deadline"},{"operation":"update","name":"Update","description":"Update an existing deadline","resource":"deadline"},{"operation":"updateStatus","name":"Update Status","description":"Change the status of a deadline","resource":"deadline"},{"operation":"get","name":"Get","description":"Retrieves a department by ID","resource":"department"},{"operation":"getAll","name":"Get Many","description":"Retrieves many departments","resource":"department"},{"operation":"create","name":"Create","description":"Create a new document with template if supported. If no template is specified, a blank document will be created.","resource":"document"},{"operation":"download","name":"Download","description":"Download a single document","resource":"document"},{"operation":"get","name":"Get","description":"Get a single document","resource":"document"},{"operation":"getAll","name":"Get Many","description":"Retrieve many documents","resource":"document"},{"operation":"search","name":"Search","description":"Search documents with a search term. The search will be performed on the document attributes and content.","resource":"document"},{"operation":"update","name":"Update","description":"Update a single document","resource":"document"},{"operation":"upload","name":"Upload","description":"Upload a document to a case","resource":"document"},{"operation":"get","name":"Get","description":"Get a single document template","resource":"documentTemplate"},{"operation":"getAll","name":"Get Many","description":"Retrieve many document templates","resource":"documentTemplate"},{"operation":"create","name":"Create","resource":"expense"},{"operation":"delete","name":"Delete","resource":"expense"},{"operation":"get","name":"Get","resource":"expense"},{"operation":"getAll","name":"Get Many","resource":"expense"},{"operation":"update","name":"Update","resource":"expense"},{"operation":"create","name":"Create","description":"Create a new folder in a case file","resource":"folder"},{"operation":"get","name":"Get","description":"Get a single folder","resource":"folder"},{"operation":"getAll","name":"Get Many","description":"Retrieve folder structure of a case file","resource":"folder"},{"operation":"getAll","name":"Get Many","description":"Retrieve many invoices","resource":"invoice"},{"operation":"get","name":"Get","description":"Retrieve a single invoice","resource":"invoice"},{"operation":"create","name":"Create","description":"Create a new note","resource":"note"},{"operation":"get","name":"Get","description":"Retrieve a single note","resource":"note"},{"operation":"getAll","name":"Get Many","description":"Retrieve many notes","resource":"note"},{"operation":"update","name":"Update","description":"Update an existing note","resource":"note"},{"operation":"create","name":"Create","description":"Create a new resubmission","resource":"resubmission"},{"operation":"get","name":"Get","description":"Retrieve a single resubmission","resource":"resubmission"},{"operation":"getAll","name":"Get Many","description":"Retrieve many resubmissions","resource":"resubmission"},{"operation":"update","name":"Update","description":"Update an existing resubmission","resource":"resubmission"},{"operation":"updateStatus","name":"Update Status","description":"Change the status of a resubmission","resource":"resubmission"},{"operation":"create","name":"Create","resource":"rvg"},{"operation":"delete","name":"Delete","resource":"rvg"},{"operation":"get","name":"Get","resource":"rvg"},{"operation":"getAll","name":"Get Many","resource":"rvg"},{"operation":"update","name":"Update","resource":"rvg"},{"operation":"create","name":"Create","description":"Create a new task","resource":"task"},{"operation":"get","name":"Get","description":"Retrieve a single task","resource":"task"},{"operation":"getAll","name":"Get Many","description":"Retrieve many tasks","resource":"task"},{"operation":"update","name":"Update","description":"Update an existing task","resource":"task"},{"operation":"updateStatus","name":"Update Status","description":"Change the status of a task","resource":"task"},{"operation":"create","name":"Create","resource":"thirdPartyCost"},{"operation":"delete","name":"Delete","resource":"thirdPartyCost"},{"operation":"get","name":"Get","resource":"thirdPartyCost"},{"operation":"getAll","name":"Get Many","resource":"thirdPartyCost"},{"operation":"update","name":"Update","resource":"thirdPartyCost"},{"operation":"get","name":"Get","description":"Get the data of a single user","resource":"user"},{"operation":"getCurrent","name":"Get Me","description":"Get the data of the current authenticated user","resource":"user"},{"operation":"getAll","name":"Get Many","description":"Get the data of multiple users","resource":"user"}]

npm_readme:
  # n8n-nodes-actaport

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

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

  Actaport is a cloud-based legal management platform that helps law firms streamline their daily work.

  [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)
  [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.

  1. Go to **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `@actaport/n8n-nodes-actaport` in **Enter npm package name**.
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes: select **I
     understand the risks of installing unverified code from a public source**.
  5. Select **Install**.

  After installing the node, you can use it like any other node. n8n displays the node in search results in the **Nodes**
  panel.

  ## Operations

  | Resource                              | Supported Operations                          |
  |---------------------------------------|-----------------------------------------------|
  | **Additional Information Categories** | get, getAll                                   |
  | **Case File**                         | get, getAll, create, update                   |
  | **Collision Check**                   | get                                           |
  | **Contact**                           | get, getAll, create, update, search           |
  | **Deadline**                          | get, getAll, create, update, updateStatus     |
  | **Department**                        | get, getAll                                   |
  | **Document**                          | get, getAll, update, download, create, search |
  | **Document Template**                 | get, getAll                                   |
  | **Expense**                           | get, getAll, create, update, delete           |
  | **Folder**                            | get, getAll, create                           |
  | **Invoice**                           | get, getAll                                   |
  | **Note**                              | get, getAll, create, update                   |
  | **Resubmission**                      | get, getAll, create, update, updateStatus     |
  | **RVG Fee**                           | get, getAll, create, update, delete           |
  | **Task**                              | get, getAll, create, update, updateStatus     |
  | **Third Party Cost**                  | get, getAll, create, update, delete           |
  | **User**                              | get, getMe, getAll                            |

  ## Credentials

  ### Prerequisites
  1. An active Actaport account. If you don't have one, sign up at [Actaport](https://www.actaport.de/).
  2. API access enabled for your Actaport account. Contact [Actaport support](https://actaport.zendesk.com/hc/de/requests/new) if you need assistance with this step.

  ### Setting up Actaport credentials in n8n
  1. In n8n, locate the **Credentials** section and click on **Create credential**.
  2. Select **Actaport OAuth2 API** from the list.
  3. Fill in your realm once prompted and click on **Connect my account**.
  4. Once redirected to the Actaport login page, enter your Actaport credentials to authorize n8n.
  5. After successful authentication, n8n will store the access token securely for future API requests

  ![img.png](assets/add_credentials.png)
  ![img_1.png](assets/login_prompt.png)
  ![img_2.png](assets/successful_login.png)
  ## Compatibility

  * n8n Nodes API version: 1
  * Node.js: >= 20.15


  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Actaport Homepage](https://www.actaport.de/)
  * [Actaport Developer Documentation](https://api.actaport.de/api-docs)
  * [Actaport REST API Reference](https://api.actaport.de/api-docs/rest-api/reference/public)
  * [Actaport Technical Support](https://www.actaport.de/kontakt/api-anfrage)

  # Version history
  * 0.1.0 - Initial release of the n8n Actaport node, supporting multiple resources and operations (see [Operations
    section](#operations) for details).

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the Actaport cloud-based legal management platform API.","capabilities":["Retrieve additional information categories","Manage case files (get, create, update)","Perform collision checks","Search and manage contacts","Handle deadlines (get, create, update, update status)","Manage departments","Retrieve and download documents","Manage document templates","Process expenses (create, update, delete)","Manage folders"],"authentication":"OAuth2","commonUseCases":["Automating legal case management workflows","Syncing contact information between systems","Processing deadline updates and status changes","Downloading and managing legal documents","Tracking expenses and third-party costs"],"limitations":["Requires an active Actaport account with API access enabled","Node.js version 20.15 or higher is required","Requires manual setup of credentials in n8n before use"],"relatedNodes":["n8n HTTP Request node","n8n Webhook node","n8n Code node"]}


node_type: n8n-nodes-placid.placid
package_name: n8n-nodes-placid
display_name: Placid
description: Generate images, PDFs, and videos via Placid's API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: placidapp
author_github_url: https://github.com/placidapp/
npm_package_name: n8n-nodes-placid
npm_version: 0.1.6
community_fetched_at: 2026-03-25T21:19:40.543Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Template",
          "value": "template"
        },
        {
          "name": "Other",
          "value": "other"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an image from a template",
          "description": "Generate a new image from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image by ID",
          "description": "Retrieve an existing image by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an image by ID",
          "description": "Delete an existing image by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a PDF from a template",
          "description": "Generate a new PDF from a template"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge multiple PDF files",
          "description": "Merge multiple existing PDFs into one"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a PDF by ID",
          "description": "Retrieve an existing PDF by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a PDF by ID",
          "description": "Delete an existing PDF by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a video from a template",
          "description": "Generate a new video from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a video by ID",
          "description": "Retrieve an existing video by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a video by ID",
          "description": "Delete an existing video by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a template",
          "description": "Create a new template"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a template by ID",
          "description": "Delete an existing template by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a template by ID",
          "description": "Retrieve an existing template by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many templates",
          "description": "Retrieve multiple templates"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a template",
          "description": "Update an existing template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadMedia",
      "options": [
        {
          "name": "Upload Media",
          "value": "uploadMedia",
          "action": "Upload media files",
          "description": "Upload media files to Placid storage for use in templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "other"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Generate a new image from a template","resource":"image"},{"operation":"get","name":"Get","description":"Retrieve an existing image by ID","resource":"image"},{"operation":"delete","name":"Delete","description":"Delete an existing image by ID","resource":"image"},{"operation":"create","name":"Create","description":"Generate a new PDF from a template","resource":"pdf"},{"operation":"merge","name":"Merge","description":"Merge multiple existing PDFs into one","resource":"pdf"},{"operation":"get","name":"Get","description":"Retrieve an existing PDF by ID","resource":"pdf"},{"operation":"delete","name":"Delete","description":"Delete an existing PDF by ID","resource":"pdf"},{"operation":"create","name":"Create","description":"Generate a new video from a template","resource":"video"},{"operation":"get","name":"Get","description":"Retrieve an existing video by ID","resource":"video"},{"operation":"delete","name":"Delete","description":"Delete an existing video by ID","resource":"video"},{"operation":"create","name":"Create","description":"Create a new template","resource":"template"},{"operation":"delete","name":"Delete","description":"Delete an existing template by ID","resource":"template"},{"operation":"get","name":"Get","description":"Retrieve an existing template by ID","resource":"template"},{"operation":"getMany","name":"Get Many","description":"Retrieve multiple templates","resource":"template"},{"operation":"update","name":"Update","description":"Update an existing template","resource":"template"},{"operation":"uploadMedia","name":"Upload Media","description":"Upload media files to Placid storage for use in templates","resource":"other"}]

npm_readme:
  ![Placid n8n Integration](https://placid.app/assets/n8n/github-header-n8n.jpg)

  # n8n-nodes-placid

  This is an n8n community node. It lets you use [Placid API](https://placid.app) in your n8n workflows.

  Placid is a powerful API service for automated image, PDF, and video generation from custom templates. Create dynamic visual content at scale with simple API calls.

  [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

  ### Quick Install
  ```bash
  npm install n8n-nodes-placid
  ```

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

  ### Complete Setup Guide  
  📖 **New to Placid + n8n?** Check out our comprehensive [Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide) with step-by-step instructions, examples, and best practices for:
  - Setting up your Placid project with n8n integration
  - Creating dynamic templates for images, PDFs, and videos  
  - Installing and configuring the node
  - Mapping data to template layers
  - Testing and completing your workflows

  ## Operations

  ### Image Operations
  - **Create Image** - Generate images from Placid templates with dynamic data
  - **Get Image** - Retrieve image information and download URLs
  - **Delete Image** - Delete generated images from your Placid account

  ### PDF Operations  
  - **Create PDF** - Generate PDFs from Placid templates with dynamic data
  - **Get PDF** - Retrieve PDF information and download URLs
  - **Delete PDF** - Delete generated PDFs from your Placid account

  ### Video Operations
  - **Create Video** - Generate videos from Placid templates with support for multiple clips and audio
  - **Get Video** - Retrieve video information and download URLs
  - **Delete Video** - Delete generated videos from your Placid account

  ### Template Operations
  - **Create Template** - Create new Placid templates
  - **Get Template** - Retrieve a specific template by ID
  - **Get Many Templates** - List all templates with optional filtering
  - **Update Template** - Update existing template properties
  - **Delete Template** - Delete templates from your Placid account

  ### Other Operations
  - **Upload Media** - Upload media files to Placid storage for use in templates

  ## Credentials

  To use this node, you'll need:

  1. **Placid Account**: Sign up at [placid.app](https://placid.app)
  2. **API Key**: Get your API key from your Placid dashboard
  3. **Authentication Setup**: 
     - In n8n, create new credentials of type "Placid API"
     - Enter your Placid API key

  ## Compatibility

  - **Minimum n8n version**: 0.208.0
  - **Node.js version**: >=20.15
  - **Tested with**: n8n 1.x.x

  ## Usage

  ### Configuration Modes
  The Placid node offers two configuration modes for maximum flexibility:

  **🎯 Simple Mode (Recommended)**  
  - User-friendly interface with dropdowns and form fields
  - Dynamic template layer detection - template layers automatically become input fields
  - Support for binary file uploads (images, videos, PDFs)
  - Perfect for most use cases

  **⚙️ Advanced Mode**  
  - Direct JSON configuration for complex scenarios
  - Full control over API payload structure  
  - Support for multi-clip videos and advanced layer configurations
  - Ideal for developers and complex automations

  ### Key Features

  **📁 Binary File Upload**  
  Upload files directly from n8n binary data:
  - Images (JPG, PNG, GIF, WebP) for image and picture layers
  - Videos (MP4) for video layers and video generation
  - Automatic upload to Placid storage with instant URL generation

  **🎬 Multi-Clip Videos**  
  Create sophisticated videos:
  - Combine multiple templates into single videos  
  - Add audio tracks with trimming controls
  - Support for image arrays and slideshow effects
  - Layer animations and transitions

  **🔄 Dynamic Template Integration**  
  - Template layers automatically appear as configurable fields
  - Support for all layer types: text, images, shapes, barcodes, ratings
  - Custom properties for advanced styling
  - Real-time template validation

  ### Quick Start Example
  1. **Choose Resource**: Select "Image", "PDF", "Video", "Template", or "Other"
  2. **Select Operation**: Pick "Create", "Get", "Delete", etc.  
  3. **Pick Template**: Choose from your Placid templates
  4. **Configure Layers**: Use the simple UI or JSON mode
  5. **Add Data**: Map your n8n workflow data to template fields
  6. **Execute**: Generate your creative asset

  For detailed examples and walkthroughs, see the [📖 Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide).

  ## Resources

  ### Getting Started
  * [📖 Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide) - Complete walkthrough with examples
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ### API Documentation  
  * [Placid API Documentation](https://placid.app/docs/2.0/introduction)
  * [Placid Image API](https://placid.app/docs/2.0/rest/images)
  * [Placid PDF API](https://placid.app/docs/2.0/rest/pdfs)  
  * [Placid Video API](https://placid.app/docs/2.0/rest/videos)
  * [Placid Templates API](https://placid.app/docs/2.0/rest/templates)

  ### Support & Community
  * [📝 Report Issues](https://github.com/placidapp/n8n-nodes-placid/issues)
  * [💬 Get Help](https://placid.app/help) - Contact Placid support
  * [🔗 Repository](https://github.com/placidapp/n8n-nodes-placid)

  ## Version history

  ### 0.1.6 (Current)
  - **New PDF Merge Operation**
  - Merge multiple PDFs into a single document with mixed URL/binary source support
  - Simple and Advanced configuration modes for flexibility
  - **Security Improvements**
  - Sanitized filenames in multipart headers to prevent injection attacks
  - Added randomness to multipart boundaries to prevent collisions
  - **Bug Fixes**
  - Validate whitespace-only URLs in simple mode
  - Validate URLs in advanced mode PDF merge configuration
  - Show last polled status in timeout error messages
  - Fixed multipart body handling for media uploads

  ### 0.1.5
  - **Error Handling Enhancement** 🛡️
  - Added ContinueOnFail support to allow workflows to continue execution even when individual operations encounter errors
  - Improved error reporting with standardized NodeOperationError across all operations for better debugging
  - **Compatibility Update** 🔄
  - Updated authentication method to use latest n8n API for improved reliability

  ### 0.1.4
  - **Item Tracking Fix** 🔧
  - Added pairedItem to all operation returns to enable proper input-output tracking and data lineage in n8n workflows

  ### 0.1.3
  - **Bug Fixes** 🔧
  - Fixed property field mapping for shape layer colors (background_color, border_color)
  - Fixed text layer property mappings (text_color, alt_text_color, font, alt_font)
  - Fixed rating/barcode "Value" field label collision
  - Improved layer property handling across all resources

  ### 0.1.2
  - **n8n Cloud Verification Fix** 🔧
  - Fixed ESLint violations by replacing `setTimeout` with n8n's `sleep` helper
  - Ensures compatibility with n8n cloud verification requirements

  ### 0.1.1
  - **Documentation improvements** 📚
  - Added comprehensive usage examples and feature documentation
  - Added reference to [Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide)
  - Enhanced installation instructions with npm command
  - Documented binary file upload capabilities
  - Added support and community links

  ### 0.1.0
  - **First stable release** 🎉
  - Image, PDF, and video generation from Placid templates
  - Template management (CRUD operations)
  - Media upload functionality
  - Dynamic template field generation
  - API key authentication
  - Production ready

  ### 0.0.1-beta.1
  - Initial beta release
   

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation for generating images, PDFs, and videos using Placid's API, supporting both simple UI and advanced JSON configurations.","capabilities":["Generate images from custom templates","Generate PDFs from custom templates","Generate videos with multiple clips and audio","Retrieve and delete generated assets","Create, update, and delete templates","Upload media files to Placid storage","Support binary file uploads (images, videos, PDFs)","Multi-clip video creation with audio trimming","Dynamic template layer mapping","Advanced JSON configuration mode"],"authentication":"API key required (Placid API key)","commonUseCases":["Automated marketing material generation","Dynamic document creation for data-driven workflows","Video compilation from multiple sources","Template-based content personalization","Automated asset management and deletion"],"limitations":["Community node (may have fewer updates than official nodes)","Requires separate Placid account setup","Minimum n8n version 0.208.0 required","Node.js version >=20.15 required"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.binaryFile"]}


node_type: n8n-nodes-whatsable.whatsAble
package_name: n8n-nodes-whatsable
display_name: WhatsAble
description: Send & Schedule WhatsApp messages using the official WhatsApp API and have human/AI collaboration
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: whatsabledev
author_github_url: https://github.com/Whatsable/
npm_package_name: n8n-nodes-whatsable
npm_version: 2.4.4
community_fetched_at: 2026-03-25T21:19:40.544Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendWhatsAppMessage",
      "options": [
        {
          "name": "Send WhatsApp Message",
          "value": "sendWhatsAppMessage",
          "action": "Send whatsapp message",
          "description": "Send WhatsApp messages immediately"
        },
        {
          "name": "Schedule WhatsApp Message",
          "value": "scheduleWhatsAppMessage",
          "action": "Schedule whatsapp message",
          "description": "Schedule WhatsApp messages for later delivery"
        },
        {
          "name": "Send WhatsApp Message to a Group",
          "value": "sendWhatsAppMessageToGroup",
          "action": "Send whatsapp message to a group",
          "description": "Send WhatsApp messages to a group"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sendMessage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"sendWhatsAppMessage","name":"Send WhatsApp Message","description":"Send WhatsApp messages immediately","resource":"sendMessage"},{"operation":"scheduleWhatsAppMessage","name":"Schedule WhatsApp Message","description":"Schedule WhatsApp messages for later delivery","resource":"sendMessage"},{"operation":"sendWhatsAppMessageToGroup","name":"Send WhatsApp Message to a Group","description":"Send WhatsApp messages to a group","resource":"sendMessage"}]

npm_readme:
  <p align="center">
    <img src="https://d1pnnwteuly8z3.cloudfront.net/images/acc1c175-2e05-4bab-805e-64536550fa04/393f0ca5-e904-41f3-8eee-b2dab6bd4e0d.png" alt="WhatsAble Logo" width="160"/>
  </p>

  [![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE.md)

  ## Table of Contents

  - [Overview](#overview)
  - [Installation](#installation)
  - [Authentication](#authentication)
  - [Features](#features)
  - [How to Use WhatsAble Action Node](#how-to-use-whatsable-action-node)
  - [How to Use WhatsAble Trigger Node](#how-to-use-whatsable-trigger-node)
  - [How to Use Notifier Action Node](#how-to-use-notifier-action-node)
  - [How to Use Notifier Trigger Node](#how-to-use-notifier-trigger-node)
  - [How to Use Notifyer System Action Node](#how-to-use-notifyer-system-action-node)
  - [How to Use Notifyer System Trigger Node](#how-to-use-notifyer-system-trigger-node)
  - [Common Use Cases](#common-use-cases)
  - [Best Practices](#best-practices)
  - [Support](#support)
  - [License](#license)
  - [Resources](#resources)

  ---

  # n8n-nodes-whatsable

  This is an [n8n](https://n8n.io/) community node for integrating with the WhatsAble Suite, providing powerful WhatsApp messaging automation capabilities.

  ---

  ## Overview

  The WhatsAble Suite offers a comprehensive set of messaging tools that integrate seamlessly with n8n, enabling powerful automation workflows for businesses of all sizes. The suite comprises three powerful messaging platforms:

  ### WhatsAble
  - Ideal for small businesses and startups
  - Simple integration with n8n
  - Basic media support
  - Subscription-based pricing
  - 7-day free trial
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ### Notifier by WhatsAble
  - Perfect for medium-sized businesses
  - Enhanced template support
  - Standard media capabilities
  - Flexible pricing options
  - Available free trial
  - [Documentation](https://docs.whatsable.app/guides/notifier/n8n)

  ### Notifyer System
  - Enterprise-grade solution
  - Advanced template capabilities
  - Full media support
  - Enterprise pricing
  - Try for free with 2 numbers
  - [Documentation](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## Installation

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

  ---

  ## Authentication

  To use this node, you need to have an API key from your chosen WhatsAble Suite platform:

  1. Sign up at [WhatsAble](https://whatsable.app)
  2. Choose your platform (WhatsAble, Notifier, or Notifyer System)
  3. Complete the verification process
  4. Generate an API key from your platform's dashboard

  > **Note:** Keep your API key secure and never share it publicly.

  ---

  ## Features

  ### WhatsAble Node
  - Send messages
  - Send template messages (Via Notifyer System)
  - Send non-template messages
  - Schedule messages
  - Support for various media types
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ### WhatsAble Trigger Node
  - Receive incoming messages
  - Handle webhooks
  - Process notifications
  - Real-time message triggers
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use WhatsAble Action Node

  ### Prerequisites
  - An active WhatsAble subscription
  - Access to n8n workflow automation platform
  - A verified WhatsApp number in your WhatsAble dashboard

  ### Setup Process

  1. **Subscribe to WhatsAble**
     - Log in to your WhatsAble dashboard
     - Click the Subscribe button
     - Start your 7-day free trial
     - Note: After trial, pricing is $8.99 per month per phone number
  2. **Add and Verify Phone Number**
     - Navigate to Verified Numbers in your dashboard
     - Click Add New Number
     - Enter your phone number (with country code)
     - Complete the WhatsApp verification process
     - Note: Only first number needs verification
  3. **Get Your API Key**
     - Go to API Keys in your WhatsAble dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your WhatsAble API key
     - Name your credential (e.g., "WhatsAble Production")
     - Click Save
  5. Configure message settings:
     - Select "Send Message (WhatsAble)" operation
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  For detailed documentation, visit [WhatsAble n8n Integration Guide](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use WhatsAble Trigger Node

  ### Prerequisites
  - An active WhatsAble subscription
  - Access to n8n workflow automation platform
  - A verified WhatsApp number in your WhatsAble dashboard

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the WhatsAble Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the WhatsAble Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your WhatsAble API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [WhatsAble n8n Integration Guide](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use Notifier Action Node

  ### Prerequisites
  - An active Notifier account (Monthly or Pay-as-you-go plan)
  - Access to n8n workflow automation platform
  - Business information ready for configuration

  ### Setup Process

  1. **Configure Business Information**
     - Log in to your Notifier dashboard
     - Navigate to Business Information
     - Complete required fields
     - Verify your WhatsApp number with the code sent
  2. **Get Your API Key**
     - Go to API Keys in your Notifier dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your Notifier API key
     - Name your credential (e.g., "Notifier Production")
     - Click Save
  5. Configure message settings:
     - Select "Send Message (Notifier)" operation
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  ### Example Workflows with Notifier
  - Lead Nurturing: Trigger on form submission, send personalized welcome, schedule follow-ups
  - Order Confirmations: Trigger on order status change, send update with details
  - Event Reminders: Trigger on calendar event, send reminder with RSVP link
  - Customer Feedback: Trigger on purchase, send feedback request
  - Support Ticket Updates: Trigger on ticket status change, send update

  For detailed documentation, visit [Notifier n8n Integration Guide](https://docs.whatsable.app/guides/notifier/n8n)

  ---

  ## How to Use Notifier Trigger Node

  ### Prerequisites
  - An active Notifier account
  - Access to n8n workflow automation platform
  - Business information configured in Notifier

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the Notifier Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the Notifier Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your Notifier API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [Notifier n8n Integration Guide](https://docs.whatsable.app/guides/notifier/n8n)

  ---

  ## How to Use Notifyer System Action Node

  ### Prerequisites
  - An active Notifyer System account
  - Access to n8n workflow automation platform
  - Completed WhatsApp Business Platform embedding process

  ### Setup Process

  1. **Complete Platform Embedding**
     - Connect your WhatsApp Business account
     - Complete Meta's business verification
     - Ensure compliance with WhatsApp Business Platform policies
  2. **Set Up Message Templates**
     - Navigate to Templates in your dashboard
     - Create new templates and submit for review
  3. **Get Your API Key**
     - Go to API Keys in your Notifyer dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your Notifyer System API key
     - Name your credential (e.g., "Notifyer System Production")
     - Click Save
  5. Configure message settings:
     - Choose between template and non-template message operations
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  ### Example Workflows with Notifyer System
  - Order Confirmations: Trigger on new order, send template message with details
  - Appointment Reminders: Trigger on calendar event, send template message
  - Lead Notifications: Trigger on new CRM lead, send non-template message
  - Customer Support: Trigger on new support ticket, send template message
  - Delivery Updates: Trigger on shipping status change, send template message

  For detailed documentation, visit [Notifyer System n8n Integration Guide](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## How to Use Notifyer System Trigger Node

  ### Prerequisites
  - An active Notifyer System account
  - Access to n8n workflow automation platform
  - Completed WhatsApp Business Platform embedding process

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the Notifyer System Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the Notifyer System Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your Notifyer System API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [Notifyer System n8n Integration Guide](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## Common Use Cases

  - Lead Qualification: Automated follow-up, lead scoring, response tracking
  - Order Notifications: Confirmations, shipping updates, delivery notifications
  - Appointment Reminders: Automated reminders, confirmations, calendar integration
  - Customer Support: Ticket routing, automated responses, support updates
  - Payment Reminders: Invoice notifications, payment confirmations, subscription reminders

  ---

  ## Support

  For technical support and assistance:

  - **Email Support**: Contact our dedicated support team
  - **Video Tutorials**: Watch step-by-step integration guides
  - **Implementation Help**: Get expert assistance with workflows

  For enterprise-level support or custom solutions, contact our solution engineers at team@whatsable.app

  ---

  ## License

  [MIT](LICENSE.md)

  ---

  ## Resources

  - [WhatsAble Website](https://whatsable.app)
  - [n8n Documentation](https://docs.n8n.io)
  - [WhatsAble Suite n8n Overview](https://docs.whatsable.app/n8n-overview)

  ---

  ## Running Locally

  To run and test this node on your local machine:

  1. **Clone the repository**
     ```bash
     git clone https://github.com/Whatsable/n8n-nodes-whatsable.git
     cd n8n-nodes-whatsable
     ```
  2. **Install dependencies**
     ```bash
     pnpm install
     ```
  3. **Build the project**
     ```bash
     pnpm build
     ```
  4. **Run tests**
     ```bash
     pnpm test
     ```
     > **Note:** Unit tests are included to ensure code quality. Please run tests before submitting a pull request.
  5. **Link the node to your local n8n instance**
     - If you are developing a custom node, you can use [n8n's community node development guide](https://docs.n8n.io/integrations/community-nodes/create/) to link your node for local testing.
     - Typically, you can run:
       ```bash
       pnpm link --global
       cd ~/.n8n/custom
       pnpm link --global n8n-nodes-whatsable
       ```
     - Restart your n8n instance to load the custom node.
  6. **Test your node**
     - Open n8n in your browser (usually at `http://localhost:5678`)
     - Create a workflow and add your custom node to test its functionality

  > **Note:** Make sure you have [Node.js](https://nodejs.org/) and [pnpm](https://pnpm.io/) installed on your machine.

  ---

  ## Contributing

  We welcome contributions from the community! To contribute:

  1. **Fork the repository**: [https://github.com/Whatsable/n8n-nodes-whatsable](https://github.com/Whatsable/n8n-nodes-whatsable)
  2. **Create a new branch** for your feature or bugfix:
     ```bash
     git checkout -b feature/your-feature-name
     ```
  3. **Make your changes** and ensure code quality:
     - Follow the existing code style
     - Add or update documentation as needed
     - Run linter and tests before submitting
  4. **Commit your changes**
     ```bash
     git commit -m "Add your message here"
     ```
  5. **Push to your fork**
     ```bash
     git push origin feature/your-feature-name
     ```
  6. **Open a Pull Request**
     - Go to the GitHub page for your fork
     - Click "Compare & pull request"
     - Describe your changes and submit the PR

  ### Reporting Issues
  - If you find a bug or have a feature request, please [open an issue](https://github.com/Whatsable/n8n-nodes-whatsable/issues) with details and steps to reproduce.

  ### Code of Conduct
  - Please be respectful and follow our [Code of Conduct](CODE_OF_CONDUCT.md) when participating in this project.

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of WhatsApp messaging by integrating with the WhatsAble Suite, supporting sending, scheduling, and receiving messages across three tiers: WhatsAble, Notifier, and Notifyer System.","capabilities":["Send text messages","Send scheduled messages","Send media messages","Send template messages (Notifyer System only)","Receive incoming messages via webhooks","Process notifications","Create credentials for API authentication"],"authentication":"API key required","commonUseCases":["Automated customer support responses","Scheduled promotional campaigns","Order confirmations and notifications","Lead follow-up sequences","Two-factor authentication verification"],"limitations":["WhatsAble tier has basic media support only","Notifier requires business information configuration","Notifyer System requires enterprise pricing for full features","WhatsAble free trial is limited to 7 days","Webhook URLs must be configured manually for trigger nodes"],"relatedNodes":["HTTP Request","Webhook","Schedule Trigger","If","Wait"]}


node_type: @mookielianhd/n8n-nodes-instagram.instagram
package_name: @mookielianhd/n8n-nodes-instagram
display_name: Instagram
description: Publish media to Instagram using Facebook Graph API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mookielian
author_github_url: https://github.com/MookieLian/n8n-nodes-instagram.git
npm_package_name: @mookielianhd/n8n-nodes-instagram
npm_version: 3.4.0
community_fetched_at: 2026-03-25T21:19:40.544Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Auth",
          "value": "auth",
          "description": "Exchange and refresh Instagram access tokens; call /me"
        },
        {
          "name": "Carousel",
          "value": "carousel",
          "description": "Publish a carousel (album) post with up to 10 images or videos"
        },
        {
          "name": "Comment",
          "value": "comments",
          "description": "Moderate comments on Instagram media"
        },
        {
          "name": "IG Hashtag",
          "value": "igHashtag",
          "description": "Search hashtags and fetch top or recent media for a hashtag"
        },
        {
          "name": "IG User",
          "value": "igUser",
          "description": "Read profile and media for an Instagram Business or Creator account"
        },
        {
          "name": "Image",
          "value": "image",
          "description": "Publish image posts to Instagram"
        },
        {
          "name": "Messaging",
          "value": "messaging",
          "description": "Send direct messages via the Instagram Messaging API"
        },
        {
          "name": "Page",
          "value": "page",
          "description": "Work with the connected Facebook Page and its Instagram account"
        },
        {
          "name": "Reel",
          "value": "reels",
          "description": "Publish Reels videos to Instagram"
        },
        {
          "name": "Story",
          "value": "stories",
          "description": "Publish story videos to Instagram"
        }
      ],
      "required": true,
      "description": "Select what you want to do with the Instagram API",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "publish",
      "options": [
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish",
          "description": "Publish the selected media type (image, reel, or story) to Instagram"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image",
            "reels",
            "stories"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getInstagramAccount",
      "options": [
        {
          "name": "Get Instagram Account",
          "value": "getInstagramAccount",
          "action": "Get instagram account",
          "description": "Get the Instagram business/creator account connected to a Facebook Page"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "publish",
      "options": [
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish",
          "description": "Publish a carousel (album) post with up to 10 images or videos"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "carousel"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "deleteComment",
          "action": "Delete a comment",
          "description": "Delete a comment from an Instagram media object"
        },
        {
          "name": "Disable Comments",
          "value": "disableComments",
          "action": "Disable comments on media",
          "description": "Disable comments on an Instagram media object"
        },
        {
          "name": "Enable Comments",
          "value": "enableComments",
          "action": "Enable comments on media",
          "description": "Enable comments on an Instagram media object"
        },
        {
          "name": "Hide",
          "value": "hideComment",
          "action": "Hide a comment",
          "description": "Hide a comment from an Instagram media object"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List comments",
          "description": "List comments on an Instagram media object"
        },
        {
          "name": "Send Private Reply",
          "value": "sendPrivateReply",
          "action": "Send a private reply",
          "description": "Send a private reply message to a commenter using the comment ID"
        },
        {
          "name": "Unhide",
          "value": "unhideComment",
          "action": "Unhide a comment",
          "description": "Unhide a previously hidden comment"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get IG user",
          "description": "Get basic profile information for an Instagram Business or Creator account"
        },
        {
          "name": "Get Media",
          "value": "getMedia",
          "action": "Get media",
          "description": "List media objects owned by an Instagram Business or Creator account"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "igUser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "refreshAccessToken",
      "options": [
        {
          "name": "Exchange Access Token",
          "value": "exchangeAccessToken",
          "action": "Exchange short lived token",
          "description": "Exchange a short-lived Instagram User access token for a long-lived token using the Instagram Platform access token endpoint"
        },
        {
          "name": "Get Me",
          "value": "getMe",
          "action": "Get me profile",
          "description": "Call the Graph API /me endpoint using the access token from the Instagram API credential"
        },
        {
          "name": "Refresh Access Token",
          "value": "refreshAccessToken",
          "action": "Refresh access token",
          "description": "Refresh a long-lived Instagram User access token using the Instagram Platform refresh endpoint"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auth"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search hashtags",
          "description": "Search for a hashtag by name and return its ID"
        },
        {
          "name": "Get Recent Media",
          "value": "getRecentMedia",
          "action": "Get recent media for hashtag",
          "description": "Get the most recent media tagged with a hashtag"
        },
        {
          "name": "Get Top Media",
          "value": "getTopMedia",
          "action": "Get top media for hashtag",
          "description": "Get the most popular media tagged with a hashtag"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "igHashtag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send direct message",
          "description": "Send a text message to an Instagram user via the Messaging API"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "messaging"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"publish","name":"Publish","description":"Publish the selected media type (image, reel, or story) to Instagram","resource":"image"},{"operation":"getInstagramAccount","name":"Get Instagram Account","description":"Get the Instagram business/creator account connected to a Facebook Page","resource":"page"},{"operation":"publish","name":"Publish","description":"Publish a carousel (album) post with up to 10 images or videos","resource":"carousel"},{"operation":"deleteComment","name":"Delete","description":"Delete a comment from an Instagram media object","resource":"comments"},{"operation":"disableComments","name":"Disable Comments","description":"Disable comments on an Instagram media object","resource":"comments"},{"operation":"enableComments","name":"Enable Comments","description":"Enable comments on an Instagram media object","resource":"comments"},{"operation":"hideComment","name":"Hide","description":"Hide a comment from an Instagram media object","resource":"comments"},{"operation":"list","name":"List","description":"List comments on an Instagram media object","resource":"comments"},{"operation":"sendPrivateReply","name":"Send Private Reply","description":"Send a private reply message to a commenter using the comment ID","resource":"comments"},{"operation":"unhideComment","name":"Unhide","description":"Unhide a previously hidden comment","resource":"comments"},{"operation":"get","name":"Get","description":"Get basic profile information for an Instagram Business or Creator account","resource":"igUser"},{"operation":"getMedia","name":"Get Media","description":"List media objects owned by an Instagram Business or Creator account","resource":"igUser"},{"operation":"exchangeAccessToken","name":"Exchange Access Token","description":"Exchange a short-lived Instagram User access token for a long-lived token using the Instagram Platform access token endpoint","resource":"auth"},{"operation":"getMe","name":"Get Me","description":"Call the Graph API /me endpoint using the access token from the Instagram API credential","resource":"auth"},{"operation":"refreshAccessToken","name":"Refresh Access Token","description":"Refresh a long-lived Instagram User access token using the Instagram Platform refresh endpoint","resource":"auth"},{"operation":"search","name":"Search","description":"Search for a hashtag by name and return its ID","resource":"igHashtag"},{"operation":"getRecentMedia","name":"Get Recent Media","description":"Get the most recent media tagged with a hashtag","resource":"igHashtag"},{"operation":"getTopMedia","name":"Get Top Media","description":"Get the most popular media tagged with a hashtag","resource":"igHashtag"},{"operation":"sendMessage","name":"Send Message","description":"Send a text message to an Instagram user via the Messaging API","resource":"messaging"}]

npm_readme:
  ![Banner image](assets/banner_instagram_node.jpeg)

  # @mookielianhd/n8n-nodes-instagram

  This package’s Instagram nodes for n8n let you publish and manage content, moderate comments, send DMs, and react to real-time events (comments, messages, mentions, story insights, etc.) on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.

  All functionality is built on the Facebook/Instagram Graph API, including media publishing (images, Reels, Stories, carousels), comment moderation, private replies, messaging, hashtag search, IG User/Page helpers, and webhook-based triggers for Business and Creator accounts.

  [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)
  [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.

  ## Operations

  The node exposes several resources:

  | Resource | Description |
  | --- | --- |
  | `Image` | Publish a single image with an optional caption. Uses the two-step container → publish flow. Supports alt text, location, user tags, and product tags. |
  | `Reels` | Publish a reel video. Handles container polling until the video is processed before publishing. Supports product tags and **Trial Reels** via `trial_params`. |
  | `Stories` | Publish a story video using the same logic as reels with `media_type=STORIES`. |
  | `Carousel` | Publish a carousel (album) post with up to 10 images and/or videos. The node creates child containers, builds a carousel container, waits for it to be ready, then publishes it. Includes detailed per-item error reporting and progress messages. |
  | `Comments` | List comments on media, hide/unhide or delete individual comments, disable/enable comments on media, and send **private replies** to commenters. |
  | `IG User` | Read basic profile data for an Instagram Business/Creator account and list its media using the IG User Graph API. |
  | `IG Hashtag` | Search for hashtags by name and fetch top or recent media for a hashtag with paging and limit/return-all support. |
  | `Messaging` | Send direct messages (DMs) to Instagram users via the Instagram Messaging API. |
  | `Page` | Given a Facebook Page ID, fetch the connected Instagram Business/Creator account (`instagram_business_account`). |
  | `Auth` | Exchange short-lived Instagram User tokens for long-lived tokens, refresh long-lived tokens, and call the Graph API `/me` endpoint. |
  | **Instagram Trigger** | **Trigger:** receive real-time webhook events from Meta (comments, messages, mentions, story insights, etc.) and run a workflow for each event. Requires a separate **Instagram Webhook** credential (App Secret) and Meta App Dashboard webhook configuration. |

  ## Credentials

  Create an **Instagram API** credential that stores a long-lived Facebook Graph API user access token with at least:

  * `instagram_basic`
  * `pages_show_list`
  * `instagram_content_publish`
  * `pages_read_engagement`
  * `instagram_manage_comments` (or `instagram_business_manage_comments` if using Instagram Login)
  Steps:

  1. Make sure the Instagram account is a Business/Creator account connected to a Facebook Page.  
  2. Use Meta’s Graph Explorer or your own app to generate an access token that includes the scopes listed above.  
  3. Convert it to a long-lived token and paste it into the credential’s **Access Token** field.  
  4. The built-in credential test hits `https://graph.facebook.com/v22.0/me` to confirm the token works.

  ### Instagram Webhook Trigger credentials

  For the **Instagram Trigger** node you need a separate **Instagram Webhook** credential that stores your Meta **App Secret** (from App Dashboard → Settings → Basic). The App Secret is used to verify the `X-Hub-Signature-256` header on incoming webhook POSTs from Meta. The **Verify Token** is set in the node parameters (see below) and must match the value you enter in the Meta App Dashboard when configuring the webhook URL.

  ## Instagram Webhook Trigger

  This package’s Instagram nodes for n8n let you publish and manage content, moderate comments, send DMs, and react to real-time events (comments, messages, mentions, story insights, etc.) on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.

  The **Instagram Trigger** node listens for real-time webhook events from Meta and starts a workflow when an event is received.

  ### Setup

  1. **Create the credential**  
     Add an **Instagram Webhook** credential and enter your Meta **App Secret** (from your app’s Settings → Basic in the Meta App Dashboard).

  2. **Add the trigger to your workflow**  
     Add the **Instagram Trigger** node. Set **Verify Token** to any string you will use in the Meta Dashboard (e.g. a random secret). Copy the **Webhook URL** shown in the node (Production or Test URL).

  3. **Configure Webhooks in Meta App Dashboard**  
     - In [Meta for Developers](https://developers.facebook.com/), open your app and go to **Webhooks** (or add the Webhooks product).  
     - For **Instagram**, set:  
       - **Callback URL**: paste the n8n Webhook URL from the trigger node.  
       - **Verify Token**: the same string you set in the node’s **Verify Token** parameter.  
     - Subscribe to the Instagram fields you need (e.g. `comments`, `messages`, `mentions`, `story_insights`).  
     - Save. Meta will send a GET request to your URL; the node responds with the challenge so verification succeeds.

  4. **Optional: filter events**  
     Use **Events to Include** on the node to pass only selected event types (e.g. only `messages` and `mentions`) to the workflow. If left empty, all received events are output.

  Each event is output as an item with `object`, `field`, `value`, `id`, `time` and the raw change payload, so you can use the **Instagram** node (e.g. Messaging, Comments) in the same workflow to reply or moderate. To return a custom response to the caller instead of the default 200 OK, add a **Respond to Webhook** node after the trigger.

  ## Compatibility

  - Built and tested against **n8n 2.6.x–2.8.x**.  
  - Declares a peer dependency on **`n8n-workflow >=2.6.1`** (the first secure stream-enabled version suggested by Snyk).  
  - Requires n8n with community nodes enabled (recommended `>=2.x`).  
  - Uses only built-in n8n dependencies, so it is Cloud-compatible.

  ## Usage

  ### Publishing media (Image / Reels / Stories)

  1. Add the **Instagram** node to your workflow and select one of the resources (`Image` / `Reels` / `Stories`).  
  2. Provide the Instagram Business Account ID (the `Node` parameter), media URL and caption.  
  3. The node first creates the media container, polls Graph API until processing completes, then triggers `media_publish`.  
  4. For long-running uploads (large videos), the node uses robust polling and retry logic and surfaces progress via the n8n execution logs (for example, when publishing Reels or Trial Reels).  
  5. Handle any errors returned by the API (rate limits, permissions, validation) via the node’s error output or `Continue On Fail`.

  ### Publishing carousel posts (Carousel)

  1. Add the **Instagram** node and set **Resource** to `Carousel`, **Operation** to `Publish`.  
  2. Provide:
     - `Node` – the IG User ID to publish from.  
     - `Graph API Version` – for example `v24.0`.  
     - `Caption` – the carousel caption.  
     - `Carousel Media` – 2–10 items, each with:
       - `Media Type` – `Image` or `Video`.  
       - `Image URL` or `Video URL` – public URLs Meta can fetch.  
  3. The node:
     - Creates one child container per image/video (`is_carousel_item=true` for each).  
     - Waits for each child container to become ready.  
     - Creates a carousel container (`media_type=CAROUSEL`, `children=<child_ids>`) with the caption.  
     - Waits for the carousel container to be ready, then calls `/{ig-user-id}/media_publish`.  
  4. Errors during any step are annotated with **which child item failed** (for example, “Carousel item 3 (video)…”), making it easier to debug problematic URLs.

  ### Comment moderation and private replies (Comments)

  1. Add the **Instagram** node and set **Resource** to `Comments`.  
  2. Choose an **Operation**:
     - `List` – fetch comments for a given media ID.  
     - `Hide` / `Unhide` / `Delete` – moderate a specific comment by its comment ID.  
     - `Disable Comments` / `Enable Comments` – toggle comments on a media object by its media ID.  
     - `Send Private Reply` – send a private reply message to a commenter using their comment ID.  
  3. Provide the required IDs:
     - `Media ID` for listing comments or enabling/disabling comments.  
     - `Comment ID` for hide/unhide/delete/private reply operations.  
  4. For **Send Private Reply**, also fill in:
     - `Node` – the Instagram professional account ID that owns the commented media.  
     - `Message` – the private reply text that will be sent to the commenter’s inbox/request folder (subject to the 7‑day and messaging window rules defined by Meta).  

  ### Reading IG User profile and media (IG User)

  1. Add the **Instagram** node and set **Resource** to `IG User`.  
  2. Choose an **Operation**:
     - `Get` – fetch basic profile information for an Instagram Business/Creator account (username, name, bio, website, media_count, followers/follows, profile picture URL).  
     - `Get Media` – list media owned by that account, including media type, URLs, caption, permalink, timestamp and username.  
  3. Provide:
     - `Node` – the IG User ID of the professional account you want to read (or `me` if your credential token belongs to that account).  
     - `Graph API Version` – the Graph version to use (for example `v24.0`).  

  ### Searching hashtags and fetching hashtag media (IG Hashtag)

  1. Add the **Instagram** node and set **Resource** to `IG Hashtag`.  
  2. Choose an **Operation**:
     - `Search` – look up a hashtag by name and get its global hashtag ID.  
     - `Get Recent Media` – get the most recently published media tagged with a hashtag.  
     - `Get Top Media` – get the most popular media tagged with a hashtag.  
  3. For **Search**, provide:
     - `Node` – the IG User ID performing the query.  
     - `Hashtag Name` – the hashtag name, without `#`.  
  4. For **Get Recent Media** / **Get Top Media**, provide:
     - `Node` – the IG User ID performing the query.  
     - `Hashtag ID` – the ID returned from the search operation.  
     - `Return All` / `Limit` – choose whether to fetch all available media (within a safety cap) or only up to a limit.  

  ### Sending direct messages (Messaging)

  1. Add the **Instagram** node and set **Resource** to `Messaging`.  
  2. Choose **Operation** `Send Message`.  
  3. Provide:
     - `Node` – the IG professional account ID that will send the message.  
     - `Graph API Version` – the Graph version to use (for example `v24.0`).  
     - `Recipient IG User ID` – the Instagram-scoped user ID (IGSID) of the recipient, typically obtained from Messaging webhook events.  
     - `Message Text` – the text body of the direct message.  

  ### Token exchange, refresh and `/me` (Auth)

  1. Add the **Instagram** node and set **Resource** to `Auth`.  
  2. Choose an **Operation**:
     - `Exchange Access Token` – exchange a **short-lived** Instagram User access token for a **long-lived** token.  
     - `Refresh Access Token` – refresh an existing long-lived token using the Instagram Platform refresh endpoint.  
     - `Get Me` – call the Graph API `/me` endpoint using the `instagramApi` credential’s access token.  
  3. For **Exchange Access Token**, provide:
     - `Short-Lived Access Token` – the short-lived token from your login flow.  
     - `App Secret` – the Instagram App Secret from your Meta App Dashboard.  
  4. For **Refresh Access Token**, optionally provide:
     - `Access Token` – the long-lived token to refresh. Leave empty to use the token from the credential.  
  5. For **Get Me**, the node uses a fixed, versioned `/me` URL under the hood and does **not** depend on any UI parameters, so older workflows remain compatible.

  ### Getting the Instagram account for a Facebook Page (Page)

  1. Add the **Instagram** node and set **Resource** to `Page`, **Operation** to `Get Instagram Account`.  
  2. Provide:
     - `Graph API Version` – for example `v24.0`.  
     - `Page ID` – the Facebook Page ID that is linked to your Instagram professional account.  
  3. The node calls:
     - `GET /{page-id}?fields=instagram_business_account`
     and returns the `instagram_business_account` object (including the Instagram User ID) so you can feed it into other resources (Image/Reels/Stories/Carousel/IG User).

  ### Trial Reels (Reels with `trial_params`)

  1. Add the **Instagram** node and set **Resource** to `Reels`, **Operation** to `Publish`.  
  2. Under **Additional Fields**, set **Trial Reel – Graduation Strategy**:
     - `MANUAL` – you will decide in the Instagram app when (or if) to graduate the trial reel.  
     - `SS_PERFORMANCE` – Instagram will automatically graduate the trial reel if it performs well.  
  3. The node sends a `trial_params` JSON object in the create-container request, as documented in the IG User Media reference.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)  
  * [Instagram Graph API - Publishing](https://developers.facebook.com/docs/instagram-api/reference/ig-user/media)  
  * [Video/Reels publishing guide](https://developers.facebook.com/docs/instagram-api/guides/content-publishing/reels/)  
  * [Comment Moderation](https://developers.facebook.com/docs/instagram-platform/comment-moderation)  
  * [Private Replies](https://developers.facebook.com/docs/instagram-platform/private-replies)  
  * [IG User](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user)  
  * [IG Hashtag Search](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag-search/)  
  * [IG Hashtag Recent Media](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag/recent-media/)  
  * [IG Hashtag Top Media](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag/top-media/)  
  * [Instagram Messaging API](https://developers.facebook.com/docs/messenger-platform/instagram/features/)  
  * [Instagram Platform Access Token](https://developers.facebook.com/docs/instagram-platform/reference/access_token/)  
  * [Instagram Platform Refresh Access Token](https://developers.facebook.com/docs/instagram-platform/reference/refresh_access_token/)  
  * [Instagram Platform /me](https://developers.facebook.com/docs/instagram-platform/reference/me/)  
  * [Webhooks from Meta (getting started)](https://developers.facebook.com/docs/graph-api/webhooks/getting-started)  
  * [Instagram webhook reference](https://developers.facebook.com/docs/graph-api/webhooks/reference/instagram)

  ## Version history

  | Version | Notes |
  | --- | --- |
  | 3.1.1 | Fixes overlapping description text in the node UI; documentation/layout-only cleanup with no runtime behavior changes. |
  | 3.1.0 | Sets `skipSignatureVerification` to `true` by default for the Instagram Trigger node and ensures webhook executions are correctly registered. |
  | 3.0.0 | Introduces the Instagram Trigger node for webhook-based events (comments, messages, mentions, story insights) and updates underlying dependencies. |
  | 2.6.2 | Documentation-only release. Adds or updates `CONTRIBUTING.md` contributor guidance and refreshes this README to reflect recent changes; does not modify runtime behavior or node functionality. |
  | 2.6.1 | Patch release that keeps all execution-time, polling and error-reporting improvements from 2.6.0 and updates docs/readme to reflect the current behavior and supported resources. |
  | 2.6.0 | Shortens polling intervals across resources, adds general execution time optimizations, introduces URL validation before making Graph API calls, and adds more detailed error messages to make debugging easier. |
  | 2.5.4 | Further shortens the container health polling interval in the **Reels** resource to reduce average execution time when publishing videos. |
  | 2.5.3 | Adds `CODE_OF_CONDUCT.md` and `LICENSE`. This is a documentation/compliance update and does not change runtime behavior. |
  | 2.5.2 | Bumps the required `n8n-workflow` peer dependency to `>=2.6.1` to address security advisories (arbitrary file upload, RCE, prototype pollution, etc.) and updates the README to describe the latest features. |
  | 2.5.1 | Introduces the `Page` resource to retrieve the connected Instagram Business/Creator account for a Facebook Page and adds the **Trial Reel – Graduation Strategy** option for Reels (via `trial_params`), alongside the first stable release of Carousel publishing, extended tagging options, and streaming-style progress messages. |
  | 2.4.0 | Adds `IG Hashtag` (search, recent media, top media), `Messaging` (send DMs), and `Auth` helpers for token exchange/refresh and `/me`. |
  | 2.3.0 | Adds `Comments` resource with comment moderation (list/hide/unhide/delete, enable/disable comments) and **Private Replies** support, and an `IG User` resource for reading profile data and listing media. |
  | 2.2.0 | Improves publishing UX and adds alt text, location ID, user tags, and product tags support for media publishing. |
  | 2.1.0 | Stable release of Instagram publishing (Image/Reels/Stories) using the container → publish flow with robust polling and error handling. |
  | 0.1.0 | Initial release with Image, Reels and Stories publishing & built-in container polling. |

ai_documentation_summary:
  {"purpose":"This n8n node package enables publishing media, managing comments, sending DMs, and reacting to real-time events on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.","capabilities":["Publish single images with captions, alt text, location, and tags","Publish Reels and Stories with product tags and trial support","Publish carousels (albums) with up to 10 media items","List, hide, delete, and moderate comments on media","Send private replies to commenters","Read profile data and list media for IG User accounts","Search hashtags and fetch top or recent media","Send direct messages (DMs) to users","Fetch connected Instagram accounts from Facebook Page IDs","Manage authentication tokens (short-lived to long-lived exchange)"],"authentication":"Long-lived Facebook Graph API user access token with specific scopes (instagram_basic, pages_show_list, instagram_content_publish, pages_read_engagement, instagram_manage_comments); Webhook triggers require Meta App Secret.","commonUseCases":["Automated social media posting schedules for images, reels, and carousels","Automated comment moderation and private replies","Real-time monitoring and workflow triggers for new comments or messages","Hashtag research and content discovery","Direct messaging automation for customer engagement"],"limitations":["Requires Instagram Business or Creator account connected to a Facebook Page","Webhook triggers require manual configuration in Meta App Dashboard","Carousel publishing requires handling container polling and child container creation","Reels and Stories require container polling before publishing"],"relatedNodes":["n8n Webhook","n8n Facebook","n8n HTTP Request"]}


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-03-25 21:19:40
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.7.1
community_fetched_at: 2026-03-25T21:19:40.545Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "ai",
      "options": [
        {
          "name": "AI",
          "value": "ai"
        },
        {
          "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": "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": "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": "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": "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": "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 files-based projects (available only for the following file formats: CSV, RESX, JSON, Android XML, iOS strings, PROPERTIES, XLIFF).\n"
        },
        {
          "name": "String/Asset Translations",
          "value": "stringAssetTranslations",
          "description": "Use API to add or remove strings/asset translations, approvals, and votes."
        },
        {
          "name": "String/Asset Comments",
          "value": "stringAssetComments",
          "description": "Use API to list, add, edit or remove string/asset comments."
        },
        {
          "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": "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": "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": "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": "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": "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."
        },
        {
          "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": "Users",
          "value": "users",
          "description": "\nUsers API gives you the possibility to get profile information about the currently authenticated user.\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."
        },
        {
          "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."
        },
        {
          "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."
        },
        {
          "name": "Bundles",
          "value": "bundles"
        },
        {
          "name": "Distributions",
          "value": "distributions"
        },
        {
          "name": "Labels",
          "value": "labels"
        },
        {
          "name": "Notifications",
          "value": "notifications"
        },
        {
          "name": "Security Logs",
          "value": "securityLogs"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "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.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.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.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": {
            "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.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.pre-translations.getMany",
      "options": [
        {
          "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 to your mobile, web, server, or desktop apps, it is recommended to use [OTA](https://support.crowdin.com/content-delivery/)."
        },
        {
          "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}/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.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)."
        },
        {
          "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.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 `fileId` OR `labelIds` OR `excludeLabelIds` with `languageId` OR `stringId` with `languageId` are required"
        },
        {
          "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 to your mobile, web, server, or desktop apps, it is recommended to use [OTA](https://support.crowdin.com/content-delivery/)."
        },
        {
          "name": "List Translations",
          "value": "api.projects.translations.getMany",
          "action": "List 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 to your mobile, web, server, or desktop apps, it is recommended to use [OTA](https://support.crowdin.com/content-delivery/)."
        },
        {
          "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 `fileId` OR `labelIds` OR `excludeLabelIds` with `languageId` OR `stringId` with `languageId` are required"
        },
        {
          "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.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.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.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.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.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.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.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.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": "Add Project Member",
          "value": "api.projects.members.post",
          "action": "Add Project Member",
          "routing": {
            "request": {
              "url": "=/projects/{{$parameter[\"projectId\"]}}/members",
              "method": "POST"
            }
          },
          "description": "**Required scopes:** `project.member` (Read and Write)."
        },
        {
          "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": "POST /projects/{projectId}/members",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ],
          "operation": [
            "api.projects.members.post"
          ]
        }
      }
    },
    {
      "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.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.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.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": "Edit Application Installation",
          "value": "api.applications.installations.patch",
          "action": "Edit Application Installation",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/applications/installations/{{$parameter[\"identifier\"]}}",
              "method": "PATCH"
            }
          },
          "description": "**Required scopes:** `application` (Read and Write)."
        },
        {
          "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/{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.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)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ],
          "operation": [
            "api.projects.bundles.getMany"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /projects/{projectId}/bundles",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ],
          "operation": [
            "api.projects.bundles.post"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles/{bundleId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ],
          "operation": [
            "api.projects.bundles.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /projects/{projectId}/bundles/{bundleId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ],
          "operation": [
            "api.projects.bundles.delete"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PATCH /projects/{projectId}/bundles/{bundleId}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ],
          "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": [
            "bundles"
          ],
          "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": [
            "bundles"
          ],
          "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": [
            "bundles"
          ],
          "operation": [
            "api.projects.bundles.exports.get"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /projects/{projectId}/bundles/{bundleId}/files",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "bundles"
          ],
          "operation": [
            "api.projects.bundles.files.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.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.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.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}/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:
  [{"operation":"api.ai.prompts.snippets.getMany","name":"List AI Snippets","description":"**Required scopes:** `ai.prompt` (Read only).","resource":"ai"},{"operation":"api.ai.prompts.snippets.post","name":"Add AI Snippet","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.ai.prompts.snippets.get","name":"Get AI Snippet","description":"**Required scopes:** `ai.prompt` (Read only).","resource":"ai"},{"operation":"api.ai.prompts.snippets.delete","name":"Delete AI Snippet","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.ai.prompts.snippets.patch","name":"Edit AI Snippet","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.file-translations.post","name":"AI File Translations","description":"**Required scopes:** `ai.translate` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.file-translations.get","name":"Get File Translations Status","description":"**Required scopes:** `ai.translate` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.file-translations.delete","name":"Cancel File Translations","description":"**Required scopes:** `ai.translate` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.file-translations.download","name":"Download Translated File","description":"**Required scopes:** `ai.translate` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.file-translations.download-strings","name":"Download Translated File Strings","description":"**Required scopes:** `ai.translate` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.prompts.clones.post","name":"Clone AI Prompt","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.ai.prompts.getMany","name":"List AI Prompts","description":"**Required scopes:** `ai.prompt` (Read only).","resource":"ai"},{"operation":"api.users.ai.prompts.post","name":"Add AI Prompt","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.prompts.get","name":"Get AI Prompt","description":"**Required scopes:** `ai.prompt` (Read only).","resource":"ai"},{"operation":"api.users.ai.prompts.delete","name":"Delete AI Prompt","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.prompts.patch","name":"Edit AI Prompt","description":"**Required scopes:** `ai.prompt` (Read and Write).","resource":"ai"},{"operation":"api.ai.providers.models.crowdin.getMany","name":"List AI Provider Models","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.ai.providers.getMany","name":"List AI Providers","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.users.ai.providers.post","name":"Add AI Provider","description":"**Required scopes:** `ai.provider` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.providers.get","name":"Get AI Provider","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.users.ai.providers.delete","name":"Delete AI Provider","description":"**Required scopes:** `ai.provider` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.providers.patch","name":"Edit AI Provider","description":"**Required scopes:** `ai.provider` (Read and Write).","resource":"ai"},{"operation":"api.ai.providers.models.getMany","name":"List AI Provider Models","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.ai.providers.supported-models.crowdin.getMany","name":"List Supported AI Provider Models","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.users.ai.reports.post","name":"Generate AI Report","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.users.ai.reports.get","name":"Check AI Report Generation Status","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.users.ai.reports.download.download","name":"Download AI Report","description":"**Required scopes:** `ai.provider` (Read only).","resource":"ai"},{"operation":"api.users.ai.settings.get","name":"Get AI Settings","description":"**Required scopes:** `ai` (Read only).","resource":"ai"},{"operation":"api.users.ai.settings.patch","name":"Edit AI Settings","description":"**Required scopes:** `ai` (Read and Write).","resource":"ai"},{"operation":"api.users.ai.translate.strings.post","name":"AI Translate Strings","description":"**Required scopes:** `ai.translate` (Read and Write).","resource":"ai"},{"operation":"api.projects.ai.settings.get","name":"Get Project AI Settings","description":"**Required scopes:** `project` (Read only).","resource":"ai"},{"operation":"api.storages.getMany","name":"List Storages","resource":"storage"},{"operation":"api.storages.get","name":"Get Storage","resource":"storage"},{"operation":"api.storages.delete","name":"Delete Storage","resource":"storage"},{"operation":"api.storages.post","name":"Add Storage","resource":"storage"},{"operation":"api.languages.getMany","name":"List Supported Languages","resource":"languages"},{"operation":"api.languages.post","name":"Add Custom Language","description":"**Required scopes:** `language` (Read and Write).","resource":"languages"},{"operation":"api.languages.get","name":"Get Language","resource":"languages"},{"operation":"api.languages.delete","name":"Delete Custom Language","description":"**Required scopes:** `language` (Read and Write).","resource":"languages"},{"operation":"api.languages.patch","name":"Edit Custom Language","description":"**Required scopes:** `language` (Read and Write).","resource":"languages"},{"operation":"api.projects.getMany","name":"List Projects","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.post","name":"Add Project","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.get","name":"Get Project","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.delete","name":"Delete Project","description":"**Required scopes:** `project` (Read and Write).","resource":"projects"},{"operation":"api.projects.patch","name":"Edit Project","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.file-format-settings.custom-segmentations.get","name":"Download Project File Format Settings Custom Segmentation","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.file-format-settings.custom-segmentations.delete","name":"Reset Project File Format Settings Custom Segmentation","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.file-format-settings.getMany","name":"List Project File Format Settings","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.file-format-settings.post","name":"Add Project File Format Settings","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.file-format-settings.get","name":"Get Project File Format Settings","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.file-format-settings.delete","name":"Delete Project File Format Settings","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.file-format-settings.patch","name":"Edit Project File Format Settings","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.strings-exporter-settings.getMany","name":"List Project Strings Exporter Settings","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.strings-exporter-settings.post","name":"Add Project Strings Exporter Settings","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.strings-exporter-settings.get","name":"Get Project Strings Exporter Settings","description":"**Required scopes:** `project.settings` (Read only).","resource":"projects"},{"operation":"api.projects.strings-exporter-settings.delete","name":"Delete Project Strings Exporter Settings","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.strings-exporter-settings.patch","name":"Edit Project Strings Exporter Settings","description":"**Required scopes:** `project.settings` (Read and Write).","resource":"projects"},{"operation":"api.projects.branches.getMany","name":"List Branches","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.branches.post","name":"Add Branch","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.branches.get","name":"Get Branch","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.branches.delete","name":"Delete Branch","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.branches.patch","name":"Edit Branch","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.directories.getMany","name":"List Directories","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.directories.post","name":"Add Directory","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.directories.get","name":"Get Directory","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.directories.delete","name":"Delete Directory","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.directories.patch","name":"Edit Directory","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.files.getMany","name":"List Files","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.files.post","name":"Add File","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.files.get","name":"Get File","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.files.put","name":"Update or Restore File","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"},{"operation":"api.projects.files.delete","name":"Delete File","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.files.patch","name":"Edit File","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"sourceFiles"},{"operation":"api.projects.files.preview.get","name":"Download File Preview","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.files.download.get","name":"Download File","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.files.references.getMany","name":"List Asset References","description":"**Required scopes:** `project.source.file` (Read only).\n\nList all reference files for an asset","resource":"sourceFiles"},{"operation":"api.projects.files.references.post","name":"Add Asset Reference","description":"**Required scopes:** `project.source.file` (Read and Write).\n\nUpload a reference file for an asset","resource":"sourceFiles"},{"operation":"api.projects.files.references.get","name":"Get Asset Reference","description":"**Required scopes:** `project.source.file` (Read only).\n\nGet information about a specific asset reference","resource":"sourceFiles"},{"operation":"api.projects.files.references.delete","name":"Delete Asset Reference","description":"**Required scopes:** `project.source.file` (Read and Write).\n\nDelete a reference file for an asset","resource":"sourceFiles"},{"operation":"api.projects.files.revisions.getMany","name":"List File Revisions","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.files.revisions.get","name":"Get File Revision","description":"**Required scopes:** `project.source.file` (Read only).","resource":"sourceFiles"},{"operation":"api.projects.pre-translations.getMany","name":"List Pre-Translations","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.pre-translations.post","name":"Apply Pre-Translation","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"translations"},{"operation":"api.projects.pre-translations.get","name":"Pre-Translation Status","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"translations"},{"operation":"api.projects.pre-translations.patch","name":"Edit Pre-Translation","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"translations"},{"operation":"api.projects.pre-translations.report.getReport","name":"Pre-Translation Report","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"translations"},{"operation":"api.projects.translations.validate-qa-checks.post","name":"Validate text by QA Checks","resource":"translations"},{"operation":"api.projects.translations.builds.directories.post","name":"Build Project Directory Translation","description":"**Required scopes:** `project.source.file` (Read only).","resource":"translations"},{"operation":"api.projects.translations.builds.files.post","name":"Build Project File Translation","description":"**Required scopes:** `project.source.file` (Read only).","resource":"translations"},{"operation":"api.projects.translations.builds.getMany","name":"List Project Builds","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.translations.builds.post","name":"Build Project Translation","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.translations.builds.download.download","name":"Download Project Translations","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.translations.builds.get","name":"Check Project Build Status","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.translations.builds.delete","name":"Cancel Build","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.translations.exports.post","name":"Export Project Translation","description":"**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery to your mobile, web, server, or desktop apps, it is recommended to use [OTA](https://support.crowdin.com/content-delivery/).","resource":"translations"},{"operation":"api.projects.translations.imports","name":"Import Translations","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"translations"},{"operation":"api.projects.translations.imports.get","name":"Import Translations Status","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.translations.imports.report.get","name":"Import Translations Report","description":"**Required scopes:** `project.translation` (Read only).","resource":"translations"},{"operation":"api.projects.strings.getMany","name":"List Strings","description":"**Required scopes:** `project.source.string` (Read only).","resource":"sourceStrings"},{"operation":"api.projects.strings.post","name":"Add String","description":"**Required scopes:** `project.source.string` (Read and Write).","resource":"sourceStrings"},{"operation":"api.projects.strings.get","name":"Get String","description":"**Required scopes:** `project.source.string` (Read only).","resource":"sourceStrings"},{"operation":"api.projects.strings.delete","name":"Delete String","description":"**Required scopes:** `project.source.string` (Read and Write).","resource":"sourceStrings"},{"operation":"api.projects.strings.patch","name":"Edit String","description":"**Required scopes:** `project.source.string` (Read and Write).","resource":"sourceStrings"},{"operation":"api.projects.approvals.getMany","name":"List Translation Approvals","description":"**Required scopes:** `project.translation` (Read only).\n\n__Note:__ Either `translationId` OR `fileId` OR `labelIds` OR `excludeLabelIds` with `languageId` OR `stringId` with `languageId` are required","resource":"stringAssetTranslations"},{"operation":"api.projects.approvals.post","name":"Add Approval","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.approvals.deleteMany","name":"Remove String/Asset Approvals","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"},{"operation":"api.projects.approvals.get","name":"Get Approval","description":"**Required scopes:** `project.translation` (Read only).","resource":"stringAssetTranslations"},{"operation":"api.projects.approvals.delete","name":"Remove Approval","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.languages.translations.getMany","name":"List Language Translations","description":"**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery to your mobile, web, server, or desktop apps, it is recommended to use [OTA](https://support.crowdin.com/content-delivery/).","resource":"stringAssetTranslations"},{"operation":"api.projects.translations.getMany","name":"List Translations","description":"**Required scopes:** `project.translation` (Read only).\n\n__Note:__ For instant translation delivery to your mobile, web, server, or desktop apps, it is recommended to use [OTA](https://support.crowdin.com/content-delivery/).","resource":"stringAssetTranslations"},{"operation":"api.projects.translations.post","name":"Add Translation","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.translations.deleteMany","name":"Delete String/Asset Translations","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"},{"operation":"api.projects.translations.get","name":"Get Translation","description":"**Required scopes:** `project.translation` (Read only).","resource":"stringAssetTranslations"},{"operation":"api.projects.translations.put","name":"Restore Translation","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.translations.delete","name":"Delete Translation","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.translations.alignment.post","name":"Translation Alignment","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.votes.getMany","name":"List Translation Votes","description":"**Required scopes:** `project.translation` (Read only).\n\n__Note:__ Either `translationId` OR `fileId` OR `labelIds` OR `excludeLabelIds` with `languageId` OR `stringId` with `languageId` are required","resource":"stringAssetTranslations"},{"operation":"api.projects.votes.post","name":"Add Vote","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.votes.get","name":"Get Vote","description":"**Required scopes:** `project.translation` (Read only).","resource":"stringAssetTranslations"},{"operation":"api.projects.votes.delete","name":"Cancel Vote","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"stringAssetTranslations"},{"operation":"api.projects.comments.attachments.delete","name":"Delete Attachment from String/Asset Comment","description":"**Required scopes:** `project.source.string` (Read and Write).","resource":"stringAssetComments"},{"operation":"api.projects.comments.getMany","name":"List String/Asset Comments","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"},{"operation":"api.projects.comments.post","name":"Add String/Asset Comment","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"},{"operation":"api.projects.comments.get","name":"Get String/Asset Comment","description":"**Required scopes:** `project.source.string` (Read only).","resource":"stringAssetComments"},{"operation":"api.projects.comments.delete","name":"Delete String/Asset Comment","description":"**Required scopes:** `project.source.string` (Read and Write).","resource":"stringAssetComments"},{"operation":"api.projects.comments.patch","name":"Edit String/Asset Comment","description":"**Required scopes:** `project.source.string` (Read and Write).","resource":"stringAssetComments"},{"operation":"api.projects.screenshots.getMany","name":"List Screenshots","description":"**Required scopes:** `project.screenshot` (Read only).","resource":"screenshots"},{"operation":"api.projects.screenshots.post","name":"Add Screenshot","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.get","name":"Get Screenshot","description":"**Required scopes:** `project.screenshot` (Read only).","resource":"screenshots"},{"operation":"api.projects.screenshots.put","name":"Update Screenshot","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.delete","name":"Delete Screenshot","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.patch","name":"Edit Screenshot","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.getMany","name":"List Tags","description":"**Required scopes:** `project.screenshot` (Read only).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.putMany","name":"Replace Tags (Auto Tag)","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.post","name":"Add Tag","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.deleteMany","name":"Clear Tags","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.get","name":"Get Tag","description":"**Required scopes:** `project.screenshot` (Read only).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.delete","name":"Delete Tag","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.projects.screenshots.tags.patch","name":"Edit Tag","description":"**Required scopes:** `project.screenshot` (Read and Write).","resource":"screenshots"},{"operation":"api.glossaries.concepts.getMany","name":"List Concepts","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.concepts.get","name":"Get concept","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.concepts.put","name":"Update concept","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"},{"operation":"api.glossaries.concepts.delete","name":"Delete Concept","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.getMany","name":"List Glossaries","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.post","name":"Add Glossary","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.get","name":"Get Glossary","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.delete","name":"Delete Glossary","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.patch","name":"Edit Glossary","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.exports.post","name":"Export Glossary","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.exports.get","name":"Check Glossary Export Status","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.exports.download.download","name":"Download Glossary","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.imports.post","name":"Import Glossary","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.imports.get","name":"Check Glossary Import Status","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.projects.glossaries.concordance.post","name":"Concordance search in Glossaries","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.terms.getMany","name":"List Terms","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.terms.post","name":"Add Term","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"},{"operation":"api.glossaries.terms.deleteMany","name":"Clear Glossary","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.terms.get","name":"Get Term","description":"**Required scopes:** `glossary` (Read only).","resource":"glossaries"},{"operation":"api.glossaries.terms.delete","name":"Delete Term","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.glossaries.terms.patch","name":"Edit Term","description":"**Required scopes:** `glossary` (Read and Write).","resource":"glossaries"},{"operation":"api.style-guides.getMany","name":"List Style Guides","description":"**Required scopes:** `style-guide` (Read only).","resource":"styleGuides"},{"operation":"api.style-guides.post","name":"Create Style Guide","description":"**Required scopes:** `style-guide` (Read and Write).","resource":"styleGuides"},{"operation":"api.style-guides.get","name":"Get Style Guide","description":"**Required scopes:** `style-guide` (Read only).","resource":"styleGuides"},{"operation":"api.style-guides.delete","name":"Delete Style Guide","description":"**Required scopes:** `style-guide` (Read and Write).","resource":"styleGuides"},{"operation":"api.style-guides.patch","name":"Edit Style Guide","description":"**Required scopes:** `style-guide` (Read and Write).","resource":"styleGuides"},{"operation":"api.tms.getMany","name":"List TMs","description":"**Required scopes:** `tm` (Read only).","resource":"translationMemory"},{"operation":"api.tms.post","name":"Add TM","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.get","name":"Get TM","description":"**Required scopes:** `tm` (Read only).","resource":"translationMemory"},{"operation":"api.tms.delete","name":"Delete TM","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.patch","name":"Edit TM","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.segments.getMany","name":"List TM Segments","description":"**Required scopes:** `tm` (Read only).\n\nGet list of translation unit segments","resource":"translationMemory"},{"operation":"api.tms.segments.post","name":"Create TM Segment","description":"**Required scopes:** `tm` (Read and Write).\n\nCreate translation unit with given segments","resource":"translationMemory"},{"operation":"api.tms.segments.clear","name":"Clear TM","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.exports.post","name":"Export TM","description":"**Required scopes:** `tm` (Read only).","resource":"translationMemory"},{"operation":"api.tms.exports.get","name":"Check TM Export Status","description":"**Required scopes:** `tm` (Read only).","resource":"translationMemory"},{"operation":"api.tms.exports.download.download","name":"Download TM","description":"**Required scopes:** `tm` (Read only).","resource":"translationMemory"},{"operation":"api.projects.tms.concordance.post","name":"Concordance search in TMs","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.imports.post","name":"Import TM","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.imports.get","name":"Check TM Import Status","description":"**Required scopes:** `tm` (Read and Write).","resource":"translationMemory"},{"operation":"api.tms.segments.get","name":"Get TM Segment","description":"**Required scopes:** `tm` (Read only).\n\nGet segments of translation unit","resource":"translationMemory"},{"operation":"api.tms.segments.delete","name":"Delete TM Segment","description":"**Required scopes:** `tm` (Read and Write).\n\nDelete all segments of translation unit","resource":"translationMemory"},{"operation":"api.tms.segments.patch","name":"Edit TM Segment","description":"**Required scopes:** `tm` (Read and Write).\n\nEdit segment of translation unit","resource":"translationMemory"},{"operation":"api.mts.getMany","name":"List MTs","description":"**Required scopes:** `mt` (Read only).","resource":"machineTranslationEngines"},{"operation":"api.mts.get","name":"Get MT","description":"**Required scopes:** `mt` (Read only).","resource":"machineTranslationEngines"},{"operation":"api.mts.translations.post","name":"Translate via MT","description":"**Required scopes:** `mt` (Read and Write).","resource":"machineTranslationEngines"},{"operation":"api.projects.branches.languages.progress.getMany","name":"Get Branch Progress","description":"**Required scopes:** `project.status.progress` (Read only).","resource":"translationStatus"},{"operation":"api.projects.directories.languages.progress.getMany","name":"Get Directory Progress","description":"**Required scopes:** `project.status.progress` (Read only).","resource":"translationStatus"},{"operation":"api.projects.files.languages.progress.getMany","name":"Get File Progress","description":"**Required scopes:** `project.status.progress` (Read only).","resource":"translationStatus"},{"operation":"api.projects.languages.files.progress.getMany","name":"Get Language Progress","description":"**Required scopes:** `project.status.progress` (Read only).","resource":"translationStatus"},{"operation":"api.projects.languages.progress.getMany","name":"Get Project Progress","description":"**Required scopes:** `project.status.progress` (Read only).","resource":"translationStatus"},{"operation":"api.projects.qa-checks.revalidate.post","name":"Revalidate QA Checks","description":"**Required scopes:** `project.status.qa-check` (Read and Write).\n\nTriggers revalidation of all QA checks for the project","resource":"translationStatus"},{"operation":"api.projects.qa-checks.revalidate.get","name":"QA Checks Revalidation Status","description":"**Required scopes:** `project.status.qa-check` (Read and Write).\n\nReturns the status of QA checks revalidation job","resource":"translationStatus"},{"operation":"api.projects.qa-checks.revalidate.delete","name":"Cancel QA Checks Revalidation","description":"**Required scopes:** `project.status.qa-check` (Read and Write).\n\nCancels the QA checks revalidation job","resource":"translationStatus"},{"operation":"api.projects.qa-checks.getMany","name":"List QA Check Issues","description":"**Required scopes:** `project.status.qa-check` (Read only).","resource":"translationStatus"},{"operation":"api.reports.archives.getMany","name":"List Report Archives","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.users.reports.archives.get","name":"Get Report Archive","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.users.reports.archives.delete","name":"Delete Report Archive","description":"**Required scopes:** `project.report` (Read and Write).","resource":"reports"},{"operation":"api.reports.archives.exports.post","name":"Export Report Archive","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.users.reports.archives.exports.get","name":"Check Report Archive Export Status","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.users.reports.archives.exports.download.get","name":"Download Report Archive","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.projects.reports.post","name":"Generate Report","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.projects.reports.get","name":"Check Report Generation Status","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.projects.reports.download.download","name":"Download Report","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.projects.reports.settings-templates.getMany","name":"List Report Settings Templates","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.projects.reports.settings-templates.post","name":"Add Report Settings Template","description":"**Required scopes:** `project.report` (Read and Write).","resource":"reports"},{"operation":"api.projects.reports.settings-templates.get","name":"Get Report Settings Template","description":"**Required scopes:** `project.report` (Read only).","resource":"reports"},{"operation":"api.projects.reports.settings-templates.delete","name":"Delete Report Settings Template","description":"**Required scopes:** `project.report` (Read and Write).","resource":"reports"},{"operation":"api.projects.reports.settings-templates.patch","name":"Edit Report Settings Template","description":"**Required scopes:** `project.report` (Read and Write).","resource":"reports"},{"operation":"api.users.reports.settings-templates.getMany","name":"List User Report Settings Templates","description":"**Required scopes:** `user` (Read only).","resource":"reports"},{"operation":"api.users.reports.settings-templates.post","name":"Add User Report Settings Template","description":"**Required scopes:** `user` (Read and Write).","resource":"reports"},{"operation":"api.users.reports.settings-templates.get","name":"Get User Report Settings Template","description":"**Required scopes:** `user` (Read only).","resource":"reports"},{"operation":"api.users.reports.settings-templates.delete","name":"Delete User Report Settings Template","description":"**Required scopes:** `user` (Read and Write).","resource":"reports"},{"operation":"api.users.reports.settings-templates.patch","name":"Edit User Report Settings Template","description":"**Required scopes:** `user` (Read and Write).","resource":"reports"},{"operation":"api.users.tasks.getMany","name":"List Tasks","description":"**Required scopes:** `project.task` (Read only).\n\nLists all of the user's project tasks.","resource":"tasks"},{"operation":"api.projects.tasks.exports.post","name":"Export Project Task Strings","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.settings-templates.getMany","name":"List Project Task Settings Templates","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.settings-templates.post","name":"Add Project Task Settings Template","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.settings-templates.get","name":"Get Project Task Settings Template","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.settings-templates.delete","name":"Delete Project Task Settings Template","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.settings-templates.patch","name":"Edit Project Task Settings Template","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.getMany","name":"List Project Tasks","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.post","name":"Add Project Task","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.get","name":"Get Project Task","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.delete","name":"Delete Project Task","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.comments.getMany","name":"List Project Task Comments","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.comments.post","name":"Add Project Task Comment","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.comments.get","name":"Get Project Task Comment","description":"**Required scopes:** `project.task` (Read only).","resource":"tasks"},{"operation":"api.projects.tasks.comments.delete","name":"Delete Project Task Comment","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.comments.patch","name":"Edit Project Task Comment","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.projects.tasks.patch","name":"Edit Project Task","description":"**Required scopes:** `project.task` (Read and Write).","resource":"tasks"},{"operation":"api.user.tasks.getMany","name":"List User Tasks","resource":"tasks"},{"operation":"api.user.tasks.patch","name":"Edit Task Archived Status","resource":"tasks"},{"operation":"api.user.get","name":"Get Authenticated User","resource":"users"},{"operation":"api.user.patch","name":"Edit Authenticated User","resource":"users"},{"operation":"api.projects.members.getMany","name":"List Project Members","description":"**Required scopes:** `project.member` (Read only).","resource":"users"},{"operation":"api.projects.members.post","name":"Add Project Member","description":"**Required scopes:** `project.member` (Read and Write).","resource":"users"},{"operation":"api.projects.members.get","name":"Get Member Info","description":"**Required scopes:** `project.member` (Read only).","resource":"users"},{"operation":"api.projects.members.put","name":"Replace Project Member Permissions","description":"**Required scopes:** `project.member` (Read and Write).","resource":"users"},{"operation":"api.projects.members.delete","name":"Delete Member From Project","description":"**Required scopes:** `project.member` (Read and Write).","resource":"users"},{"operation":"api.projects.webhooks.getMany","name":"List Webhooks","description":"**Required scopes:** `project.webhook` (Read only).","resource":"webhooks"},{"operation":"api.projects.webhooks.post","name":"Add Webhook","description":"**Required scopes:** `project.webhook` (Read and Write).","resource":"webhooks"},{"operation":"api.projects.webhooks.get","name":"Get Webhook","description":"**Required scopes:** `project.webhook` (Read only).","resource":"webhooks"},{"operation":"api.projects.webhooks.delete","name":"Delete Webhook","description":"**Required scopes:** `project.webhook` (Read and Write).","resource":"webhooks"},{"operation":"api.projects.webhooks.patch","name":"Edit Webhook","description":"**Required scopes:** `project.webhook` (Read and Write).","resource":"webhooks"},{"operation":"api.webhooks.getMany","name":"List Webhooks","description":"**Required scopes:** `webhook` (Read only).","resource":"organizationWebhooks"},{"operation":"api.webhooks.post","name":"Add Webhook","description":"**Required scopes:** `webhook` (Read and Write).","resource":"organizationWebhooks"},{"operation":"api.webhooks.get","name":"Get Webhook","description":"**Required scopes:** `webhook` (Read only).","resource":"organizationWebhooks"},{"operation":"api.webhooks.delete","name":"Delete Webhook","description":"**Required scopes:** `webhook` (Read and Write).","resource":"organizationWebhooks"},{"operation":"api.webhooks.patch","name":"Edit Webhook","description":"**Required scopes:** `webhook` (Read and Write).","resource":"organizationWebhooks"},{"operation":"api.projects.dictionaries.getMany","name":"List Dictionaries","description":"**Required scopes:** `project.dictionary` (Read only).","resource":"dictionaries"},{"operation":"api.projects.dictionaries.patch","name":"Edit Dictionary","description":"**Required scopes:** `project.dictionary` (Read and Write).","resource":"dictionaries"},{"operation":"api.applications.installations.getMany","name":"List Application Installations","description":"**Required scopes:** `application` (Read only).","resource":"applications"},{"operation":"api.applications.installations.post","name":"Install Application","description":"**Required scopes:** `application` (Read and Write).","resource":"applications"},{"operation":"api.applications.installations.get","name":"Get Application Installation","description":"**Required scopes:** `application` (Read only).","resource":"applications"},{"operation":"api.applications.installations.delete","name":"Delete Application Installation","description":"**Required scopes:** `application` (Read and Write).","resource":"applications"},{"operation":"api.applications.installations.patch","name":"Edit Application Installation","description":"**Required scopes:** `application` (Read and Write).","resource":"applications"},{"operation":"api.applications.api.get","name":"Get Application Data","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"},{"operation":"api.applications.api.put","name":"Update or Restore Application Data","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"},{"operation":"api.applications.api.post","name":"Add Application Data","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"},{"operation":"api.applications.api.delete","name":"Delete Application Data","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"},{"operation":"api.applications.api.patch","name":"Edit Application Data","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"},{"operation":"api.applications.integrations.crowdin.files","name":"List Crowdin Files","resource":"integrations"},{"operation":"api.applications.integrations.file.progress","name":"Get File Progress","resource":"integrations"},{"operation":"api.applications.integrations.integration.files","name":"List Integration Files","resource":"integrations"},{"operation":"api.applications.integrations.crowdin.update","name":"Update Crowdin Files","resource":"integrations"},{"operation":"api.applications.integrations.integration.update","name":"Update Integration Files","resource":"integrations"},{"operation":"api.applications.integrations.job.list","name":"List Jobs","resource":"integrations"},{"operation":"api.applications.integrations.job.info","name":"Get Job Info","resource":"integrations"},{"operation":"api.applications.integrations.job.cancel","name":"Cancel Job","resource":"integrations"},{"operation":"api.applications.integrations.settings.get","name":"Get Application Settings","resource":"integrations"},{"operation":"api.applications.integrations.settings.update","name":"Update Application Settings","resource":"integrations"},{"operation":"api.applications.integrations.sync.settings.get","name":"Get Sync Settings","resource":"integrations"},{"operation":"api.applications.integrations.sync.settings.update","name":"Update Sync Settings","resource":"integrations"},{"operation":"api.applications.integrations.integration.fields","name":"Integration Login Form Fields","resource":"integrations"},{"operation":"api.applications.integrations.integration.login","name":"Integration Login","resource":"integrations"},{"operation":"api.projects.bundles.getMany","name":"List Bundles","description":"**Required scopes:** `project.translation` (Read only).","resource":"bundles"},{"operation":"api.projects.bundles.post","name":"Add Bundle","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"bundles"},{"operation":"api.projects.bundles.get","name":"Get Bundle","description":"**Required scopes:** `project.source.file` (Read only).","resource":"bundles"},{"operation":"api.projects.bundles.delete","name":"Delete Bundle","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"bundles"},{"operation":"api.projects.bundles.patch","name":"Edit Bundle","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"bundles"},{"operation":"api.projects.bundles.exports.download.get","name":"Download Bundle","description":"**Required scopes:** `project.translation` (Read only).","resource":"bundles"},{"operation":"api.projects.bundles.exports.post","name":"Export Bundle","description":"**Required scopes:** `project.translation` (Read only).","resource":"bundles"},{"operation":"api.projects.bundles.exports.get","name":"Check Bundle Export Status","description":"**Required scopes:** `project.translation` (Read only).","resource":"bundles"},{"operation":"api.projects.bundles.files.getMany","name":"Bundle List Files","description":"**Required scopes:** `project.source.file` (Read only).","resource":"bundles"},{"operation":"api.projects.distributions.getMany","name":"List Distributions","description":"**Required scopes:** `project.translation` (Read only).","resource":"distributions"},{"operation":"api.projects.distributions.post","name":"Add Distribution","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"distributions"},{"operation":"api.projects.distributions.get","name":"Get Distribution","description":"**Required scopes:** `project.translation` (Read only).","resource":"distributions"},{"operation":"api.projects.distributions.delete","name":"Delete Distribution","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"distributions"},{"operation":"api.projects.distributions.patch","name":"Edit Distribution","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"distributions"},{"operation":"api.projects.distributions.release.get","name":"Get Distribution Release","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"distributions"},{"operation":"api.projects.distributions.release.post","name":"Release Distribution","description":"**Required scopes:** `project.translation` (Read and Write).","resource":"distributions"},{"operation":"api.projects.labels.strings.post","name":"Assign Label to Strings","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.projects.labels.strings.deleteMany","name":"Unassign Label from Strings","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.projects.labels.getMany","name":"List Labels","description":"**Required scopes:** `project.source.file` (Read only).","resource":"labels"},{"operation":"api.projects.labels.post","name":"Add Label","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.projects.labels.get","name":"Get Label","description":"**Required scopes:** `project.source.file` (Read only).","resource":"labels"},{"operation":"api.projects.labels.delete","name":"Delete Label","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.projects.labels.patch","name":"Edit Label","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.projects.labels.screenshots.post","name":"Assign Label to Screenshots","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.projects.labels.screenshots.deleteMany","name":"Unassign Label from Screenshots","description":"**Required scopes:** `project.source.file` (Read and Write).","resource":"labels"},{"operation":"api.notify.post","name":"Send Notification to Authenticated User","description":"**Required scopes:** `notification` (Read and Write).","resource":"notifications"},{"operation":"api.projects.notify.post","name":"Send Notification To Project Members","description":"**Required scopes:** `project` (Read and Write).","resource":"notifications"},{"operation":"api.users.security-logs.getMany","name":"List User Security Logs","description":"**Required scopes:** `security-log` (Read only).","resource":"securityLogs"},{"operation":"api.users.security-logs.get","name":"Get User Security Log","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"]}


