{
  "service": "templated",
  "displayName": "Templated",
  "categories": [
    "Design & Media",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "templated_api_key",
      "description": "Templated API key used with the Authorization Bearer header. Find it in the API Key tab: https://app.templated.io/api-key."
    }
  ],
  "homepageUrl": "https://templated.io",
  "actions": [
    {
      "id": "templated.create_render",
      "service": "templated",
      "name": "create_render",
      "description": "Create a Templated render from one template with optional shared layer overrides and image or PDF output settings.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "minLength": 1,
            "description": "Template ID to render."
          },
          "format": {
            "type": "string",
            "enum": [
              "jpg",
              "png",
              "webp",
              "pdf"
            ],
            "description": "Output format for the render."
          },
          "transparent": {
            "type": "boolean",
            "description": "Whether the background should be transparent for PNG renders."
          },
          "flatten": {
            "type": "boolean",
            "description": "Whether PDF output should be flattened."
          },
          "cmyk": {
            "type": "boolean",
            "description": "Whether PDF output should use CMYK color mode."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Optional custom name for the render."
          },
          "background": {
            "type": "string",
            "minLength": 1,
            "description": "Optional background color override."
          },
          "width": {
            "type": "integer",
            "minimum": 100,
            "maximum": 5000,
            "description": "Optional custom render width in pixels."
          },
          "height": {
            "type": "integer",
            "minimum": 100,
            "maximum": 5000,
            "description": "Optional custom render height in pixels."
          },
          "scale": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 2,
            "description": "Optional render scale factor."
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "description": "Optional external identifier for the render."
          },
          "async": {
            "type": "boolean",
            "description": "Whether the render should be created asynchronously."
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional webhook URL that receives the final Render object.",
            "format": "uri"
          },
          "layers": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string",
                  "description": "Replacement text for the layer."
                },
                "image_url": {
                  "type": "string",
                  "description": "Replacement image URL for an image layer.",
                  "format": "uri"
                },
                "color": {
                  "type": "string",
                  "description": "Primary color override such as #FF0000."
                },
                "color_2": {
                  "type": "string",
                  "description": "Secondary text color override."
                },
                "background": {
                  "type": "string",
                  "description": "Background color override."
                },
                "font_family": {
                  "type": "string",
                  "description": "Primary font family override."
                },
                "font_family_2": {
                  "type": "string",
                  "description": "Secondary font family override."
                },
                "font_size": {
                  "type": "string",
                  "description": "Font size override such as 24px or 12pt."
                },
                "font_weight": {
                  "type": "string",
                  "description": "Font weight override."
                },
                "letter_spacing": {
                  "type": "string",
                  "description": "Letter spacing override."
                },
                "line_height": {
                  "type": "string",
                  "description": "Line height override."
                },
                "text_stroke_width": {
                  "type": "number",
                  "description": "Text stroke width in pixels."
                },
                "text_stroke_color": {
                  "type": "string",
                  "description": "Text stroke color override."
                },
                "text_highlight_color": {
                  "type": "string",
                  "description": "Text highlight color override."
                },
                "padding_x": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Horizontal padding in pixels."
                },
                "padding_y": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Vertical padding in pixels."
                },
                "horizontal_align": {
                  "type": "string",
                  "description": "Horizontal text alignment override."
                },
                "vertical_align": {
                  "type": "string",
                  "description": "Vertical text alignment override."
                },
                "autofit": {
                  "type": "string",
                  "description": "Auto-fit mode such as width or height."
                },
                "border_width": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Border width in pixels."
                },
                "border_color": {
                  "type": "string",
                  "description": "Border color override."
                },
                "border_radius": {
                  "type": "string",
                  "description": "Border radius override."
                },
                "border_style": {
                  "type": "string",
                  "description": "Border style override."
                },
                "dash_length": {
                  "type": "number",
                  "description": "Custom dash length for dashed borders."
                },
                "dash_gap": {
                  "type": "number",
                  "description": "Custom gap length for dashed borders."
                },
                "fill": {
                  "type": "string",
                  "description": "Fill color or gradient override."
                },
                "stroke": {
                  "type": "string",
                  "description": "Stroke color override."
                },
                "preserve_ratio": {
                  "type": "boolean",
                  "description": "Whether vector content keeps its aspect ratio."
                },
                "hide": {
                  "type": "boolean",
                  "description": "Whether the layer should be hidden."
                },
                "opacity": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "description": "Layer opacity between 0 and 1."
                },
                "link": {
                  "type": "string",
                  "description": "Clickable URL applied to PDF renders.",
                  "format": "uri"
                },
                "x": {
                  "type": "integer",
                  "description": "Layer X position in pixels."
                },
                "y": {
                  "type": "integer",
                  "description": "Layer Y position in pixels."
                },
                "rotation": {
                  "type": "integer",
                  "description": "Layer rotation in degrees."
                },
                "width": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Layer width in pixels."
                },
                "height": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Layer height in pixels."
                },
                "flip_x": {
                  "type": "boolean",
                  "description": "Whether the layer is flipped horizontally."
                },
                "flip_y": {
                  "type": "boolean",
                  "description": "Whether the layer is flipped vertically."
                },
                "object_fit": {
                  "type": "string",
                  "description": "Image object-fit override."
                },
                "object_position": {
                  "type": "string",
                  "description": "Image object-position override."
                },
                "crop_x": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "Crop X percentage."
                },
                "crop_y": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "Crop Y percentage."
                },
                "crop_width": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "Crop width percentage."
                },
                "crop_height": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "Crop height percentage."
                },
                "filter": {
                  "type": "string",
                  "description": "CSS filter override for image layers."
                },
                "barcode_format": {
                  "type": "string",
                  "description": "Barcode format override."
                },
                "rating": {
                  "type": "number",
                  "description": "Rating value for a star-rating layer."
                },
                "html": {
                  "type": "string",
                  "description": "Custom HTML content override."
                }
              },
              "additionalProperties": true,
              "description": "Layer override object forwarded to Templated."
            },
            "description": "Map of template layer names to layer override objects."
          }
        },
        "additionalProperties": false,
        "required": [
          "templateId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "renders": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Templated render.",
              "format": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Output format of the render."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "description": "Render objects returned by Templated after normalization."
          }
        },
        "additionalProperties": false,
        "required": [
          "renders"
        ],
        "description": "Normalized Templated render creation result."
      }
    },
    {
      "id": "templated.delete_render",
      "service": "templated",
      "name": "delete_render",
      "description": "Delete a Templated render by its render ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "renderId": {
            "type": "string",
            "minLength": 1,
            "description": "The render ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "renderId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Whether the render delete request succeeded."
          },
          "renderId": {
            "type": "string",
            "description": "Identifier of the deleted render."
          }
        },
        "additionalProperties": false,
        "required": [
          "deleted",
          "renderId"
        ],
        "description": "Templated render delete acknowledgement."
      }
    },
    {
      "id": "templated.get_account",
      "service": "templated",
      "name": "get_account",
      "description": "Get the current Templated account associated with the API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier of the Templated account."
              },
              "name": {
                "type": "string",
                "description": "Display name of the Templated account."
              },
              "email": {
                "type": "string",
                "description": "Email address associated with the Templated account."
              },
              "plan": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Current Templated plan name when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "watermark": {
                "type": "boolean",
                "description": "Whether generated renders include the Templated watermark."
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Timestamp when the account was created."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "Templated account returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "account"
        ],
        "description": "Current Templated account."
      }
    },
    {
      "id": "templated.get_render",
      "service": "templated",
      "name": "get_render",
      "description": "Retrieve a single Templated render by its render ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "renderId": {
            "type": "string",
            "minLength": 1,
            "description": "The render ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "renderId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "render": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Templated render.",
            "format": {
              "anyOf": [
                {
                  "type": "string",
                  "description": "Output format of the render."
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "render"
        ],
        "description": "Single Templated render."
      }
    },
    {
      "id": "templated.get_template",
      "service": "templated",
      "name": "get_template",
      "description": "Retrieve a single Templated template by its template ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "minLength": 1,
            "description": "The template ID."
          },
          "includeLayers": {
            "type": "boolean",
            "description": "Whether to include template layers in the response."
          },
          "includePages": {
            "type": "boolean",
            "description": "Whether to include template pages in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "templateId"
        ],
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "template": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Templated template."
          }
        },
        "additionalProperties": false,
        "required": [
          "template"
        ],
        "description": "Single Templated template."
      }
    },
    {
      "id": "templated.list_renders",
      "service": "templated",
      "name": "list_renders",
      "description": "List all renders owned by the current Templated account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "renders": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Templated render.",
              "format": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Output format of the render."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "description": "Renders returned by Templated."
          }
        },
        "additionalProperties": false,
        "required": [
          "renders"
        ],
        "description": "Templated render list."
      }
    },
    {
      "id": "templated.list_templates",
      "service": "templated",
      "name": "list_templates",
      "description": "List Templated templates with optional filters for name, dimensions, and tags.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "Optional template name filter."
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based page number for pagination."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum number of templates to return."
          },
          "width": {
            "type": "integer",
            "minimum": 1,
            "description": "Filter templates by width in pixels."
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "description": "Filter templates by height in pixels."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Filter templates by tags.",
            "minItems": 1
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "description": "Filter templates by external identifier."
          },
          "includeLayers": {
            "type": "boolean",
            "description": "Whether to include template layers in the response."
          },
          "includePages": {
            "type": "boolean",
            "description": "Whether to include template pages in the response."
          }
        },
        "additionalProperties": false,
        "description": "Action input."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "templates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Templated template."
            },
            "description": "Templates returned by Templated."
          }
        },
        "additionalProperties": false,
        "required": [
          "templates"
        ],
        "description": "Templated template list."
      }
    }
  ]
}
