{
  "service": "cloudlayer",
  "displayName": "cloudlayer.io",
  "categories": [
    "Productivity",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "cl_live_...",
      "description": "cloudlayer.io API key sent with the X-API-Key header. Find and manage your keys in the official cloudlayer.io dashboard: https://beta-app.cloudlayer.io",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://cloudlayer.io",
  "actions": [
    {
      "id": "cloudlayer.create_html_pdf_job",
      "service": "cloudlayer",
      "name": "create_html_pdf_job",
      "description": "Create an asynchronous cloudlayer.io HTML-to-PDF job from base64-encoded HTML and return the new job status.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "minLength": 1,
            "description": "The output page format such as `a4` or `letter`."
          },
          "margin": {
            "type": "object",
            "properties": {
              "top": {
                "type": "string",
                "minLength": 1,
                "description": "The top page margin, such as `0.5in` or `20px`."
              },
              "right": {
                "type": "string",
                "minLength": 1,
                "description": "The right page margin, such as `0.5in` or `20px`."
              },
              "bottom": {
                "type": "string",
                "minLength": 1,
                "description": "The bottom page margin, such as `0.5in` or `20px`."
              },
              "left": {
                "type": "string",
                "minLength": 1,
                "description": "The left page margin, such as `0.5in` or `20px`."
              }
            },
            "additionalProperties": false,
            "description": "The optional page margin overrides forwarded to cloudlayer.io."
          },
          "printBackground": {
            "type": "boolean",
            "description": "Whether the generated PDF should include background graphics and colors."
          },
          "waitUntil": {
            "type": "string",
            "minLength": 1,
            "description": "The page load event to wait for before rendering, such as `load` or `networkidle0`."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum page load time in milliseconds before rendering fails."
          },
          "filename": {
            "type": "string",
            "minLength": 1,
            "description": "The optional output filename hint for the generated PDF."
          },
          "html": {
            "type": "string",
            "minLength": 1,
            "description": "The base64-encoded HTML document to render as a PDF."
          }
        },
        "additionalProperties": false,
        "required": [
          "html"
        ],
        "description": "Input parameters for creating a cloudlayer.io HTML-to-PDF job."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io job identifier."
          },
          "uid": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io user identifier that owns the job."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The upstream job type such as `html-pdf` or `url-pdf`."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The current job status such as `pending`, `success`, or `error`."
          },
          "params": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The upstream request parameters recorded for the job when available."
          },
          "size": {
            "type": "integer",
            "description": "The generated output size in bytes when available."
          },
          "processTime": {
            "type": "integer",
            "description": "The upstream processing time in milliseconds when available."
          },
          "apiCreditCost": {
            "type": "integer",
            "description": "The upstream API credit cost charged for this job when available."
          },
          "workerName": {
            "type": "string",
            "minLength": 1,
            "description": "The upstream worker identifier that processed the job."
          },
          "timestamp": {
            "type": "integer",
            "description": "The Unix epoch timestamp in milliseconds when the job was created."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "status"
        ],
        "description": "The normalized cloudlayer.io job payload."
      }
    },
    {
      "id": "cloudlayer.create_template_pdf_job",
      "service": "cloudlayer",
      "name": "create_template_pdf_job",
      "description": "Create an asynchronous cloudlayer.io template-to-PDF job from a base64-encoded template and JSON data.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "minLength": 1,
            "description": "The output page format such as `a4` or `letter`."
          },
          "margin": {
            "type": "object",
            "properties": {
              "top": {
                "type": "string",
                "minLength": 1,
                "description": "The top page margin, such as `0.5in` or `20px`."
              },
              "right": {
                "type": "string",
                "minLength": 1,
                "description": "The right page margin, such as `0.5in` or `20px`."
              },
              "bottom": {
                "type": "string",
                "minLength": 1,
                "description": "The bottom page margin, such as `0.5in` or `20px`."
              },
              "left": {
                "type": "string",
                "minLength": 1,
                "description": "The left page margin, such as `0.5in` or `20px`."
              }
            },
            "additionalProperties": false,
            "description": "The optional page margin overrides forwarded to cloudlayer.io."
          },
          "printBackground": {
            "type": "boolean",
            "description": "Whether the generated PDF should include background graphics and colors."
          },
          "waitUntil": {
            "type": "string",
            "minLength": 1,
            "description": "The page load event to wait for before rendering, such as `load` or `networkidle0`."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum page load time in milliseconds before rendering fails."
          },
          "filename": {
            "type": "string",
            "minLength": 1,
            "description": "The optional output filename hint for the generated PDF."
          },
          "template": {
            "type": "string",
            "minLength": 1,
            "description": "The base64-encoded template source to render as a PDF."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The JSON object used to populate the Nunjucks template variables."
          }
        },
        "additionalProperties": false,
        "required": [
          "template",
          "data"
        ],
        "description": "Input parameters for creating a cloudlayer.io template-to-PDF job."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io job identifier."
          },
          "uid": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io user identifier that owns the job."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The upstream job type such as `html-pdf` or `url-pdf`."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The current job status such as `pending`, `success`, or `error`."
          },
          "params": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The upstream request parameters recorded for the job when available."
          },
          "size": {
            "type": "integer",
            "description": "The generated output size in bytes when available."
          },
          "processTime": {
            "type": "integer",
            "description": "The upstream processing time in milliseconds when available."
          },
          "apiCreditCost": {
            "type": "integer",
            "description": "The upstream API credit cost charged for this job when available."
          },
          "workerName": {
            "type": "string",
            "minLength": 1,
            "description": "The upstream worker identifier that processed the job."
          },
          "timestamp": {
            "type": "integer",
            "description": "The Unix epoch timestamp in milliseconds when the job was created."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "status"
        ],
        "description": "The normalized cloudlayer.io job payload."
      }
    },
    {
      "id": "cloudlayer.create_url_pdf_job",
      "service": "cloudlayer",
      "name": "create_url_pdf_job",
      "description": "Create an asynchronous cloudlayer.io URL-to-PDF job for one public webpage and return the new job status.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "minLength": 1,
            "description": "The output page format such as `a4` or `letter`."
          },
          "margin": {
            "type": "object",
            "properties": {
              "top": {
                "type": "string",
                "minLength": 1,
                "description": "The top page margin, such as `0.5in` or `20px`."
              },
              "right": {
                "type": "string",
                "minLength": 1,
                "description": "The right page margin, such as `0.5in` or `20px`."
              },
              "bottom": {
                "type": "string",
                "minLength": 1,
                "description": "The bottom page margin, such as `0.5in` or `20px`."
              },
              "left": {
                "type": "string",
                "minLength": 1,
                "description": "The left page margin, such as `0.5in` or `20px`."
              }
            },
            "additionalProperties": false,
            "description": "The optional page margin overrides forwarded to cloudlayer.io."
          },
          "printBackground": {
            "type": "boolean",
            "description": "Whether the generated PDF should include background graphics and colors."
          },
          "waitUntil": {
            "type": "string",
            "minLength": 1,
            "description": "The page load event to wait for before rendering, such as `load` or `networkidle0`."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum page load time in milliseconds before rendering fails."
          },
          "filename": {
            "type": "string",
            "minLength": 1,
            "description": "The optional output filename hint for the generated PDF."
          },
          "url": {
            "type": "string",
            "description": "The public webpage URL to render as a PDF.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "Input parameters for creating a cloudlayer.io URL-to-PDF job."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io job identifier."
          },
          "uid": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io user identifier that owns the job."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The upstream job type such as `html-pdf` or `url-pdf`."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The current job status such as `pending`, `success`, or `error`."
          },
          "params": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The upstream request parameters recorded for the job when available."
          },
          "size": {
            "type": "integer",
            "description": "The generated output size in bytes when available."
          },
          "processTime": {
            "type": "integer",
            "description": "The upstream processing time in milliseconds when available."
          },
          "apiCreditCost": {
            "type": "integer",
            "description": "The upstream API credit cost charged for this job when available."
          },
          "workerName": {
            "type": "string",
            "minLength": 1,
            "description": "The upstream worker identifier that processed the job."
          },
          "timestamp": {
            "type": "integer",
            "description": "The Unix epoch timestamp in milliseconds when the job was created."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "status"
        ],
        "description": "The normalized cloudlayer.io job payload."
      }
    },
    {
      "id": "cloudlayer.get_account",
      "service": "cloudlayer",
      "name": "get_account",
      "description": "Get the current cloudlayer.io account usage, limits, and job totals for the API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required for retrieving the current account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "uid": {
                "type": "string",
                "minLength": 1,
                "description": "The unique cloudlayer.io account identifier."
              },
              "subscription": {
                "type": "string",
                "minLength": 1,
                "description": "The subscription price identifier for the current account."
              },
              "subType": {
                "type": "string",
                "minLength": 1,
                "description": "The billing model reported by cloudlayer.io, such as `limit` or `usage`."
              },
              "subActive": {
                "type": "boolean",
                "description": "Whether the current subscription is active."
              },
              "calls": {
                "type": "integer",
                "description": "The API calls used in the current billing period."
              },
              "callsLimit": {
                "type": "integer",
                "description": "The maximum API calls allowed in the current billing period."
              },
              "credit": {
                "type": "number",
                "description": "The remaining API credits when the account uses usage-based billing."
              },
              "bytesTotal": {
                "type": "integer",
                "description": "The total generated output bytes in the current billing period."
              },
              "bytesLimit": {
                "type": "integer",
                "description": "The maximum generated output bytes allowed in the current billing period."
              },
              "computeTimeTotal": {
                "type": "integer",
                "description": "The total rendering compute time used in milliseconds for the current billing period."
              },
              "computeTimeLimit": {
                "type": "integer",
                "description": "The maximum rendering compute time allowed in milliseconds for the current billing period."
              },
              "storageUsed": {
                "type": "integer",
                "description": "The currently used cloud storage in bytes for stored generated assets."
              },
              "storageLimit": {
                "type": "integer",
                "description": "The maximum cloud storage allowed in bytes for stored generated assets."
              },
              "totalJobs": {
                "type": "integer",
                "description": "The total completed jobs for the current billing period."
              },
              "successJobs": {
                "type": "integer",
                "description": "The number of successfully completed jobs."
              },
              "errorJobs": {
                "type": "integer",
                "description": "The number of failed jobs."
              }
            },
            "additionalProperties": false,
            "required": [
              "uid",
              "subscription",
              "subType",
              "subActive",
              "calls",
              "callsLimit",
              "bytesTotal",
              "bytesLimit",
              "computeTimeTotal",
              "computeTimeLimit",
              "storageUsed",
              "storageLimit",
              "totalJobs",
              "successJobs",
              "errorJobs"
            ],
            "description": "The normalized cloudlayer.io account usage snapshot."
          }
        },
        "additionalProperties": false,
        "description": "The normalized output payload for retrieving the current cloudlayer.io account."
      }
    },
    {
      "id": "cloudlayer.get_asset",
      "service": "cloudlayer",
      "name": "get_asset",
      "description": "Get one generated cloudlayer.io asset by asset ID, including its direct download URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io asset identifier to retrieve."
          }
        },
        "additionalProperties": false,
        "required": [
          "assetId"
        ],
        "description": "Input parameters for retrieving one generated cloudlayer.io asset."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "asset": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The cloudlayer.io asset identifier."
              },
              "jobId": {
                "type": "string",
                "minLength": 1,
                "description": "The job identifier that produced the asset."
              },
              "ext": {
                "type": "string",
                "minLength": 1,
                "description": "The generated file extension such as `pdf` or `png`."
              },
              "type": {
                "type": "string",
                "minLength": 1,
                "description": "The generated file MIME type."
              },
              "size": {
                "type": "integer",
                "description": "The generated file size in bytes."
              },
              "url": {
                "type": "string",
                "description": "The pre-authenticated download URL for the generated file.",
                "format": "uri"
              },
              "timestamp": {
                "type": "integer",
                "description": "The Unix epoch timestamp in milliseconds when the asset was created."
              }
            },
            "additionalProperties": false,
            "description": "The normalized cloudlayer.io asset payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized output payload for retrieving one cloudlayer.io asset."
      }
    },
    {
      "id": "cloudlayer.get_job",
      "service": "cloudlayer",
      "name": "get_job",
      "description": "Get one cloudlayer.io job by job ID to inspect status, timing, and request metadata.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "minLength": 1,
            "description": "The cloudlayer.io job identifier to retrieve."
          }
        },
        "additionalProperties": false,
        "required": [
          "jobId"
        ],
        "description": "Input parameters for retrieving one cloudlayer.io job."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "job": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The cloudlayer.io job identifier."
              },
              "uid": {
                "type": "string",
                "minLength": 1,
                "description": "The cloudlayer.io user identifier that owns the job."
              },
              "type": {
                "type": "string",
                "minLength": 1,
                "description": "The upstream job type such as `html-pdf` or `url-pdf`."
              },
              "status": {
                "type": "string",
                "minLength": 1,
                "description": "The current job status such as `pending`, `success`, or `error`."
              },
              "params": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The upstream request parameters recorded for the job when available."
              },
              "size": {
                "type": "integer",
                "description": "The generated output size in bytes when available."
              },
              "processTime": {
                "type": "integer",
                "description": "The upstream processing time in milliseconds when available."
              },
              "apiCreditCost": {
                "type": "integer",
                "description": "The upstream API credit cost charged for this job when available."
              },
              "workerName": {
                "type": "string",
                "minLength": 1,
                "description": "The upstream worker identifier that processed the job."
              },
              "timestamp": {
                "type": "integer",
                "description": "The Unix epoch timestamp in milliseconds when the job was created."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "status"
            ],
            "description": "The normalized cloudlayer.io job payload."
          }
        },
        "additionalProperties": false,
        "description": "The normalized output payload for retrieving one cloudlayer.io job."
      }
    },
    {
      "id": "cloudlayer.list_assets",
      "service": "cloudlayer",
      "name": "list_assets",
      "description": "List recent generated cloudlayer.io assets for the current account with optional cursor pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of assets to return, between 1 and 100."
          },
          "startAfterId": {
            "type": "string",
            "minLength": 1,
            "description": "The asset ID to paginate after for cursor-based listing."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing recent cloudlayer.io assets."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "assets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The cloudlayer.io asset identifier."
                },
                "jobId": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The job identifier that produced the asset."
                },
                "ext": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The generated file extension such as `pdf` or `png`."
                },
                "type": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The generated file MIME type."
                },
                "size": {
                  "type": "integer",
                  "description": "The generated file size in bytes."
                },
                "url": {
                  "type": "string",
                  "description": "The pre-authenticated download URL for the generated file.",
                  "format": "uri"
                },
                "timestamp": {
                  "type": "integer",
                  "description": "The Unix epoch timestamp in milliseconds when the asset was created."
                }
              },
              "additionalProperties": false,
              "description": "The normalized cloudlayer.io asset payload."
            },
            "description": "The recent cloudlayer.io assets returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The normalized output payload for listing cloudlayer.io assets."
      }
    },
    {
      "id": "cloudlayer.list_jobs",
      "service": "cloudlayer",
      "name": "list_jobs",
      "description": "List recent cloudlayer.io jobs for the current account with optional cursor pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of jobs to return, between 1 and 100."
          },
          "startAfterId": {
            "type": "string",
            "minLength": 1,
            "description": "The job ID to paginate after for cursor-based listing."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing recent cloudlayer.io jobs."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "jobs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The cloudlayer.io job identifier."
                },
                "uid": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The cloudlayer.io user identifier that owns the job."
                },
                "type": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The upstream job type such as `html-pdf` or `url-pdf`."
                },
                "status": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The current job status such as `pending`, `success`, or `error`."
                },
                "params": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The upstream request parameters recorded for the job when available."
                },
                "size": {
                  "type": "integer",
                  "description": "The generated output size in bytes when available."
                },
                "processTime": {
                  "type": "integer",
                  "description": "The upstream processing time in milliseconds when available."
                },
                "apiCreditCost": {
                  "type": "integer",
                  "description": "The upstream API credit cost charged for this job when available."
                },
                "workerName": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The upstream worker identifier that processed the job."
                },
                "timestamp": {
                  "type": "integer",
                  "description": "The Unix epoch timestamp in milliseconds when the job was created."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "status"
              ],
              "description": "The normalized cloudlayer.io job payload."
            },
            "description": "The recent cloudlayer.io jobs returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The normalized output payload for listing cloudlayer.io jobs."
      }
    }
  ]
}
