Formularios
`forms->list`, `listAll`, `iterate`, `get`, `create`, `design`, `redesign`, `update`, `delete`, `publish`, `pause`, `resume`, `duplicate`, `analytics`, `listStarters`, `getStarter`, `listSubmissions`, `getSubmission`, `deleteSubmission`, `deleteSubmissions`, `approveSubmission`, `resendConfirmation` y `subscribe`.
Todos los métodos
use OpenEmail\Constants\FormStarterSlugs;use OpenEmail\Constants\FormSubmissionStatuses; $form = $client->forms->create([ 'name' => 'Newsletter sign-up', 'starter' => FormStarterSlugs::NEWSLETTER, 'settings' => ['audienceIds' => ['aud_4c1b8e2a7d9f05c36b4e8a71']], 'publish' => true,]); echo $form['url'], ' ', $form['subscribeUrl'], PHP_EOL; $saved = $client->forms->update($form['id'], [ 'settings' => ['doubleOptIn' => true, 'senderAddress' => '[email protected]'], 'expectedUpdatedAt' => $form['updatedAt'],]); $signup = $client->forms->subscribe($form['id'], [ 'email' => '[email protected]', 'first_name' => 'Ann', 'consent' => true,]); foreach ($client->forms->iterateSubmissions($form['id'], status: FormSubmissionStatuses::PENDING) as $submission) { if ($submission['expired']) { $client->forms->resendConfirmation($form['id'], $submission['id']); }} $stats = $client->forms->analytics($form['id'], days: 30);$starters = $client->forms->listStarters(); $client->forms->pause($form['id']);$client->forms->resume($form['id']);$copy = $client->forms->duplicate($form['id']);$client->forms->delete($copy['id']); echo $saved['senderIssue'] ?? 'ready to send', ' ', $signup['outcome'], ' ', $stats['totals']['conversion'] ?? 'no views yet', ' ', count($starters), PHP_EOL;Un formulario guarda un borrador document y el publishedDocument que ven los visitantes. update cambia el borrador y los ajustes, y publish activa el borrador. Los ajustes surten efecto al instante, esté publicado o no, y expectedUpdatedAt rechaza con un 409 version_conflict, lanzado como ConflictException, un guardado que sobrescribiría el de otra persona.
Los campos de un formulario son las claves de un array con los nombres en camelCase de la API (expectedUpdatedAt, doubleOptIn), mientras que los filtros y las opciones son argumentos nombrados (status: en listSubmissions, offsetMinutes: en analytics). Un formulario vuelve como un array con claves en camelCase, así que $form['subscribeUrl'] lee la dirección que recibe las suscripciones.
design crea un formulario nuevo como borrador a partir de una descripción escrita, como hace Crear con IA en la página Formularios, y redesign aplica instrucciones escritas al borrador de un formulario, como hace Preguntar a la IA en el editor de formularios. Cada uno gasta una acción de IA y solo escribe el borrador, así que los visitantes no ven nada nuevo hasta publish.
Leer requiere forms:read y cambiar requiere forms:write. approveSubmission también requiere contacts:write, porque añade un contacto. resendConfirmation también requiere emails:send, igual que una llamada que haga que el formulario envíe correo: activar doubleOptIn, configurar senderAddress o el correo de confirmación, o publicar o reanudar un formulario con doble opt-in. delete pide un código de verificación a un token de acceso OAuth, y a una clave de API nunca. Hasta que el token tenga uno, delete lanza una PermissionException cuyo isStepUpRequired() es true.
subscribe suscribe a alguien como lo hace la página del formulario y no envía ninguna credencial, ni siquiera desde un cliente que tenga una, así que apiKey: se ignora. Las respuestas son su segundo argumento, un array con las claves de los campos del formulario. Todas las suscripciones desde una misma red comparten un límite de 40 cada diez minutos, así que un servidor que reenvía suscripciones de muchas personas lo alcanza enseguida: en su lugar, añade a las personas que ya conoces con audiences->importContacts. Pasado el límite, la llamada lanza una RateLimitException. Pasa la página en la que estaba el formulario como oe_source, omite oe_started y envía oe_website vacío o no lo envíes.
Un 422 de subscribe es invalid_form_submission, lanzado como ValidationException, y el fields de la excepción lista cada respuesta que falta o no es válida como un array con key y error, con motivos como required, email y option. OpenEmail\Constants\FormFieldErrors nombra todos los motivos. El paquete se ejecuta en un servidor. Un navegador envía él mismo las respuestas al subscribeUrl del formulario, como cuerpo JSON o con una cabecera Accept: application/json, y recibe JSON de vuelta desde cualquier origen. Sin ninguna de las dos cosas, recibe una redirección 303 a la página alojada.
Respuesta: un formulario
list devuelve una OpenEmail\Result\Page de formularios, del más reciente al más antiguo, sin document ni settings. listAll devuelve todos los formularios en un array, e iterate devuelve un Generator que recorre todas las páginas formulario a formulario. get, create, update, publish, pause, resume y duplicate devuelven el formulario completo como un array, que añade document, publishedDocument, settings, audiences, senderIssue y senderProblem.
idstring- El identificador duradero, `frm_` seguido de 24 caracteres hexadecimales.
statusstring- `draft` hasta la primera publicación, luego `live` mientras acepta suscripciones y `paused` mientras no las acepta. Un formulario nunca vuelve a `draft`. `OpenEmail\Constants\FormStatuses` nombra los tres.
urlstring- La página alojada del formulario publicado, para compartirla como enlace.
subscribeUrlstring- Adónde envían las respuestas un formulario HTML simple o un script en el navegador.
documentarray- El borrador: los `fields` en orden, los textos de `copy` que los rodean y el `style`.
publishedDocumentarray or null- Lo que ven ahora los visitantes, o null hasta la primera publicación.
settingsarray- Adónde van las suscripciones y qué pasa después de cada una: `audienceIds`, `doubleOptIn`, `senderAddress`, el correo de confirmación, `successAction`, `redirectUrl` y `notifyAddresses`.
hasUnpublishedChangesbool- True cuando el borrador difiere de lo que ven los visitantes. Siempre false antes de la primera publicación.
senderIssuestring or null- Por qué un formulario con doble opt-in no puede enviar sus correos de confirmación ahora mismo: `missing`, `not_sendable` o `not_allowed`. Es null cuando puede. `OpenEmail\Constants\FormSenderIssues` nombra los tres.
statsarray- `views`, `submissions`, `added`, `pending` y `lastSubmittedAt`, contados en el momento de la lectura.
Envíos
listSubmissions devuelve páginas del más reciente al más antiguo, con q: para buscar en las direcciones de correo y status: para pending o added, y listAllSubmissions e iterateSubmissions recorren todas las páginas. OpenEmail\Constants\FormSubmissionStatuses nombra los dos estados. Cada envío es un array que guarda las respuestas tal como se enviaron, etiquetas incluidas, así que se sigue leyendo bien después de que cambie el formulario.
resendConfirmation devuelve el envío con confirmationSent. Es false cuando no salió nada: una dirección recibe una confirmación por formulario cada diez minutos y cinco al día en todo el espacio de trabajo, y un envío ya añadido no recibe ninguna. expired marca una suscripción pendiente cuyo último enlace ha caducado.