Validate at the server
Required fields, published snapshot availability, duplicate attendee policy, capacity caps, and field validation are enforced by the EPP API.
Swagger-compatible OpenAPI contract for the standalone EPP form builder. The API exposes forms, publishing, submissions, and EPP connector acknowledgements. Use this with each form's Integration Kit for copy-paste embed snippets, field IDs, mapped payloads, and connector proof.
Required fields, published snapshot availability, duplicate attendee policy, capacity caps, and field validation are enforced by the EPP API.
Secure public links carry X-EPP-Public-Token when a form requires token access. Send X-Idempotency-Key for retries so duplicate requests do not create duplicate submissions.
Approval, PDF, calendar, email, backend, schedule, and report work is queued as connector packets and can be acknowledged after the customer system processes it.
Base URL: /api/epp. The document is Swagger-compatible OpenAPI 3.1.
POST /api/epp/forms/{formId}/submissions
Content-Type: application/json
X-EPP-Public-Token: <token-from-secure-embed-url>
X-Idempotency-Key: <unique-request-id>
{
"values": {
"attendee_email": "jane@example.com"
}
}POST /api/epp/connectors/{packetId}/ack
Content-Type: application/json
Authorization: Bearer <EPP_ADMIN_TOKEN>
{
"status": "acked"
}Forms with policies.access.publicTokenRequired stay inactive unless the public request carries the form-scoped token from the secure embed URL. The same token is used for public submission and upload-session initiation; connector readback remains admin-only.
GET /embed/{formId}?token=<form-scoped-public-token>
POST /api/epp/forms/{formId}/uploads/initiate
Content-Type: application/json
X-EPP-Public-Token: <form-scoped-public-token>Public submission responses expose only connectorPacketCount. Customer engineers read the full JSON connector envelope through the admin readback endpoint, optionally filtered to the submission just created by the proof runner.
GET /api/epp/forms/{formId}/connector-packets
Authorization: Bearer <EPP_ADMIN_TOKEN>
GET /api/epp/forms/{formId}/connector-packets?submissionId={submissionId}| Field | Meaning |
|---|---|
id | Connector packet UUID used for acknowledgement. |
formId | Form UUID that owns the packet. |
submissionId | Submission UUID that produced the packet. |
kind | One of approval, pdf, calendar, email, backend, schedule, or report. |
delivery | Pull, webhook, or manual delivery mode. |
status | Queued, acked, or failed processing state. |
payload | JSON-native mapped connector envelope for the customer adapter. |
createdAt | Packet creation timestamp. |
ackedAt | Acknowledgement timestamp when processed. |
/api/epp/formsList forms
/api/epp/formsCreate a form from an EPP template
/api/epp/forms/{formId}Get a form
/api/epp/forms/{formId}Update a form
/api/epp/forms/{formId}Delete a form and its submissions, versions, packets, and idempotency keys
/api/epp/forms/{formId}/cloneDuplicate a form as a JSON-native draft or event import
/api/epp/forms/{formId}/publishPublish a form
/api/epp/forms/{formId}/versionsList immutable published versions for a form
/api/epp/forms/{formId}/submissionsList submissions for a form
/api/epp/forms/{formId}/submissionsSubmit a public response
/api/epp/forms/{formId}/connector-packetsList connector packets for a form
/api/epp/forms/{formId}/uploads/initiateCreate a public upload session for a published file field
/api/epp/forms/{formId}/uploads/{uploadSessionId}/contentUpload file content through the FormBuilderStudio app proxy
/api/epp/forms/{formId}/submissions/{submissionId}/files/{fileId}/downloadDownload an uploaded submission file
/api/epp/connectors/{packetId}/ackAcknowledge or fail a connector packet
/api/epp/eventsList event workspaces
/api/epp/events/{eventId}/dataGet event master data and mapped records
/api/epp/events/{eventId}/dataUpdate one event-data record
/api/epp/events/{eventId}/dataCreate one event-data record
/api/epp/events/{eventId}/dataDelete one event-data record