{
  "service": "pandadoc",
  "displayName": "PandaDoc",
  "categories": [
    "Productivity",
    "Communication"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "pandadoc_api_key",
      "description": "PandaDoc API key used with the Authorization: API-Key <token> header. Generate Sandbox or Production keys in Dev Center > Configuration.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.pandadoc.com",
  "actions": [
    {
      "id": "pandadoc.create_document_attachment",
      "service": "pandadoc",
      "name": "create_document_attachment",
      "description": "Upload an attachment file to a draft PandaDoc document.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "minLength": 1,
            "description": "The PandaDoc document identifier."
          },
          "file": {
            "type": "object",
            "properties": {
              "fileId": {
                "type": "string",
                "minLength": 1,
                "description": "The transit file identifier returned by POST /api/files."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Optional filename override to send to the provider."
              },
              "mimeType": {
                "type": "string",
                "minLength": 1,
                "description": "Optional MIME type override to send to the provider."
              }
            },
            "additionalProperties": false,
            "required": [
              "fileId"
            ],
            "description": "Attachment file uploaded through POST /api/files."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for uploading a PandaDoc document attachment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A loose JSON object returned by the PandaDoc API."
      }
    },
    {
      "id": "pandadoc.create_document_from_file",
      "service": "pandadoc",
      "name": "create_document_from_file",
      "description": "Create a PandaDoc document from a PDF file reference and document metadata.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The document name."
          },
          "file": {
            "type": "object",
            "properties": {
              "fileId": {
                "type": "string",
                "minLength": 1,
                "description": "The transit file identifier returned by POST /api/files."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Optional filename override to send to the provider."
              },
              "mimeType": {
                "type": "string",
                "minLength": 1,
                "description": "Optional MIME type override to send to the provider."
              }
            },
            "additionalProperties": false,
            "required": [
              "fileId"
            ],
            "description": "PDF, DOCX, or RTF file uploaded through POST /api/files."
          },
          "recipients": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A loose JSON object returned by the PandaDoc API."
            },
            "description": "Document recipients."
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A loose JSON object returned by the PandaDoc API."
            },
            "description": "Document tokens."
          },
          "fields": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A loose JSON object returned by the PandaDoc API."
          },
          "metadata": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A loose JSON object returned by the PandaDoc API."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Tags assigned to the document."
          },
          "folder_uuid": {
            "type": "string",
            "description": "Target folder UUID."
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "file"
        ],
        "description": "Input parameters for creating a PandaDoc document from a file."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A PandaDoc document."
      }
    },
    {
      "id": "pandadoc.create_folder",
      "service": "pandadoc",
      "name": "create_folder",
      "description": "Create a new document folder in PandaDoc.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The folder name."
          },
          "parent_uuid": {
            "type": "string",
            "description": "Parent folder UUID."
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "description": "Input parameters for creating a PandaDoc folder."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A PandaDoc document folder."
      }
    },
    {
      "id": "pandadoc.create_or_update_contact",
      "service": "pandadoc",
      "name": "create_or_update_contact",
      "description": "Create a PandaDoc contact or update the existing contact with the same email address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the contact.",
            "format": "email"
          },
          "first_name": {
            "type": "string",
            "description": "First name of the contact."
          },
          "last_name": {
            "type": "string",
            "description": "Last name of the contact."
          },
          "company": {
            "type": "string",
            "description": "Company name of the contact."
          },
          "phone": {
            "type": "string",
            "description": "Phone number of the contact."
          },
          "job_title": {
            "type": "string",
            "description": "Job title of the contact."
          },
          "state": {
            "type": "string",
            "description": "State of the contact."
          },
          "city": {
            "type": "string",
            "description": "City of the contact."
          },
          "country": {
            "type": "string",
            "description": "Country of the contact."
          },
          "postal_code": {
            "type": "string",
            "description": "Postal code of the contact."
          },
          "street_address": {
            "type": "string",
            "description": "Street address of the contact."
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "description": "Input parameters for creating or updating a PandaDoc contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A PandaDoc contact."
      }
    },
    {
      "id": "pandadoc.create_template",
      "service": "pandadoc",
      "name": "create_template",
      "description": "Create a PandaDoc template from structured content or from a transit file upload.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The template name."
          },
          "description": {
            "type": "string",
            "description": "Optional description of the template."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Tags assigned to the template."
          },
          "content": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A loose JSON object returned by the PandaDoc API."
          },
          "file": {
            "type": "object",
            "properties": {
              "fileId": {
                "type": "string",
                "minLength": 1,
                "description": "The transit file identifier returned by POST /api/files."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Optional filename override to send to the provider."
              },
              "mimeType": {
                "type": "string",
                "minLength": 1,
                "description": "Optional MIME type override to send to the provider."
              }
            },
            "additionalProperties": false,
            "required": [
              "fileId"
            ],
            "description": "PDF file uploaded through POST /api/files."
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "description": "Input parameters for creating a PandaDoc template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A PandaDoc template."
      }
    },
    {
      "id": "pandadoc.create_webhook",
      "service": "pandadoc",
      "name": "create_webhook",
      "description": "Create a PandaDoc webhook subscription for document lifecycle events.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Webhook name."
          },
          "url": {
            "type": "string",
            "description": "Webhook destination URL.",
            "format": "uri"
          },
          "triggers": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "PandaDoc event trigger names."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for creating a PandaDoc webhook."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A loose JSON object returned by the PandaDoc API."
      }
    },
    {
      "id": "pandadoc.delete_contact",
      "service": "pandadoc",
      "name": "delete_contact",
      "description": "Delete a contact from the connected PandaDoc workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contact_id": {
            "type": "string",
            "minLength": 1,
            "description": "The PandaDoc contact identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for deleting a PandaDoc contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the contact was deleted."
          }
        },
        "additionalProperties": false,
        "description": "PandaDoc contact deletion response."
      }
    },
    {
      "id": "pandadoc.delete_template",
      "service": "pandadoc",
      "name": "delete_template",
      "description": "Delete a template from the connected PandaDoc workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "template_id": {
            "type": "string",
            "minLength": 1,
            "description": "The PandaDoc template identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for deleting a PandaDoc template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Deletion status returned by PandaDoc."
          },
          "message": {
            "type": "string",
            "description": "Deletion message returned by PandaDoc."
          }
        },
        "additionalProperties": false,
        "description": "PandaDoc template deletion response."
      }
    },
    {
      "id": "pandadoc.get_document_details",
      "service": "pandadoc",
      "name": "get_document_details",
      "description": "Retrieve detailed metadata for a specific PandaDoc document.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "minLength": 1,
            "description": "The PandaDoc document identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a PandaDoc document."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A PandaDoc document."
      }
    },
    {
      "id": "pandadoc.get_template_details",
      "service": "pandadoc",
      "name": "get_template_details",
      "description": "Retrieve detailed metadata for a specific PandaDoc template.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "template_id": {
            "type": "string",
            "minLength": 1,
            "description": "The PandaDoc template identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a PandaDoc template."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A PandaDoc template."
      }
    },
    {
      "id": "pandadoc.list_contacts",
      "service": "pandadoc",
      "name": "list_contacts",
      "description": "List contacts in the connected PandaDoc workspace, optionally filtered by email.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Only return contacts with this email address.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing PandaDoc contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A PandaDoc contact."
            },
            "description": "Contacts returned by PandaDoc."
          }
        },
        "additionalProperties": false,
        "description": "PandaDoc contact list response."
      }
    },
    {
      "id": "pandadoc.list_document_folders",
      "service": "pandadoc",
      "name": "list_document_folders",
      "description": "List document folders in the connected PandaDoc workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of results to return."
          },
          "parent_uuid": {
            "type": "string",
            "description": "Parent folder UUID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing PandaDoc document folders."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A PandaDoc document folder."
            },
            "description": "Folders returned by PandaDoc."
          },
          "count": {
            "type": "integer",
            "description": "Total number of results available when PandaDoc returns pagination metadata."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the next page of results, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the previous page of results, or null when there is no previous page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "PandaDoc document folder list response."
      }
    },
    {
      "id": "pandadoc.list_templates",
      "service": "pandadoc",
      "name": "list_templates",
      "description": "List templates available in the connected PandaDoc workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to return."
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of results to return."
          },
          "q": {
            "type": "string",
            "description": "Search query."
          },
          "id": {
            "type": "string",
            "description": "Filter locally by template ID."
          },
          "shared": {
            "type": "boolean",
            "description": "Whether to include shared templates."
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether to include deleted templates."
          },
          "folder_uuid": {
            "type": "string",
            "description": "Folder UUID filter."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Fields to include in the PandaDoc response."
          },
          "tag": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Tags to filter by."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing PandaDoc templates."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A PandaDoc template."
            },
            "description": "Templates returned by PandaDoc."
          },
          "count": {
            "type": "integer",
            "description": "Total number of results available when PandaDoc returns pagination metadata."
          },
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the next page of results, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the previous page of results, or null when there is no previous page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "PandaDoc template list response."
      }
    }
  ]
}
