Etiquetas
`labels.list`, `list_all`, `iterate`, `list_colors`, `get`, `create`, `update` y `delete`.
Todos los métodos
page = client.labels.list(limit: 50)every = client.labels.list_allcolors = client.labels.list_colorsputs page.items.size, every.size, colors.size client.labels.iterate do |row| puts "#{row[:name]} #{row[:threadCount]}"end created = client.labels.create( name: "Invoices", color: {backgroundColor: "gradient:sunset"}) client.labels.update(created[:id], name: "Invoices 2027")client.labels.update(created[:id], color: {backgroundColor: "#3B82F6"}) label = client.labels.get(created[:id])puts label[:name], label.dig(:color, :backgroundColor) client.labels.delete(created[:id])list devuelve una OpenEmail::Page de etiquetas ordenadas por nombre, y list_all e iterate recorren todas las páginas. list_all devuelve un solo Array, e iterate pasa las etiquetas de una en una a un bloque, o devuelve un Enumerator sin bloque. Cada etiqueta es un Hash con claves Symbol que lleva su color, threadCount y cuándo se creó y se cambió por última vez. list_colors devuelve la paleta que ofrece la app, catorce sólidos y siete degradados, como un Array simple de Hashes sin paginación. type es siempre user. El id sale del nombre con el que se creó la etiqueta, así que Invoices es USER_INVOICES, y no cambia nunca.
Los campos de create y update son argumentos nombrados o un solo Hash, y conservan los nombres de la API, así que un color es color: {backgroundColor: "#3B82F6"}.
Una etiqueta pertenece al espacio de trabajo, así que renombrarla, recolorearla o eliminarla la cambia para todos los miembros y todas las claves. threads.update pone y quita etiquetas de una conversación, y client.threads.list(folder: "USER_INVOICES") lista todas las conversaciones que llevan una. La página Hilos cubre ambas cosas.
Parámetros: labels.create y labels.update
nameString- El nombre visible de la etiqueta, recortado antes de medirse, así que el límite es de 1 a 225 caracteres tras el recorte. Obligatorio en `create` y opcional en `update`, donde omitirlo conserva el nombre. Solo espacios es un 422. Un nombre que ya tiene otra etiqueta, comparado sin distinguir mayúsculas, es un 409 `label_name_taken`, lanzado como `OpenEmail::ConflictError`. `create` rechaza la llamada cuando el espacio de trabajo ya tiene 50 etiquetas, con un 422 `label_limit_reached`, lanzado como `OpenEmail::ValidationError`.
colorHash or nil- Opcional en ambas llamadas. Omitirlo en `update` conserva el color almacenado, y `color: nil` lo borra. El cuerpo es estricto, así que una clave casi correcta como `colour:` es un 422 y no una operación silenciosa sin efecto.
color.backgroundColorStringobligatorio- Un color hexadecimal (`#RGB`, `#RGBA`, `#RRGGBB` o `#RRGGBBAA`, guardado en mayúsculas) o un token de degradado: `gradient:sunset`, `gradient:ember`, `gradient:meadow`, `gradient:lagoon`, `gradient:aurora`, `gradient:berry` o `gradient:midnight`. Una cadena vacía significa sin color, y cualquier otra cosa es un 422 `invalid_parameter`.
color.textColorString- Se acepta y se ignora. La tinta se calcula a partir de `backgroundColor`, igual que en la app.
Respuesta: una etiqueta
Una etiqueta es un Hash con claves Symbol, así que label[:threadCount] lee el recuento, y label.dig(:color, :backgroundColor) lee el color y da nil cuando la etiqueta no tiene.
objectString- Siempre la cadena `label`. `create` y `update` devuelven este mismo Hash, leído tal como se guarda.
idString- El id de la etiqueta, y lo que aceptan `get`, `update`, `delete` y `threads.update`. No cambia nunca, ni siquiera tras un cambio de nombre.
nameString- Lo que ve el usuario.
typeString- Siempre `user`. Aquí nunca se sirven etiquetas de sistema, y un id de sistema en `get` es un 404, lanzado como `OpenEmail::NotFoundError`.
colorHash or nil- Es nil cuando la etiqueta no tiene color.
color.backgroundColorString- El color almacenado: un valor hexadecimal o un token de degradado. `list_colors` da los dos extremos de un degradado.
color.textColorString- La tinta que la app dibuja sobre el color, `#18181B` o `#FFFFFF`, calculada en el servidor en lugar de almacenada.
threadCountInteger- Cuántas conversaciones llevan la etiqueta ahora. Para una clave limitada a ciertas direcciones, solo cuentan las conversaciones entregadas a ellas.
createdAtString or nil- Cuándo se creó la etiqueta, en ISO 8601, o nil en una etiqueta creada antes de que se registraran estas fechas.
updatedAtString or nil- El último cambio de nombre o de color, en ISO 8601, o nil en una etiqueta creada antes de que se registraran estas fechas.
Respuesta: una muestra de color (labels.list_colors)
kindString- Si la muestra es un solo color o un degradado: `solid` o `gradient`.
nameString- El nombre de la muestra, como `red` o `sunset`.
valueString- Lo que hay que enviar como `color.backgroundColor` para usar esta muestra.
solidString- Un único hexadecimal para los sitios donde no se puede dibujar un degradado. Igual que `value` en un sólido.
fromString or nil- Dónde empieza un degradado, dibujado a 135 grados. Es nil en un sólido.
toString or nil- Dónde termina un degradado. Es nil en un sólido.
textColorString- La tinta que la app dibuja sobre esta muestra.