Saltar al contenido principal

Proyectos

Un Proyecto es la unidad organizativa principal en el Backoffice. Representa una campaña de video personalizado (ej. "Tarjeta de crédito preaprobada Q2 2026"). Cada proyecto contiene templates, canales de distribución y opcionalmente páginas de aterrizaje públicas.

Campos

CampoTipoNotas
idUUIDInmutable
organizationIdUUIDOrganización propietaria
namestringRequerido
slugstringURL-safe, único dentro de la organización
descriptionstringOpcional
statusenumDraft, Active, Archived
createdAtISO 8601UTC
createdByUUIDUsuario que creó el proyecto
archivedAtISO 8601Se establece cuando el estado pasa a Archived

Ciclo de vida del estado

Draft ──► Active
│ │
└────────►└──► Archived
  • Draft — proyecto recién creado. Los templates pueden subirse y probarse.
  • Active — proyecto en producción. Los templates pueden publicarse en PROD.
  • Archived — proyecto cerrado. Todos los canales de distribución se despublican automáticamente. Un proyecto no puede eliminarse si tiene templates en estado Production.

Endpoints de API

MétodoRutaRol requeridoDescripción
GET/api/Projects?organizationId={id}Viewer+Listar proyectos (paginado)
GET/api/Projects/{id}Viewer+Obtener proyecto con templates y canales
POST/api/ProjectsOrgAdmin / OwnerCrear proyecto
PUT/api/Projects/{id}OrgAdmin / OwnerActualizar nombre o descripción
POST/api/Projects/{id}/archiveOrgAdmin / OwnerArchivar proyecto

Crear un proyecto

POST /api/Projects
Authorization: Bearer {token}
X-Percus-Forwarded-Active-Org: {orgId}
X-Percus-Forwarded-Org-Role: OrganizationAdmin

{
"name": "Tarjeta de crédito preaprobada Q2",
"description": "Campaña para ofertas de tarjeta de crédito preaprobada"
}

El slug se deriva automáticamente del nombre y es único dentro de la organización.

Respuesta detallada del proyecto

Una respuesta de GET /api/Projects/{id} incluye:

{
"id": "uuid",
"name": "Tarjeta de crédito preaprobada Q2",
"slug": "tarjeta-credito-preaprobada-q2",
"description": "...",
"status": "Draft",
"createdAt": "2026-01-15T10:00:00Z",
"templates": [ ... ],
"distributionChannels": [
{ "channel": "DEV", "activeTemplateId": null, "publishedAt": null },
{ "channel": "STAGING", "activeTemplateId": null, "publishedAt": null },
{ "channel": "PROD", "activeTemplateId": null, "publishedAt": null }
],
"publicVideoShares": [ ... ]
}

Relacionado