{"name":"form","stage":"ga","description":"Package form mounts forms (github.com/hanzoai/form) at /v1/form, the way apps/iam mounts hanzoai/iam: the module owns every route and every rule of a form, and this package hands it what only cloud knows.","operations":[{"operationId":"list_forms","method":"GET","href":"/v1/form/forms","summary":"Lists the caller org's forms, newest first, a page at a time; search keeps the forms whose title holds it and tag the ones carrying it."},{"operationId":"create_form","method":"POST","href":"/v1/form/forms","summary":"Makes a form in the caller's org and answers it as stored, its fields' ids assigned and its defaults filled: kind form, visibility public, language en, one question at a time, and the platform's default sinks when it names none."},{"operationId":"delete_form","method":"DELETE","href":"/v1/form/forms/{id}","summary":"Deletes a form with every response, webhook and delivery it has, and the webhooks' signing secrets."},{"operationId":"get_form","method":"GET","href":"/v1/form/forms/{id}","summary":"Reads one form of the caller's org, by its id or its slug."},{"operationId":"update_form","method":"PATCH","href":"/v1/form/forms/{id}","summary":"Changes the parts of a form the body names and keeps the rest, then answers it as stored."},{"operationId":"replace_form","method":"PUT","href":"/v1/form/forms/{id}","summary":"Replaces a form whole and answers it as stored."},{"operationId":"export_form_responses","method":"GET","href":"/v1/form/forms/{id}/export","summary":"Exports a form's responses as JSON or CSV, a page of up to 5000 at a time under the same filter a listing takes; next is the page to ask for after it, 0 at the end."},{"operationId":"import_form_responses","method":"POST","href":"/v1/form/forms/{id}/import","summary":"Brings responses made elsewhere into a form, keeping when each was made, a batch of at most 500 at a time."},{"operationId":"list_form_responses","method":"GET","href":"/v1/form/forms/{id}/responses","summary":"Lists a form's responses, newest first, a page at a time: since and until bound when they were made, completed keeps the finished or the open ones, query keeps the ones whose answers hold it, and included_response_ids and excluded_response_ids keep or drop named ones."},{"operationId":"delete_form_response","method":"DELETE","href":"/v1/form/forms/{id}/responses/{response}","summary":"Deletes one response of a form, and its webhook deliveries."},{"operationId":"get_form_response","method":"GET","href":"/v1/form/forms/{id}/responses/{response}","summary":"Reads one response of a form."},{"operationId":"file_form_response","method":"POST","href":"/v1/form/forms/{id}/responses/{response}/file","summary":"Files a completed response on the CRM's timeline now, and answers the response with whether it is filed and, when it is not, why."},{"operationId":"summarize_form","method":"GET","href":"/v1/form/forms/{id}/summary","summary":"Sums up a form's responses: how many were begun and completed, and for each field how many answered it, the distribution of what was said (choices, points, yes and no), the mean, least and most of a number, and how many open responses stopped in front of it."},{"operationId":"list_form_webhooks","method":"GET","href":"/v1/form/forms/{id}/webhooks","summary":"Lists a form's webhooks."},{"operationId":"create_form_webhook","method":"POST","href":"/v1/form/forms/{id}/webhooks","summary":"Adds a webhook to a form: every completed response is posted to its https address as JSON, signed with Hanzo-Signature: t=\u003cunix seconds\u003e,sha256=\u003cbase64 of HMAC-SHA256(secret, \"\u003cseconds\u003e.\" + body)\u003e; a receiver refuses a timestamp older than five minutes and an event_id it has seen."},{"operationId":"delete_form_webhook","method":"DELETE","href":"/v1/form/forms/{id}/webhooks/{webhook}","summary":"Deletes a webhook, its deliveries and its secret."},{"operationId":"get_form_webhook","method":"GET","href":"/v1/form/forms/{id}/webhooks/{webhook}","summary":"Reads one webhook of a form."},{"operationId":"replace_form_webhook","method":"PUT","href":"/v1/form/forms/{id}/webhooks/{webhook}","summary":"Replaces a webhook's tag, address and whether it is enabled."},{"operationId":"list_form_deliveries","method":"GET","href":"/v1/form/forms/{id}/webhooks/{webhook}/deliveries","summary":"Lists a webhook's deliveries, newest first: each response posted, how many attempts it took, the last status the address answered and why it failed."},{"operationId":"redeliver_form_webhook","method":"POST","href":"/v1/form/forms/{id}/webhooks/{webhook}/deliveries/{delivery}/retry","summary":"Posts a delivery's response to its webhook again, now, and answers how it went."},{"operationId":"get_public_form","method":"GET","href":"/v1/form/public/{id}","summary":"Reads a published form as its page draws it: the questions, the screens, the hidden values it takes, how it is answered and its theme."},{"operationId":"submit_form_response","method":"POST","href":"/v1/form/public/{id}/responses","summary":"Answers a published form."},{"operationId":"list_form_themes","method":"GET","href":"/v1/form/themes","summary":"Lists the caller org's themes by name."},{"operationId":"create_form_theme","method":"POST","href":"/v1/form/themes","summary":"Makes a theme in the caller's org: a name, four colours (#rrggbb), a font family and an https background image, each optional but the name."},{"operationId":"delete_form_theme","method":"DELETE","href":"/v1/form/themes/{id}","summary":"Deletes a theme."},{"operationId":"get_form_theme","method":"GET","href":"/v1/form/themes/{id}","summary":"Reads one theme of the caller's org."},{"operationId":"replace_form_theme","method":"PUT","href":"/v1/form/themes/{id}","summary":"Replaces a theme whole; every form drawn in it is drawn in the new one."}],"_links":{"describedby":{"href":"/v1/openapi.json?capability=form"},"self":{"href":"/v1/form"},"up":{"href":"/v1"}}}