Ir a la documentación
PHP

Registro de cambios

Todas las versiones del paquete, de la más reciente a la más antigua.

0.0.1

La primera versión. Cubre todo el SDK de TypeScript tal como estaba cuando se publicó esta versión: 430 métodos en 41 espacios de nombres, cada uno con su nombre de TypeScript, y cada uno de ellos envía, byte a byte, la solicitud que envía su gemelo de TypeScript.

  • OpenEmail\OpenEmail tiene una propiedad para cada espacio de nombres, desde emails, threads y templates hasta providerImports, dnsConnections y account, y los métodos de cada uno conservan sus nombres de TypeScript.
  • Un cuerpo de solicitud es un array asociativo cuyas claves conservan los nombres en camelCase de la API, y las opciones son argumentos nombrados como idempotencyKey: y apiKey:. Una respuesta vuelve como el array asociativo decodificado.
  • Cada recurso paginado tiene list, que devuelve una Page, listAll, que devuelve todos los elementos como un array, e iterate, que devuelve un Generator que solo obtiene la página siguiente cuando llega a ella. PeoplePage, TempMessagesPage, AddressBookPage, AddressBook, BatchResult y TemplateSends llevan las respuestas que contienen algo más que una lista.
  • Un rechazo de la API lanza ApiException o su subclase para el tipo de error, con status, type, errorCode, param, docUrl, requestId, retryAfterSeconds, fields y body, y métodos como isValidation() e isStepUpRequired(). La falta total de respuesta lanza NetworkException, con isTimeout() cuando venció el plazo. Un error en la propia llamada lanza InvalidArgumentException antes de enviar nada. Todas implementan OpenEmailException.
  • new OpenEmail() y OpenEmail::createClient() leen OPENEMAIL_API_KEY, OPENEMAIL_ACCESS_TOKEN y OPENEMAIL_BASE_URL para todo lo que omitas, y OpenEmail::init(), OpenEmail::getClient() y OpenEmail::resetClient() gestionan un cliente compartido. OpenEmail::createTempMail() abre buzones desechables sin credencial.
  • accessToken: acepta un token de acceso OAuth, o un callable que devuelva uno, invocado antes de cada solicitud. Cada método acepta apiKey: para actuar con otra clave en una sola llamada, y los métodos de tempMail aceptan inboxToken:. Cada parámetro que lleva una credencial está marcado con #[\SensitiveParameter].
  • OpenEmail::verifyWebhookSignature() comprueba una entrega en tiempo constante, rechaza una con más de cinco minutos de antigüedad y devuelve el evento decodificado. Lee la firma de un array de cabeceras con cualquier combinación de mayúsculas y minúsculas, de $_SERVER, de un header bag de Symfony o Laravel, o de una solicitud PSR-7.
  • OpenEmail::toBase64(), isApiKey(), isAccessToken(), isSealed(), resolveLanguage(), languageByCode() y isRtlLanguage() son las utilidades del SDK de TypeScript, y cada conjunto de valores que exporta la raíz de su paquete es una clase en OpenEmail\Constants.
  • Necesita PHP 8.2 o posterior con las extensiones curl y json, y nada más. Las solicitudes pasan por un handle de cURL por cliente, que mantiene abierta su conexión entre solicitudes y abre una nueva tras pcntl_fork, y timeout: acota un intento completo. Psr18HttpClient las envía en su lugar a través de Guzzle, Symfony HttpClient o cualquier otro cliente PSR-18.
  • Las lecturas, los envíos y cada escritura que se puede repetir sin riesgo se reintentan ante un 408, 500, 502, 503 y 504 con backoff, y ante un 429 solo cuando su Retry-After es de un minuto o menos. Cada envío lleva una clave de idempotencia que reutilizan sus reintentos.
  • El cliente se niega a enviar una credencial por http: sin cifrar a cualquier cosa que no sea esta máquina, rechaza una URL base en 0.0.0.0, rechaza una cabecera que partiría una solicitud y nunca deja que raw->request() salga del origen de la URL base.