Actualizar Branding
Actualiza los colores del branding de tu organizacion. Los colores se aplicaran en los PDFs de las facturas.
Endpoint
PATCH https://api.lummy.io/v1/branding
| Entorno | URL |
|---|---|
| Producción | https://api.lummy.io/v1/branding |
| Sandbox | https://sandbox.lummy.io/v1/branding |
Headers
{
"Authorization": string,requerido
↳Token de autenticación Bearer (JWT) para validar la identidad del usuario y sus permisos de acceso.
"x-organization-id": string,requerido
↳Identificador único (UUID) de la organización cuyo branding se desea actualizar.
↳Formato: uuid
"Content-Type": stringrequerido
↳Tipo de contenido de la petición. Debe ser application/json.
↳Valores permitidos:
"application/json"}
Body Parameters
{
"primaryColor": string,opcional
↳Color primario de la marca en formato hexadecimal. Se utiliza en el encabezado y elementos principales del PDF de las facturas. Debe incluir el símbolo # seguido exactamente de 6 caracteres hexadecimales (0-9, A-F). Ejemplo: #4F46E5 (azul índigo). Se recomienda usar colores oscuros para mejor legibilidad.
↳Patrón: ^#[0-9A-Fa-f]{6}$
↳Ejemplo:
"#4F46E5" "secondaryColor": stringopcional
↳Color secundario de la marca en formato hexadecimal. Se utiliza para acentos y elementos secundarios en el PDF de las facturas. Debe incluir el símbolo # seguido exactamente de 6 caracteres hexadecimales (0-9, A-F). Ejemplo: #10B981 (verde esmeralda). Se recomienda usar colores de acento que contrasten con el color primario.
↳Patrón: ^#[0-9A-Fa-f]{6}$
↳Ejemplo:
"#10B981"}
Formato de colores
Los colores deben estar en formato hexadecimal con el prefijo # seguido de 6 caracteres (ej: #4F46E5).
Ejemplos de Codigo
- cURL
- Node.js (TypeScript)
- Python
- PHP (Guzzle)
curl -X PATCH https://sandbox.lummy.io/branding \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "x-organization-id: ${LUMMY_ORG_ID}" \
-d '{
"primaryColor": "#4F46E5",
"secondaryColor": "#10B981"
}'
import axios from 'axios';
interface UpdateBrandingPayload {
primaryColor?: string;
secondaryColor?: string;
}
interface BrandingResponse {
id: string;
organizationId: string;
logoUrl: string | null;
primaryColor: string | null;
secondaryColor: string | null;
createdAt: string;
updatedAt: string;
}
async function actualizarBranding(
payload: UpdateBrandingPayload
): Promise<BrandingResponse> {
const API_URL = 'https://sandbox.lummy.io/branding';
const ACCESS_TOKEN = process.env.ACCESS_TOKEN!;
const ORG_ID = process.env.LUMMY_ORG_ID!;
const response = await axios.patch<BrandingResponse>(API_URL, payload, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${ACCESS_TOKEN}`,
'x-organization-id': ORG_ID,
},
});
console.log('Branding actualizado:', response.data);
return response.data;
}
actualizarBranding({
primaryColor: '#4F46E5',
secondaryColor: '#10B981',
});
import os
import requests
def actualizar_branding(primary_color: str = None, secondary_color: str = None):
api_url = "https://sandbox.lummy.io/branding"
access_token = os.getenv("ACCESS_TOKEN")
org_id = os.getenv("LUMMY_ORG_ID")
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}",
"x-organization-id": org_id,
}
payload = {}
if primary_color:
payload["primaryColor"] = primary_color
if secondary_color:
payload["secondaryColor"] = secondary_color
response = requests.patch(api_url, json=payload, headers=headers)
response.raise_for_status()
data = response.json()
print(f"Branding actualizado: {data}")
return data
if __name__ == "__main__":
actualizar_branding("#4F46E5", "#10B981")
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
function actualizarBranding(?string $primaryColor, ?string $secondaryColor): array
{
$client = new Client([
'base_uri' => 'https://sandbox.lummy.io',
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . getenv('ACCESS_TOKEN'),
'x-organization-id' => getenv('LUMMY_ORG_ID'),
],
]);
$payload = [];
if ($primaryColor) {
$payload['primaryColor'] = $primaryColor;
}
if ($secondaryColor) {
$payload['secondaryColor'] = $secondaryColor;
}
$response = $client->patch('/branding', ['json' => $payload]);
$data = json_decode($response->getBody(), true);
echo "Branding actualizado\n";
return $data;
}
actualizarBranding('#4F46E5', '#10B981');
Respuestas
200 OK
Branding actualizado exitosamente.
{
"id": string,opcional
↳Identificador único del registro de branding en el sistema.
↳Formato: uuid
↳Ejemplo:
"550e8400-e29b-41d4-a716-446655440000" "organizationId": string,opcional
↳Identificador único de la organización a la que pertenece este branding.
↳Formato: uuid
↳Ejemplo:
"123e4567-e89b-12d3-a456-426614174000" "logoUrl": string,opcional
↳URL completa del logotipo almacenado en Amazon S3. Este valor no se modifica con esta operación.
↳Ejemplo:
"https://bucket.s3.region.amazonaws.com/organizations/uuid/branding/logo.png" "primaryColor": string,opcional
↳Color primario actualizado de la marca en formato hexadecimal. Se utilizará en el encabezado y elementos principales del PDF de las facturas.
↳Patrón: ^#[0-9A-Fa-f]{6}$
↳Ejemplo:
"#4F46E5" "secondaryColor": string,opcional
↳Color secundario actualizado de la marca en formato hexadecimal. Se utilizará para acentos y elementos secundarios en el PDF de las facturas.
↳Patrón: ^#[0-9A-Fa-f]{6}$
↳Ejemplo:
"#10B981" "createdAt": string,opcional
↳Fecha y hora de creación del registro de branding en formato ISO 8601 (UTC).
↳Formato: date-time
↳Ejemplo:
"2025-01-15T10:30:00.000Z" "updatedAt": stringopcional
↳Fecha y hora de la última actualización del branding en formato ISO 8601 (UTC). Refleja el momento en que se actualizaron los colores.
↳Formato: date-time
↳Ejemplo:
"2025-01-15T11:00:00.000Z"}
{
"requestId": "abc123-def456",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"organizationId": "123e4567-e89b-12d3-a456-426614174000",
"logoUrl": "https://bucket.s3.region.amazonaws.com/organizations/uuid/branding/logo.png",
"primaryColor": "#4F46E5",
"secondaryColor": "#10B981",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T11:00:00.000Z"
},
"timestamp": "2025-01-15T11:00:00.000Z",
"path": "/branding",
"method": "PATCH"
}
400 Bad Request
{
"requestId": "abc123-def456",
"error": {
"message": "El color primario debe estar en formato hexadecimal (#RRGGBB)",
"code": "ValidationError",
"status": 400
},
"timestamp": "2025-01-15T10:30:00.000Z",
"path": "/branding",
"method": "PATCH"
}
Uso de Colores
Los colores configurados se utilizan en:
| Color | Uso |
|---|---|
primaryColor | Encabezados y elementos principales del PDF |
secondaryColor | Acentos y elementos secundarios |
Paleta recomendada
Para mejor legibilidad, usa colores oscuros para primaryColor y colores de acento para secondaryColor.