Custom REST routes under the prc-api/v3 namespace for form library admin, response admin, and public submission handlers.
Base path: /wp-json/prc-api/v3/
Auth summary
| Capability / access | Routes |
|---|---|
Public (permission_callback returns true) | POST form/send-to-email, POST form/log-response (still enforce captcha, rate limits, and recipient rules in the callback) |
Form list capability (edit_posts on the form CPT, via Form_List::get_capability()) | GET form/library |
prc_form_responses_capability (default manage_options) | All form/responses* routes |
Route index
| Method | Path | Access | Purpose |
|---|---|---|---|
GET | /form/library | form list cap | Forms DataViews library rows |
GET | /form/responses | responses cap | Paginated response list |
GET | /form/responses/{id} | responses cap | Single response with fields |
DELETE | /form/responses/{id} | responses cap | Delete one response |
POST | /form/responses/bulk-delete | responses cap | Delete many responses |
POST | /form/responses/spam | responses cap | Move to/from spam |
POST | /form/responses/unread | responses cap | Mark read/unread |
POST | /form/send-to-email | public | Contact / email submission action |
POST | /form/log-response | public | Store submission without email |
GET /form/library
Powers Forms → All Forms.
Source: includes/class-forms-rest-controller.php
Query parameters
-
pagenumber -
Page number.
-
per_pagenumber -
Rows per page (max 100).
-
searchstring -
Search forms.
-
statusstring -
Comma-separated post statuses.
-
orderbyenum -
Sort field.
-
orderenum -
Sort direction.
-
actionstring -
Comma-separated action filter (list meta).
-
methodstring -
Comma-separated method filter (list meta).
-
watchingOnlystring -
Pass `me` to restrict the query to forms the current user is watching.
-
activeEditorsstring -
Pass `active` to restrict the query to forms with active Presence editors.
No fields match this filter.
Headers: X-WP-Total, X-WP-TotalPages
Response counts (responses, unread) appear on each row only when the caller can manage form responses.
The route applies prc_wp_admin_dataview_query_args before WP_Query and prc_wp_admin_dataview_shape_row when shaping each row so Working on / Active editors / Watchers work on this custom restPath.
GET /form/responses
Powers Forms → Responses.
Source: includes/class-form-responses-rest-controller.php
Query parameters
-
pagenumber -
Page number.
-
per_pagenumber -
Rows per page.
-
searchstring -
Search response content / sender.
-
form_idnumber -
Filter by form CPT ID.
-
form_namestring -
Filter by form name attribute.
-
statusstring -
Filter by logged status string.
-
is_spamnumber -
Spam folder when 1.
-
is_unreadnumber -
Unread filter; -1 means no filter.
-
orderstring -
Sort direction.
No fields match this filter.
Headers: X-WP-Total, X-WP-TotalPages, X-PRC-Inbox-Total, X-PRC-Spam-Total, X-PRC-Unread-Total
GET / DELETE /form/responses/{id}
Fetch or permanently delete one response.
POST /form/responses/bulk-delete
Body: { "ids": [1, 2] }
POST /form/responses/spam
Body: { "ids": [1, 2], "is_spam": true }
POST /form/responses/unread
Body: { "ids": [1, 2], "is_unread": false }
Viewing a response does not auto-mark it read.
POST /form/send-to-email
Public submission handler for the sendToEmail form action.
Source: includes/class-form-send-email.php
Validates fields, verifies Turnstile, applies rate limits, sends email, and logs the response.
POST /form/log-response
Public handler for the logResponse (Save Response) action.
Source: includes/class-form-response-log.php
Verifies Turnstile and applies per-IP rate limiting. Stores a row without sending email.