Paperform MCP by usefulapi

Read Paperform forms, submissions, products and coupons, Papersign documents, and manage coupons.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
98%
Calidad de los nombres
74%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (7)

  • LOWTool 'paperform_list_partial_submissions' name length outside 3-30 rangeen paperform_list_partial_submissions
  • LOWTool 'paperform_get_partial_submission' name length outside 3-30 rangeen paperform_get_partial_submission
  • LOWTool 'paperform_list_papersign_documents' name length outside 3-30 rangeen paperform_list_papersign_documents
  • LOWTool 'paperform_get_papersign_document' name length outside 3-30 rangeen paperform_get_papersign_document
  • LOWTool 'paperform_get_signed_document_url' name length outside 3-30 rangeen paperform_get_signed_document_url
  • LOWTool 'paperform_list_papersign_folders' name length outside 3-30 rangeen paperform_list_papersign_folders
  • LOWTool 'paperform_list_papersign_spaces' name length outside 3-30 rangeen paperform_list_papersign_spaces

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~5,767Tokens (definiciones de herramientas)
~1.9 KBTamaño de respuesta típico
Impacto significativo en la atención (4.51% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "paperform": {
      "url": "https://paperform.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://paperform.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (23)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢paperform_list_forms(search, search_fields, limit, skip, after_id, ...)

List the forms in the Paperform account (id, slug, custom_slug, title, url, live, tags, submission_count, space_id, dates), newest first. Search by title, or also by slug/custom_slug with search_fields. Start here to find the slug or id the other tools need. Paperform: GET /forms.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Text to match (partial, case-insensitive) — the form title unless search_fields says otherwise.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "search_fields": {
      "description": "Which fields `search` matches: any of title, slug, custom_slug (default title only).",
      "minItems": 1,
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "title",
          "slug",
          "custom_slug"
        ]
      }
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_form(form)

Fetch one form by slug, custom slug or id: title, description, url, live flag, tags, submission_count, space and dates. Paperform: GET /forms/{slug_or_id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_form_fields(form, search)

List a form's questions (key, title, type, required, custom_key, description, options). The field keys are the keys of a submission's `data` object, so read this to interpret answers. Paperform: GET /forms/{slug_or_id}/fields.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "search": {
      "description": "Only fields whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_submissions(form, limit, skip, after_id, before_id, ...)

List one page of a form's completed submissions, newest first: answers (`data`, keyed by field key — see paperform_list_form_fields), device and UTM info, payment `charge`, generated PDFs and created_at. Page with skip/next_skip or after_id/last_id; filter by date. Paperform: GET /forms/{slug_or_id}/submissions.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_submission(submission_id)

Fetch one submission by id, with every answer, device info, payment charge and PDFs. Paperform: GET /submissions/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "submission_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The submission id (from paperform_list_submissions)."
    }
  },
  "required": [
    "submission_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_partial_submissions(form, limit, skip, after_id, before_id, ...)

List one page of a form's partial submissions (someone started the form), newest first: answers so far, last_answered field, dates. Partials that were later completed stay in the list with submitted_at set; only those with submitted_at null are abandoned. Useful for drop-off analysis and follow-ups. Paperform: GET /forms/{slug_or_id}/partial-submissions.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_partial_submission(partial_submission_id)

Fetch one partial submission by id, with the answers given so far. It may have been completed since (submitted_at set); submitted_at null means abandoned. Paperform: GET /partial-submissions/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "partial_submission_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The partial submission id (from paperform_list_partial_submissions)."
    }
  },
  "required": [
    "partial_submission_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_products(form, search)

List the products sold on a form (SKU, name, price, quantity in stock, sold, minimum/maximum, discountable, images). Paperform: GET /forms/{slug_or_id}/products.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "search": {
      "description": "Only products whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_product(form, sku)

Fetch one product on a form by SKU: price, quantity in stock, sold count, limits. Paperform: GET /forms/{slug_or_id}/products/{sku}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The product SKU (from paperform_list_products)."
    }
  },
  "required": [
    "form",
    "sku"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_coupons(form)

List a form's coupon codes (code, enabled, target, discountAmount or discountPercentage, expiresAt). Paperform: GET /forms/{slug_or_id}/coupons.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_coupon(form, code)

Fetch one coupon on a form by code. Paperform: GET /forms/{slug_or_id}/coupons/{code}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The coupon code, e.g. DISCOUNT1."
    }
  },
  "required": [
    "form",
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_webhooks(form, limit, skip, after_id, before_id, ...)

List the webhooks on a form (id, target_url, triggers: submission / partial_submission, dates). Needs the Business API. Paperform: GET /forms/{slug_or_id}/webhooks.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "required": [
    "form"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_spaces(search, limit, skip, after_id, before_id, ...)

List the account's spaces (folders that group forms): id, name, dates. Needs the Business API. Paperform: GET /spaces.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Only spaces whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_space_forms(space_id)

List the forms in one space. Needs the Business API. Paperform: GET /spaces/{id}/forms.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The space id (from paperform_list_spaces, or a form's space_id)."
    }
  },
  "required": [
    "space_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_papersign_documents(search, status, folder_id, space_id, paperform_submission_id, ...)

List Papersign e-signature documents (id, name, status, folder, space, signers, variables, source form/submission, sent/completed dates), filtered by name, status, folder, space or the Paperform submission that created them. Needs the Papersign API. Paperform: GET /papersign/documents.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Only documents whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "status": {
      "description": "Only documents in these statuses.",
      "minItems": 1,
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "draft",
          "inProgress",
          "archived",
          "canceled",
          "expired",
          "rejected",
          "completed"
        ]
      }
    },
    "folder_id": {
      "description": "Only documents in this folder or its subfolders (from paperform_list_papersign_folders).",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "space_id": {
      "description": "Only documents anywhere in this space (from paperform_list_papersign_spaces).",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "paperform_submission_id": {
      "description": "Only documents created from this Paperform submission id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (Paperform default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "skip": {
      "description": "Results to skip (offset). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "after_id": {
      "description": "Cursor: only results after this id (e.g. the previous reply's last_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "before_id": {
      "description": "Cursor: only results before this id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "after_date": {
      "description": "Only results created after this ISO 8601 date-time (UTC). Ignored by Paperform when after_id is set.",
      "type": "string"
    },
    "before_date": {
      "description": "Only results created before this ISO 8601 date-time (UTC). Ignored by Paperform when before_id is set.",
      "type": "string"
    },
    "sort": {
      "description": "Sort by created_at: DESC (default, newest first) or ASC.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_papersign_document(document_id)

Fetch one Papersign document by id: status, signers and their progress, variables, folder, space and dates. Needs the Papersign API. Paperform: GET /papersign/documents/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "document_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The Papersign document id (from paperform_list_papersign_documents)."
    }
  },
  "required": [
    "document_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_get_signed_document_url(document_id)

Get a download link for a completed (fully signed) Papersign document as a PDF. A fresh link is made on each call and is valid for one week (expires_at_utc). Needs the Papersign API. Paperform: GET /papersign/documents/{id}/completed-document-url.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "document_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The id of a completed Papersign document."
    }
  },
  "required": [
    "document_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_papersign_folders(space_id, folder_id, search)

List Papersign folders (id, name, parent_id, space_id), optionally inside one space or folder. Needs the Papersign API. Paperform: GET /papersign/folders.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "space_id": {
      "description": "Only folders in this space.",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "folder_id": {
      "description": "Only folders below this folder.",
      "type": "string",
      "pattern": "^[1-9]\\d{0,18}$"
    },
    "search": {
      "description": "Only folders whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢paperform_list_papersign_spaces(search)

List Papersign spaces (id, name, root_folder_id). Needs the Papersign API. Paperform: GET /papersign/spaces.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Only spaces whose name matches this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_create_coupon(form, code, enabled, target, discountAmount, ...)

WRITE: create a coupon code on a form, with a fixed discountAmount or a discountPercentage (not both), an optional target (price or subscription) and expiry. Respondents can use it at checkout as soon as it is enabled. Undo: paperform_update_coupon with enabled=false. Paperform: POST /forms/{slug_or_id}/coupons.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "code": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,64}$",
      "description": "The new coupon code, e.g. SPRING20."
    },
    "enabled": {
      "description": "Whether respondents can use the coupon.",
      "type": "boolean"
    },
    "target": {
      "description": "What the discount applies to: the one-off price or a subscription.",
      "type": "string",
      "enum": [
        "price",
        "subscription"
      ]
    },
    "discountAmount": {
      "description": "A fixed discount, in the form's currency (e.g. 10 = 10.00).",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "discountPercentage": {
      "description": "A percentage discount, 0-100.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "expiresAt": {
      "description": "When the coupon expires (ISO 8601 with a timezone), or null for no expiry.",
      "anyOf": [
        {
          "type": "string",
          "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z (sent to Paperform in UTC)."
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "form",
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_update_coupon(form, code, enabled, target, discountAmount, ...)

WRITE: change a coupon on a form — enable or disable it, change its discount (amount or percentage), target or expiry (null = never expires). Only the fields you pass are sent. Paperform: PUT /forms/{slug_or_id}/coupons/{code}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The coupon code, e.g. DISCOUNT1."
    },
    "enabled": {
      "description": "Whether respondents can use the coupon.",
      "type": "boolean"
    },
    "target": {
      "description": "What the discount applies to: the one-off price or a subscription.",
      "type": "string",
      "enum": [
        "price",
        "subscription"
      ]
    },
    "discountAmount": {
      "description": "A fixed discount, in the form's currency (e.g. 10 = 10.00).",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "discountPercentage": {
      "description": "A percentage discount, 0-100.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "expiresAt": {
      "description": "When the coupon expires (ISO 8601 with a timezone), or null for no expiry.",
      "anyOf": [
        {
          "type": "string",
          "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z (sent to Paperform in UTC)."
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "form",
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_set_product_quantity(form, sku, quantity)

WRITE: set how many units of a form product are available (its stock quantity), e.g. after restocking. Replaces the current value; read it first with paperform_get_product. Not atomic: it overwrites rather than adjusts, so a sale between your read and this write is lost. Paperform: PUT /forms/{slug_or_id}/products/{sku}/quantity.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The product SKU (from paperform_list_products)."
    },
    "quantity": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "The new stock quantity (0 or more)."
    }
  },
  "required": [
    "form",
    "sku",
    "quantity"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴paperform_set_product_sold(form, sku, sold)

WRITE: set the number of units of a form product recorded as sold (e.g. to correct it after a refund or an offline sale). Replaces the current value; read it first with paperform_get_product. Not atomic: it overwrites rather than adjusts, so a sale between your read and this write is lost. Paperform: PUT /forms/{slug_or_id}/products/{sku}/sold.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "form": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The form's slug, custom slug or id (from paperform_list_forms)."
    },
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The product SKU (from paperform_list_products)."
    },
    "sold": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "The new sold count (0 or more)."
    }
  },
  "required": [
    "form",
    "sku",
    "sold"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada23 herramientas