Firma.dev · Schema

Template

CompanyeSignatureAPIDeveloperToolsLowCostWhiteLabel

Properties

Name Type Description
id string Unique identifier for the template
name string Template name
description stringnull Template description
document_url string Pre-signed URL to the PDF document. This is a time-limited signed URL for secure access - see document_url_expires_at for expiration time. Initial URLs are valid for 7 days; refreshed URLs are valid f
document_url_expires_at stringnull ISO 8601 timestamp when the document_url will expire. After this time, the URL will return an access denied error. Fetch the template again to receive a fresh signed URL.
page_count integer Number of pages in the document
expiration_hours integer Hours until signing requests created from this template expire
credit_cost integer Number of credits consumed when a signing request is sent from this template. Minimum value is 1.
settings object
recipients array Template recipients (included in GET single template)
fields array Template fields (included in GET single template)
created_date string Template creation timestamp
updated_date string Template last update timestamp
View JSON Schema on GitHub

JSON Schema

firma-dev-template-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/firma-dev/main/json-schema/firma-dev-template-schema.json",
  "title": "Template",
  "x-generated": "2026-09-25",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/firma-dev-templates-api-openapi.yml#/components/schemas/Template",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique identifier for the template"
    },
    "name": {
      "type": "string",
      "description": "Template name",
      "maxLength": 255
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Template description"
    },
    "document_url": {
      "type": "string",
      "format": "uri",
      "description": "Pre-signed URL to the PDF document. This is a time-limited signed URL for secure access - see document_url_expires_at for expiration time. Initial URLs are valid for 7 days; refreshed URLs are valid for 1 hour. Request a new template retrieval to get a fresh URL if expired."
    },
    "document_url_expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "ISO 8601 timestamp when the document_url will expire. After this time, the URL will return an access denied error. Fetch the template again to receive a fresh signed URL."
    },
    "page_count": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of pages in the document"
    },
    "expiration_hours": {
      "type": "integer",
      "minimum": 1,
      "default": 168,
      "description": "Hours until signing requests created from this template expire"
    },
    "credit_cost": {
      "type": "integer",
      "minimum": 1,
      "default": 1,
      "description": "Number of credits consumed when a signing request is sent from this template. Minimum value is 1."
    },
    "settings": {
      "$ref": "#/$defs/SigningRequestSettings"
    },
    "recipients": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/TemplateUser"
      },
      "description": "Template recipients (included in GET single template)"
    },
    "fields": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/TemplateField"
      },
      "description": "Template fields (included in GET single template)"
    },
    "created_date": {
      "type": "string",
      "format": "date-time",
      "description": "Template creation timestamp"
    },
    "updated_date": {
      "type": "string",
      "format": "date-time",
      "description": "Template last update timestamp"
    }
  },
  "required": [
    "id",
    "name",
    "created_date"
  ],
  "$defs": {
    "DateFormatRules": {
      "type": "object",
      "description": "Formatting rules for date fields. Specifies how date values should be displayed and formatted.",
      "properties": {
        "dateFormat": {
          "type": "string",
          "description": "Date format pattern. Use predefined formats or custom patterns with: yyyy (4-digit year), MM (2-digit month), dd (2-digit day), MMMM (full month name), MMM (abbreviated month name), HH (24-hour), mm (minute), ss (second). Examples: 'MM/dd/yyyy' displays as 01/31/2024, 'MMMM dd, yyyy' displays as January 31, 2024.",
          "enum": [
            "MM/dd/yyyy",
            "dd/MM/yyyy",
            "yyyy-MM-dd",
            "MMMM dd, yyyy",
            "MMM dd, yyyy",
            "dd MMMM yyyy"
          ],
          "default": "MM/dd/yyyy"
        },
        "fontSize": {
          "type": "integer",
          "minimum": 8,
          "maximum": 48,
          "description": "Optional starting/maximum font size in pixels for the rendered field value. Text still auto-shrinks to fit the field box. Omit for automatic sizing. Values outside 8-48 are clamped."
        }
      }
    },
    "FieldValidationRules": {
      "type": [
        "object",
        "null"
      ],
      "description": "Validation rules for field values. Reserved for future use - currently not enforced for any field types.",
      "additionalProperties": true
    },
    "SigningRequestSettings": {
      "type": "object",
      "description": "Settings returned by the signing request list and detail endpoints. Templates use the TemplateSettings schema (no identity fields).",
      "properties": {
        "allow_download": {
          "type": "boolean",
          "description": "Whether recipients can download the document",
          "default": true
        },
        "attach_pdf_on_finish": {
          "type": "boolean",
          "description": "Whether to attach PDF when signing is complete",
          "default": true
        },
        "allow_editing_before_sending": {
          "type": "boolean",
          "description": "Whether the signing request can be edited before sending",
          "default": false
        },
        "use_signing_order": {
          "type": "boolean",
          "description": "Whether signing order is enforced among recipients. When true, signers receive the document in sequence based on their order. When false, all signers receive the document simultaneously.",
          "default": true
        },
        "hand_drawn_only": {
          "type": "boolean",
          "description": "When enabled, signers can only hand-draw their signatures and cannot use typed/font-based signatures",
          "default": false
        },
        "send_signing_email": {
          "type": "boolean",
          "description": "Whether to send signing request notification emails to signers",
          "default": true
        },
        "send_finish_email": {
          "type": "boolean",
          "description": "Whether to send completion email when all signers finish",
          "default": true
        },
        "send_expiration_email": {
          "type": "boolean",
          "description": "Whether to send expiration notification email when request expires",
          "default": true
        },
        "send_cancellation_email": {
          "type": "boolean",
          "description": "Whether to send cancellation notification email when request is cancelled",
          "default": true
        },
        "require_otp_verification": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether signers must verify their email with a one-time code before accessing the document. null = inherit from workspace/company setting.",
          "default": null
        },
        "disable_guided_navigation": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Disable automatic scrolling to the next required field during signing. Inherits from workspace or company if not set."
        },
        "allow_presigning_download": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Allow signers to download the original document before signing. Inherits from workspace or company setting when null."
        },
        "show_qr_code": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Show a QR code on the signing page that lets signers continue on their phone. Inherits from workspace or company setting when null."
        },
        "identity_editable_fields": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "description": "Identity fields signers may edit before signing (e.g. [\"name\", \"company\"]). null = disabled. When set, a confirmation dialog lets signers edit the specified fields."
        },
        "notify_identity_change_email": {
          "type": "boolean",
          "default": false,
          "description": "Send an email notification when a signer changes their identity."
        }
      }
    },
    "TemplateField": {
      "type": "object",
      "description": "A field placed on a template document",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Unique identifier for the field"
        },
        "type": {
          "type": "string",
          "enum": [
            "text",
            "signature",
            "date",
            "checkbox",
            "dropdown",
            "radio_buttons",
            "number",
            "text_area",
            "file",
            "initial",
            "stamp",
            "approval_signature",
            "approval_checkmark",
            "approval_date"
          ],
          "description": "Type of the field"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the field is required"
        },
        "recipient_id": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid",
          "description": "ID of assigned recipient"
        },
        "variable_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Variable name for field (used in templates)"
        },
        "variable_defined_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Human-readable field name from the custom field definition (e.g. 'artist_name'). Only present for fields linked to a custom field definition, null otherwise."
        },
        "position": {
          "type": "object",
          "description": "Position and dimensions of the field on the document. All values are percentages (0-100). The field must fit within the page: x + width <= 100 and y + height <= 100.",
          "properties": {
            "x": {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "X coordinate of field position (percentage, 0-100)"
            },
            "y": {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "Y coordinate of field position (percentage, 0-100)"
            },
            "width": {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "Width of the field (percentage, 0-100). Note: x + width must be <= 100"
            },
            "height": {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "Height of the field (percentage, 0-100). Note: y + height must be <= 100"
            }
          }
        },
        "page_number": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 1,
          "description": "Page number where the field is located (1-indexed). Must not exceed the document's total page count."
        },
        "dropdown_options": {
          "description": "Options for dropdown fields",
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "object"
            }
          ]
        },
        "multi_group_id": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid",
          "description": "Group ID for linking multiple checkbox or radio button fields together. Fields sharing the same multi_group_id behave as a mutually exclusive group (like radio buttons) - selecting one automatically deselects the others in the group. Use the same UUID across multiple fields to create a group where only one option can be selected at a time."
        },
        "date_default": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "Default date value for date fields (ISO 8601 format, e.g., '2024-01-15')"
        },
        "date_signing_default": {
          "type": "boolean",
          "description": "Use signing date as default for date fields"
        },
        "format_rules": {
          "$ref": "#/$defs/DateFormatRules",
          "description": "Formatting rules - currently used for date fields to specify display format"
        },
        "validation_rules": {
          "$ref": "#/$defs/FieldValidationRules"
        },
        "read_only": {
          "type": "boolean",
          "default": false,
          "description": "Whether this field is read-only (pre-filled before signing)"
        },
        "read_only_value": {
          "type": [
            "string",
            "null"
          ],
          "description": "Static value for read-only fields"
        }
      },
      "required": [
        "id",
        "type",
        "page_number"
      ]
    },
    "TemplateUser": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Unique identifier for the template user"
        },
        "name": {
          "type": "string",
          "description": "Recipient name (combined first and last name)"
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Recipient email address"
        },
        "first_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient first name"
        },
        "last_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient last name"
        },
        "designation": {
          "type": "string",
          "enum": [
            "Signer",
            "Approver",
            "CC"
          ],
          "description": "Role of the recipient. Signer signs the document, Approver approves with approval fields, CC receives a copy when complete."
        },
        "order": {
          "type": "integer",
          "minimum": 1,
          "description": "Order in which the recipient should sign"
        },
        "phone_number": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient phone number"
        },
        "street_address": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient street address"
        },
        "city": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient city"
        },
        "state_province": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient state or province"
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient postal code"
        },
        "country": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient country"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient job title"
        },
        "company": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient company name"
        },
        "required_fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of recipient data fields required for sending (based on template fields with variable_name mappings). Always includes 'email' and 'first_name'."
        },
        "missing_fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of required fields that are currently empty for this recipient"
        },
        "required_read_only_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "variable_name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Variable name of the read-only field"
              },
              "variable_defined_name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Human-readable field name from the custom field definition (e.g. 'artist_name'). Only present for fields linked to a custom field definition, null otherwise."
              },
              "field_type": {
                "type": "string",
                "description": "Type of the field (text, date, etc.)"
              }
            }
          },
          "description": "List of required read-only fields that need pre-filled values before sending"
        },
        "ready_to_send": {
          "type": "boolean",
          "description": "Whether this recipient has all required data filled in for sending"
        }
      },
      "required": [
        "id",
        "first_name",
        "email",
        "designation",
        "order"
      ]
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/firma-dev-template"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.