Herramientas de Integración

Hardata API

Versión del documento: 1.1
Contrato fuente: OpenAPI 3.1.1, API v1.0
Estado de referencia: 14 de septiembre de 2026

Esta es la referencia pública y autocontenida de HARDATA API. Permite autenticar, consultar y administrar materiales, metadata, catálogos y tráfico publicitario, además de ejecutar el algoritmo de programación. Debe utilizarse junto con HARDATA ECP cuando una aplicación también necesite observar o controlar HDX en tiempo real.

Esta documentación no contiene tokens, claves, usuarios, contraseñas ni valores privados de una instalación. Todos los valores de autenticación de los ejemplos son marcadores que el integrador debe sustituir en tiempo de ejecución.

1. URL base y transporte

La especificación de referencia declara http://localhost:5010/. En una instalación real, la URL base es provista por HARDATA o por el administrador del sistema. No codifique localhost ni un puerto como constantes de producto.

  • Transporte HTTP/HTTPS.
  • Cuerpos JSON en UTF-8 salvo multipart/form-data y streaming de materiales.
  • Fechas y horas deben enviarse en el formato indicado por el esquema de cada campo.
  • Los identificadores son opacos: no deduzca significado, orden ni permanencia a partir de su valor. Cuando el esquema declara int64, su representación decimal sigue siendo un identificador, no un número apto para cálculos de negocio.
  • En producción use HTTPS y valide el certificado.

2. Autenticación

La especificación declara autenticación HTTP Bearer con tokens JWT. Obtenga un token con POST /api/v1/auth/login y envíelo en las solicitudes protegidas:

Authorization: Bearer <token-jwt>

Ejemplo de login sin credenciales reales:

POST /api/v1/auth/login
Content-Type: application/json

{ "username": "<usuario>", "password": "<contraseña>" }

Respuesta: LoginResponse, con success, message, token y refreshToken. Cuando el token haya vencido, renueve con POST /api/v1/auth/refresh. Nunca registre el cuerpo del login ni el token. La fuente OpenAPI define el esquema Bearer, pero no anota seguridad operación por operación; una integración debe considerar protegido cualquier endpoint que la instalación no exponga expresamente como público y manejar 401 Unauthorized.

La URL base, las credenciales y el token de HARDATA API se configuran y administran separadamente de la conexión HARDATA ECP. Una sesión WebSocket autenticada no autentica solicitudes HTTP, session.setup no descubre la API y una App no debe asumir que ambos servicios comparten credenciales aunque una instalación concreta los haya aprovisionado así.

3. Convenciones de cliente

  • Enviar Accept: application/json para respuestas JSON.
  • Enviar Content-Type: application/json para altas y modificaciones JSON.
  • Tratar 200 y 201 como éxito con cuerpo; 204 como éxito sin cuerpo.
  • Manejar 400 como entrada inválida, 401 como autenticación ausente/vencida, 404 como recurso inexistente, 409 como conflicto y 500 como error interno.
  • Para errores con cuerpo ProblemDetails, conservar status, title, detail, type e instance.
  • No reintentar automáticamente POST, PUT o DELETE si el resultado es desconocido. Consultar primero el estado del recurso.
  • Aplicar timeout, cancelación y backoff con jitter. Renovar el token según la política de la instalación.
  • Tolerar propiedades adicionales para mantener compatibilidad con extensiones futuras.

Relación de materialId con HARDATA ECP

materialId es un Int64 en HARDATA Database y en HARDATA API. HARDATA ECP lo transporta como string decimal canónico para evitar pérdida de precisión: 0 o una secuencia sin cero inicial entre 1 y 9223372036854775807.

Para consultar la metadata de un nodo ECP, la App usa esa secuencia literalmente como {materialId} en GET /api/v1/material/{materialId}. El servidor la convierte a Int64 con cultura invariante. No debe convertirse antes a Number de JavaScript; para leer respuestas JSON que contengan identificadores int64 fuera del rango seguro de JavaScript se requiere un parser que preserve enteros de 64 bits.

4. Ejemplos mínimos

Consultar un material

GET /api/v1/material/12345
Authorization: Bearer <token-jwt>
Accept: application/json

Consultar timing para automatización

Use GET /api/v1/material/{materialId}. Los campos temporales enteros de MaterialResponse se expresan en milisegundos:

  • startPos y endPos: posiciones de inicio y fin sobre la línea de tiempo del archivo; endPos = 0 indica que se usa el final físico.
  • punchIn e intro: posiciones medidas desde el comienzo del archivo.
  • punchOut y outro: anticipaciones medidas hacia atrás desde el fin efectivo; por ejemplo, punchOut = 1500 comienza el crossfade cuando quedan 1500 ms.
  • punchInFadeLength y punchOutFadeLength: duraciones de fade.
  • insertOver: desplazamiento temporal, también en milisegundos.

Una aplicación como AI Operator puede combinar esta metadata con positionMs, durationMs y remainingMs recibidos por HARDATA ECP. HARDATA API no reemplaza los timers ni eventos de reproducción de ECP; antes de comparar magnitudes, la App debe respetar la orientación de cada marcador y mantener una sola unidad.

Búsqueda paginada

GET /api/v1/material/search?q=nombre&page=1&pageSize=50
Authorization: Bearer <token-jwt>

Streaming con seeking

GET /api/v1/material/12345/stream?fileId=67890
Authorization: Bearer <token-jwt>
Range: bytes=0-1048575

El endpoint puede responder 200 o 206; manejar 416 cuando el rango no sea válido.

5. Catálogo completo de endpoints

Agency

GET /api/v1/traffic/agency

Estado Respuesta Descripción
200 array de AgencyResponse OK

POST /api/v1/traffic/agency

Cuerpo: CreateAgencyRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 AgencyResponse OK

GET /api/v1/traffic/agency/{agencyId}

Parámetro Ubicación Tipo Obligatorio Descripción
agencyId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 AgencyResponse OK

PUT /api/v1/traffic/agency/{agencyId}

Parámetro Ubicación Tipo Obligatorio Descripción
agencyId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateAgencyRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 AgencyResponse OK

DELETE /api/v1/traffic/agency/{agencyId}

Parámetro Ubicación Tipo Obligatorio Descripción
agencyId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/agency/types

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/agency/statuses

Estado Respuesta Descripción
200 sin esquema declarado OK

Album

GET /api/v1/album

Estado Respuesta Descripción
200 array de AlbumResponse OK

POST /api/v1/album

Cuerpo: CreateAlbumRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 AlbumResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/album/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 AlbumResponse OK
404 ProblemDetails Not Found

PUT /api/v1/album/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateAlbumRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 AlbumResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/album/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

Algorithm

POST /api/v1/traffic/algorithm/schedule

Execute the scheduling algorithm for a specific date and station.

Cuerpo: ScheduleRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 SchedulingResponse Scheduling completed successfully.
400 ProblemDetails Invalid request parameters.
401 ProblemDetails Unauthorized - JWT token required.
500 sin esquema declarado Internal server error during scheduling.

GET /api/v1/traffic/algorithm/stats

Get scheduling statistics for a specific date and station. Useful for preview before running the full algorithm.

Parámetro Ubicación Tipo Obligatorio Descripción
stationId query integer o string (int32) no Station ID. patrón ^-?(?:0|[1-9]\d*)$
date query string (date) no Schedule date (YYYY-MM-DD).
Estado Respuesta Descripción
200 SchedulingStats Statistics retrieved successfully.
400 ProblemDetails Invalid parameters.
401 ProblemDetails Unauthorized - JWT token required.

AssetType

GET /api/v1/asset-type

Estado Respuesta Descripción
200 array de AssetTypeResponse OK

GET /api/v1/asset-type/{assetTypeId}

Parámetro Ubicación Tipo Obligatorio Descripción
assetTypeId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 AssetTypeResponse OK
404 ProblemDetails Not Found

Auth

POST /api/v1/auth/login

Cuerpo: HdxLoginRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 LoginResponse OK

POST /api/v1/auth/refresh

Cuerpo: RefreshTokenRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 LoginResponse OK

Break Templates

GET /api/v1/traffic/breaktemplate

Listar todos los templates

Parámetro Ubicación Tipo Obligatorio Descripción
includeInactive query boolean no predeterminado False
Estado Respuesta Descripción
200 array de BreakTemplateResponse OK
401 ProblemDetails Unauthorized

POST /api/v1/traffic/breaktemplate

Cuerpo: CreateBreakTemplateRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 BreakTemplateResponse OK

GET /api/v1/traffic/breaktemplate/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 BreakTemplateResponse OK

PUT /api/v1/traffic/breaktemplate/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateBreakTemplateRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 BreakTemplateResponse OK

DELETE /api/v1/traffic/breaktemplate/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/breaktemplate/station/{stationId}

Obtener templates por emisora

Parámetro Ubicación Tipo Obligatorio Descripción
stationId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
includeInactive query boolean no predeterminado False
Estado Respuesta Descripción
200 array de BreakTemplateResponse OK
401 ProblemDetails Unauthorized

DELETE /api/v1/traffic/breaktemplate/{id}/hard

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

BreakType

GET /api/v1/traffic/break-types

Estado Respuesta Descripción
200 array de sin esquema declarado OK

POST /api/v1/traffic/break-types

Cuerpo: CreateBreakTypeRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 sin esquema declarado Created
409 ProblemDetails Conflict

PUT /api/v1/traffic/break-types/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateBreakTypeRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 sin esquema declarado OK
404 ProblemDetails Not Found

DELETE /api/v1/traffic/break-types/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

Campaign

GET /api/v1/traffic/campaign

Estado Respuesta Descripción
200 array de CampaignResponse OK

POST /api/v1/traffic/campaign

Cuerpo: CreateCampaignRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 CampaignResponse OK

GET /api/v1/traffic/campaign/{campaignId}

Parámetro Ubicación Tipo Obligatorio Descripción
campaignId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 CampaignResponse OK

PUT /api/v1/traffic/campaign/{campaignId}

Parámetro Ubicación Tipo Obligatorio Descripción
campaignId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateCampaignRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 CampaignResponse OK

DELETE /api/v1/traffic/campaign/{campaignId}

Parámetro Ubicación Tipo Obligatorio Descripción
campaignId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/campaign/statuses

Estado Respuesta Descripción
200 sin esquema declarado OK

Category

GET /api/v1/category

Estado Respuesta Descripción
200 array de CategoryResponse OK

POST /api/v1/category

Cuerpo: CreateCategoryRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 CategoryResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

GET /api/v1/category/{categoryId}

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 CategoryResponse OK
404 ProblemDetails Not Found

PUT /api/v1/category/{categoryId}

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateCategoryRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 CategoryResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/category/{categoryId}

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

GET /api/v1/category/storages

Estado Respuesta Descripción
200 array de CategoryResponse OK

GET /api/v1/category/{categoryId}/nextcode

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 NextCodeResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

GET /api/v1/category/{categoryId}/children

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de CategoryResponse OK
404 ProblemDetails Not Found

GET /api/v1/category/{categoryId}/ancestors

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de CategoryResponse OK
404 ProblemDetails Not Found

GET /api/v1/category/{categoryId}/descendants

Parámetro Ubicación Tipo Obligatorio Descripción
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de CategoryResponse OK
404 ProblemDetails Not Found

Client

GET /api/v1/traffic/client

Obtiene todos los clientes.

Estado Respuesta Descripción
200 array de ClientResponse Lista de clientes.

POST /api/v1/traffic/client

Crea un nuevo cliente.

Cuerpo: CreateClientRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 ClientResponse Cliente creado.

GET /api/v1/traffic/client/{clientId}

Obtiene un cliente por su ID.

Parámetro Ubicación Tipo Obligatorio Descripción
clientId path integer (int32) sí ID del cliente. patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 ClientResponse Cliente encontrado.

PUT /api/v1/traffic/client/{clientId}

Actualiza un cliente existente.

Parámetro Ubicación Tipo Obligatorio Descripción
clientId path integer (int32) sí ID del cliente a actualizar. patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateClientRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 ClientResponse Cliente actualizado.

DELETE /api/v1/traffic/client/{clientId}

Elimina un cliente por su ID.

Parámetro Ubicación Tipo Obligatorio Descripción
clientId path integer (int32) sí ID del cliente a eliminar. patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado Resultado de la operaci�n.

GET /api/v1/traffic/client/statuses

Estado Respuesta Descripción
200 sin esquema declarado OK

Clip Metadata

GET /api/v1/traffic/clip_metadata

Estado Respuesta Descripción
200 array de ClipMetadataResponse OK

POST /api/v1/traffic/clip_metadata

Cuerpo: CreateClipMetadataRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 ClipMetadataResponse OK

GET /api/v1/traffic/clip_metadata/{clipMetadataId}

Parámetro Ubicación Tipo Obligatorio Descripción
clipMetadataId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 ClipMetadataResponse OK

DELETE /api/v1/traffic/clip_metadata/{clipMetadataId}

Parámetro Ubicación Tipo Obligatorio Descripción
clipMetadataId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

Common

GET /api/v1/traffic/common/scopes

Alcances posibles (National / Local). Usado en Order, BreakTemplateZone y ClipMetadata.

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/common/weekdays

Valores base del bitmask de días de la semana. Usado en OrderDaypart y BreakTemplate.

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/common/break-types

Tipos de tanda disponibles (Simple, Rotativa, etc.). Usado en BreakTemplate.

Estado Respuesta Descripción
200 sin esquema declarado OK

Company

GET /api/v1/company

Estado Respuesta Descripción
200 array de CompanyResponse OK

POST /api/v1/company

Cuerpo: CreateCompanyRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 CompanyResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/company/{companyId}

Parámetro Ubicación Tipo Obligatorio Descripción
companyId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 CompanyResponse OK
404 ProblemDetails Not Found

PUT /api/v1/company/{companyId}

Parámetro Ubicación Tipo Obligatorio Descripción
companyId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateCompanyRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 CompanyResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/company/{companyId}

Parámetro Ubicación Tipo Obligatorio Descripción
companyId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

FileType

GET /api/v1/file-type

Estado Respuesta Descripción
200 array de FileTypeResponse OK

GET /api/v1/file-type/{fileTypeId}

Parámetro Ubicación Tipo Obligatorio Descripción
fileTypeId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 FileTypeResponse OK
404 ProblemDetails Not Found

Genre

GET /api/v1/genre

Estado Respuesta Descripción
200 array de GenreResponse OK

POST /api/v1/genre

Cuerpo: CreateGenreRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 GenreResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/genre/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 GenreResponse OK
404 ProblemDetails Not Found

PUT /api/v1/genre/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateGenreRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 GenreResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/genre/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

Industry

GET /api/v1/traffic/industry

Obtiene todos los rubros.

Estado Respuesta Descripción
200 array de IndustryResponse Lista de rubros.

POST /api/v1/traffic/industry

Crea nuevos rubros.

Cuerpo: array de string. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 array de IndustryResponse Lista de rubros creados.

GET /api/v1/traffic/industry/{industryId}

Obtiene rubro especifico por id.

Parámetro Ubicación Tipo Obligatorio Descripción
industryId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 IndustryResponse Rubro especifico.

PUT /api/v1/traffic/industry/{industryId}

Actualiza un rubro existente.

Parámetro Ubicación Tipo Obligatorio Descripción
industryId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateIndustryRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 IndustryResponse Rubro actualizado.

DELETE /api/v1/traffic/industry/{industryId}

Elimina un rubro existente.

Parámetro Ubicación Tipo Obligatorio Descripción
industryId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado Rubro eliminado.

Material

GET /api/v1/material

Obtiene todos los materiales, con filtros opcionales y paginación. Cada fila de CATEGORYMATERIAL (master o link) se devuelve como un material. Por defecto excluye la papelera (isDeleted=false).

Parámetro Ubicación Tipo Obligatorio Descripción
CategoryId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Title query string no
Code query string no
MediaTypeId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
MaterialStateId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
HasFiles query boolean no
IsDeleted query boolean no
page query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$; predeterminado 1
pageSize query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$; predeterminado 50
Estado Respuesta Descripción
200 PagedResponseOfMaterialResponse OK

GET /api/v1/material/search

Busca materiales por texto libre en todos los campos relevantes (title, code, comments, rdsText, tags, customFields, artist/author names, album, genre, company).

Parámetro Ubicación Tipo Obligatorio Descripción
q query string no
page query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$; predeterminado 1
pageSize query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$; predeterminado 50
Estado Respuesta Descripción
200 PagedResponseOfMaterialResponse OK

GET /api/v1/material/{materialId}

Obtiene un material por su ID.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 MaterialResponse OK
404 ProblemDetails Not Found

PUT /api/v1/material/{materialId}

Actualiza la metadata de un material existente.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateMaterialRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 MaterialResponse OK
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/material/{materialId}

Elimina un material completo: archivos físicos, MATERIALFILE, FILE, CATEGORYMATERIAL y finalmente MATERIAL. Orden secuencial para respetar FKs.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found

GET /api/v1/material/{materialId}/stream

Stream de audio/video para reproducción en el frontend. Soporta range requests para seeking.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
fileId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK
206 sin esquema declarado Partial Content
401 ProblemDetails Unauthorized
404 ProblemDetails Not Found
416 ProblemDetails Range Not Satisfiable

POST /api/v1/material/placeholder

Crea un material placeholder sin audio.

Cuerpo: MaterialPlaceholderRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 MaterialResponse Created
409 ProblemDetails Conflict

GET /api/v1/material/{materialId}/files

Obtiene todos los archivos asociados a un material.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de MaterialFileResponse OK
404 ProblemDetails Not Found

PUT /api/v1/material/{materialId}/category/{categoryId}

Mueve un material a otra categoría. Reemplaza todos los vínculos de categoría existentes.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
categoryId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK
404 ProblemDetails Not Found

DELETE /api/v1/material/{materialId}/files/{fileId}

Elimina un archivo asociado a un material, incluyendo el archivo físico del storage.

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
fileId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found

POST /api/v1/material/batch-delete

Elimina múltiples materiales en una sola transacción secuencial para evitar deadlocks.

Cuerpo: BatchDeleteRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 sin esquema declarado OK
400 ProblemDetails Bad Request

POST /api/v1/material/fill

Adjunta un archivo de audio o video a un material existente.

Cuerpo: multipart/form-data. Obligatorio: sí.

Campo Tipo Obligatorio Descripción
materialId integer o string (int64) sí
file archivo binario sí
Estado Respuesta Descripción
201 MaterialFillResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

GET /api/v1/material/{materialId}/artists

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de MaterialArtistResponse OK
404 ProblemDetails Not Found

POST /api/v1/material/{materialId}/artists

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: LinkArtistRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 MaterialArtistResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/material/{materialId}/artists/{personId}

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
personId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found

GET /api/v1/material/{materialId}/authors

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de MaterialAuthorResponse OK
404 ProblemDetails Not Found

POST /api/v1/material/{materialId}/authors

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: LinkAuthorRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 MaterialAuthorResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/material/{materialId}/authors/{personId}

Parámetro Ubicación Tipo Obligatorio Descripción
materialId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
personId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found

MediaType

GET /api/v1/media-type

Estado Respuesta Descripción
200 array de MediaTypeResponse OK

GET /api/v1/media-type/{mediaTypeId}

Parámetro Ubicación Tipo Obligatorio Descripción
mediaTypeId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 MediaTypeResponse OK
404 ProblemDetails Not Found

Order

GET /api/v1/traffic/order

Estado Respuesta Descripción
200 array de OrderResponse OK

POST /api/v1/traffic/order

Cuerpo: CreateOrderRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 OrderResponse OK

GET /api/v1/traffic/order/{orderId}

Parámetro Ubicación Tipo Obligatorio Descripción
orderId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 OrderResponse OK

PUT /api/v1/traffic/order/{orderId}

Parámetro Ubicación Tipo Obligatorio Descripción
orderId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateOrderRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 OrderResponse OK

DELETE /api/v1/traffic/order/{orderId}

Parámetro Ubicación Tipo Obligatorio Descripción
orderId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/order/statuses

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/order/position-types

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/order/protection-levels

Estado Respuesta Descripción
200 sin esquema declarado OK

Order Daypart

GET /api/v1/traffic/order_daypart

Estado Respuesta Descripción
200 array de OrderDaypartDto OK

POST /api/v1/traffic/order_daypart

Cuerpo: CreateOrderDaypartRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 OrderDaypartDto OK

GET /api/v1/traffic/order_daypart/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 OrderDaypartDto OK

PUT /api/v1/traffic/order_daypart/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateOrderDaypartRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 OrderDaypartDto OK

DELETE /api/v1/traffic/order_daypart/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

Person

GET /api/v1/person

Estado Respuesta Descripción
200 array de PersonResponse OK

POST /api/v1/person

Cuerpo: CreatePersonRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 PersonResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/person/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 PersonResponse OK
404 ProblemDetails Not Found

PUT /api/v1/person/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdatePersonRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 PersonResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/person/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

PGM5

GET /api/v1/traffic/pgm5/all

Parámetro Ubicación Tipo Obligatorio Descripción
FromDate query string (date) no
ToDate query string (date) no
Status query integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
StationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de Pgm5SummaryResponse OK
400 ProblemDetails Bad Request

GET /api/v1/traffic/pgm5/{pgmId}

Parámetro Ubicación Tipo Obligatorio Descripción
pgmId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 SchedulingResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

DELETE /api/v1/traffic/pgm5/{pgmId}

Parámetro Ubicación Tipo Obligatorio Descripción
pgmId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

GET /api/v1/traffic/pgm5

Parámetro Ubicación Tipo Obligatorio Descripción
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
date query string (date) no
Estado Respuesta Descripción
200 SchedulingResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

POST /api/v1/traffic/pgm5

Cuerpo: SavePgm5Request. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 SavePgm5Response OK
400 ProblemDetails Bad Request

GET /api/v1/traffic/pgm5/exists

Parámetro Ubicación Tipo Obligatorio Descripción
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
date query string (date) no
Estado Respuesta Descripción
200 Pgm5ExistsResponse OK
400 ProblemDetails Bad Request

PATCH /api/v1/traffic/pgm5/{pgmId}/status

Parámetro Ubicación Tipo Obligatorio Descripción
pgmId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdatePgm5StatusRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 Pgm5SummaryResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

PGM

GET /api/v1/pgm

Parámetro Ubicación Tipo Obligatorio Descripción
StationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Date query string no
ProgrammingTypeId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
Active query boolean no
Estado Respuesta Descripción
200 sin esquema declarado OK
400 ProblemDetails Bad Request

POST /api/v1/pgm

Cuerpo: CreatePgmRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 PgmResponse Created
400 ProblemDetails Bad Request

GET /api/v1/pgm/types

Estado Respuesta Descripción
200 array de ProgrammingTypeResponse OK

GET /api/v1/pgm/conditions

Estado Respuesta Descripción
200 array de PgmConditionResponse OK

GET /api/v1/pgm/{pgmId}

Parámetro Ubicación Tipo Obligatorio Descripción
pgmId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 PgmResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

PUT /api/v1/pgm/{pgmId}

Parámetro Ubicación Tipo Obligatorio Descripción
pgmId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdatePgmRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 PgmResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

DELETE /api/v1/pgm/{pgmId}

Parámetro Ubicación Tipo Obligatorio Descripción
pgmId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

PriorityType

GET /api/v1/priority-type

Estado Respuesta Descripción
200 array de PriorityTypeResponse OK

GET /api/v1/priority-type/{priorityTypeId}

Parámetro Ubicación Tipo Obligatorio Descripción
priorityTypeId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 PriorityTypeResponse OK
404 ProblemDetails Not Found

Report

GET /api/v1/traffic/reports/programming

Parámetro Ubicación Tipo Obligatorio Descripción
startDate query string (date) no
endDate query string (date) no
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
clientId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
orderId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de SchedulingResponse OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/orders

Parámetro Ubicación Tipo Obligatorio Descripción
startDate query string (date) no
endDate query string (date) no
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
clientId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
orderId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de ReportOrdenesItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/schedule

Parámetro Ubicación Tipo Obligatorio Descripción
startDate query string (date) no
endDate query string (date) no
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de ReportScheduleItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/break-occupancy

Parámetro Ubicación Tipo Obligatorio Descripción
startDate query string (date) no
endDate query string (date) no
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de ReportBreakOccupancyItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/industry-share

Parámetro Ubicación Tipo Obligatorio Descripción
startDate query string (date) no
endDate query string (date) no
stationId query integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de ReportIndustryShareItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/audit

Parámetro Ubicación Tipo Obligatorio Descripción
from query string (date-time) no
to query string (date-time) no
method query string no
statusCode query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
userId query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
limit query integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 array de ReportAuditLogItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

RythmType

GET /api/v1/rythm-type

Estado Respuesta Descripción
200 array de RythmTypeResponse OK

GET /api/v1/rythm-type/{rythmTypeId}

Parámetro Ubicación Tipo Obligatorio Descripción
rythmTypeId path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 RythmTypeResponse OK
404 ProblemDetails Not Found

Settings

GET /api/v1/traffic/settings

Estado Respuesta Descripción
200 SettingsResponse OK
404 ProblemDetails Not Found

PATCH /api/v1/traffic/settings

Cuerpo: UpdateSettingsRequest. Content-Type: application/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 SettingsResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

Station

GET /api/v1/station

Obtener todas las estaciones

Estado Respuesta Descripción
200 array de sin esquema declarado OK
401 ProblemDetails Unauthorized

GET /api/v1/station/{stationId}

Obtener estación por ID

Parámetro Ubicación Tipo Obligatorio Descripción
stationId path integer (int64) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized
404 ProblemDetails Not Found

Template

GET /api/v1/traffic/template

Parámetro Ubicación Tipo Obligatorio Descripción
includeInactive query boolean no predeterminado False
Estado Respuesta Descripción
200 array de TemplateResponse OK

POST /api/v1/traffic/template

Cuerpo: CreateTemplateRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
201 TemplateResponse Created
400 ProblemDetails Bad Request

GET /api/v1/traffic/template/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 TemplateResponse OK
404 ProblemDetails Not Found

PUT /api/v1/traffic/template/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateTemplateRequest. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 TemplateResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

DELETE /api/v1/traffic/template/{id}

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found

DELETE /api/v1/traffic/template/{id}/hard

Parámetro Ubicación Tipo Obligatorio Descripción
id path integer (int32) sí patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
204 sin esquema declarado No Content
404 ProblemDetails Not Found

User

POST /api/v1/traffic/user/refreshusers

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/users

Obtiene todos los usuarios.

Estado Respuesta Descripción
200 sin esquema declarado OK

GET /api/v1/traffic/user/{userid}

Obtiene un usuario por su ID.

Parámetro Ubicación Tipo Obligatorio Descripción
userid path integer o string (int32) sí ID del usuario. patrón ^-?(?:0|[1-9]\d*)$
Estado Respuesta Descripción
200 sin esquema declarado OK

PUT /api/v1/traffic/user/{userid}

Actualiza el roleid de un usuario (endpoint singular).

Parámetro Ubicación Tipo Obligatorio Descripción
userid path integer o string (int32) sí ID del usuario. patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateUserRoleDto. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 sin esquema declarado OK

PUT /api/v1/traffic/users/{userid}

Actualiza el roleid de un usuario (endpoint plural).

Parámetro Ubicación Tipo Obligatorio Descripción
userid path integer o string (int32) sí ID del usuario. patrón ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateUserRoleDto. Content-Type: application/json, text/json, application/*+json. Obligatorio: sí.

Estado Respuesta Descripción
200 sin esquema declarado OK

6. Modelos de datos

Los nombres y tipos siguientes se derivan directamente del contrato OpenAPI. Una propiedad no marcada como obligatoria puede estar ausente; además, algunos modelos heredados admiten valores nulos aunque el esquema no siempre los marque explícitamente. Los clientes deben deserializar de manera tolerante.

Modelo ActiveStage

Active stage of the scheduler. Controls which logic is enabled.

Propiedad Tipo Obligatoria Descripción y restricciones
`` sin esquema declarado sí

Modelo AgencyResponse

Propiedad Tipo Obligatoria Descripción y restricciones
agencyId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name string no
type integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
typeName null o string no
contact null o string no
phone null o string no
email null o string no
commission null o number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
notes null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no

Modelo AlbumResponse

Propiedad Tipo Obligatoria Descripción y restricciones
albumId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
albumName string no
albumYear null o string no
genreId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
catalogCode null o string no
companyId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
comments null o string no
imageFileId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo AssetTypeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
assetTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName null o string no

Modelo BatchDeleteRequest

Propiedad Tipo Obligatoria Descripción y restricciones
materialIds array de integer o string (int64) no

Modelo BreakClipResponse

Clip fijo pre-asignado.

Propiedad Tipo Obligatoria Descripción y restricciones
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
clipId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName string sí
title null o string no
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
playedDate null o string (date-time) no
aired boolean no

Modelo BreakResponse

Información de un break (tanda) programado.

Propiedad Tipo Obligatoria Descripción y restricciones
breakId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
templateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
startTime string (time) sí
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
breakType string sí
zones array de ZoneResponse sí
clips array de BreakClipResponse sí

Modelo BreakTemplateClipResponse

DTO de respuesta para un clip de template.

Propiedad Tipo Obligatoria Descripción y restricciones
clipId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
materialId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
randomArtisticCategoryId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName null o string no
title null o string no
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo BreakTemplateResponse

DTO de respuesta para un template de tanda.

Propiedad Tipo Obligatoria Descripción y restricciones
breakTemplateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
templateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
templateName string sí
name string sí
startTime string (time) sí
dayOffset boolean sí
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
breakType integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
breakTypeName null o string sí
dayOfWeek integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
specificDate null o string (date) no
isActive boolean sí
utcCreated string (date-time) sí
utcModified string (date-time) sí
zones array de BreakTemplateZoneResponse no
clips array de BreakTemplateClipResponse no

Modelo BreakTemplateZoneResponse

DTO de respuesta para una zona de template.

Propiedad Tipo Obligatoria Descripción y restricciones
zoneId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
scope Scope sí
scopeName null o string sí
maxDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo CampaignResponse

Propiedad Tipo Obligatoria Descripción y restricciones
campaignId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
agencyId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
agencyName null o string no
name string no
startDate string (date) no
endDate string (date) no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
notes null o string no

Modelo CategoryResponse

Propiedad Tipo Obligatoria Descripción y restricciones
categoryId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
categoryName string no
nodeLevel null o string no
description null o string no
counter null o string no
prefix null o string no
isStorage null o boolean no
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
storageName null o string no
utcCreatedDate null o string no
utcCreatedTime null o string no
utcModifiedDate null o string no
utcModifiedTime null o string no

Modelo ClientResponse

Propiedad Tipo Obligatoria Descripción y restricciones
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
companyName string no
industries array de IndustryItem no
contact null o string no
phone null o string no
email null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
notes null o string no

Modelo ClipMetadataResponse

Propiedad Tipo Obligatoria Descripción y restricciones
clipMetadataId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
orderId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo ClipRequest

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo ClipResponse

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
code null o string no
title null o string no
duration null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
categoryId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
categoryName null o string no

Modelo CompanyResponse

Propiedad Tipo Obligatoria Descripción y restricciones
companyId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
companyName string no
utcCreatedDate null o string no
utcCreatedTime null o string no
utcModifiedDate null o string no
utcModifiedTime null o string no

Modelo CreateAgencyRequest

Propiedad Tipo Obligatoria Descripción y restricciones
name string no
type integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
contact null o string no
phone null o string no
email null o string no
commission null o number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
notes null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$

Modelo CreateAlbumRequest

Propiedad Tipo Obligatoria Descripción y restricciones
albumName string sí
albumYear null o string no
genreId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
catalogCode null o string no
companyId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
comments null o string no
imageFileId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo CreateBreakTemplateClipRequest

DTO para crear un clip dentro de un template.

Propiedad Tipo Obligatoria Descripción y restricciones
materialId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
randomArtisticCategoryId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo CreateBreakTemplateRequest

DTO para crear un nuevo template de tanda. Incluye zonas y clips asociados.

Propiedad Tipo Obligatoria Descripción y restricciones
templateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
startTime string (time) sí
dayOffset boolean sí
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
breakType integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
isActive boolean no
zones array de CreateBreakTemplateZoneRequest no
clips array de CreateBreakTemplateClipRequest no

Modelo CreateBreakTemplateZoneRequest

DTO para crear una zona dentro de un template.

Propiedad Tipo Obligatoria Descripción y restricciones
scope Scope no
maxDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo CreateBreakTypeRequest

Propiedad Tipo Obligatoria Descripción y restricciones
name string sí

Modelo CreateCampaignRequest

Propiedad Tipo Obligatoria Descripción y restricciones
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
agencyId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name string no
startDate string (date) no
endDate string (date) no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
notes null o string no

Modelo CreateCategoryRequest

Propiedad Tipo Obligatoria Descripción y restricciones
categoryName string no
parentCategoryId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
description null o string no
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
prefix null o string no

Modelo CreateClientRequest

Propiedad Tipo Obligatoria Descripción y restricciones
companyName string no
industryIds array de integer o string (int32) no
contact null o string no
phone null o string no
email null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
notes null o string no

Modelo CreateClipMetadataRequest

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo CreateCompanyRequest

Propiedad Tipo Obligatoria Descripción y restricciones
companyName string sí

Modelo CreateGenreRequest

Propiedad Tipo Obligatoria Descripción y restricciones
genreName string sí

Modelo CreateOrderDaypartRequest

Propiedad Tipo Obligatoria Descripción y restricciones
orderId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
fixedTime boolean no
startTime string (time) no
endTime string (time) no
startDayOffset boolean no
endDayOffset boolean no
weekdays integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
orderRuns integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo CreateOrderRequest

Propiedad Tipo Obligatoria Descripción y restricciones
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
duration integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
startDate string (date) no
endDate null o string (date) no
priority integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
breakTypeFilter integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
positionType integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
manualPosition null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
scope integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
protectionLevel integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
minSeparation integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
maxFrequency integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
interleaveArtistic boolean no
title null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
dayparts array de OrderDaypartDto no
clips array de ClipRequest no
industryIds array de integer o string (int32) no

Modelo CreatePersonRequest

Propiedad Tipo Obligatoria Descripción y restricciones
personName string sí

Modelo CreatePgmRequest

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
date string sí
programmingTypeId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
active boolean no
blocks array de PgmBlockRequest sí

Modelo CreateTemplateRequest

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
dayOfWeek integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
startTime string (time) sí
endTime string (time) sí
endDayOffset boolean sí
specificDate null o string (date) no
isActive boolean no

Modelo FileTypeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
fileTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
fileTypeName null o string no

Modelo GenreResponse

Propiedad Tipo Obligatoria Descripción y restricciones
genreId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
genreName string no

Modelo HdxLoginRequest

Propiedad Tipo Obligatoria Descripción y restricciones
username string no
password string no

Modelo IFormFile

Propiedad Tipo Obligatoria Descripción y restricciones
`` sin esquema declarado sí

Modelo IndustryItem

Propiedad Tipo Obligatoria Descripción y restricciones
industryId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name string no

Modelo IndustryResponse

Propiedad Tipo Obligatoria Descripción y restricciones
industryId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name string no

Modelo LinkArtistRequest

Propiedad Tipo Obligatoria Descripción y restricciones
personId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
order integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
unique boolean no

Modelo LinkAuthorRequest

Propiedad Tipo Obligatoria Descripción y restricciones
personId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
order integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
unique boolean no

Modelo LoginResponse

Propiedad Tipo Obligatoria Descripción y restricciones
success boolean no
message string no
token null o string no
refreshToken null o string no

Modelo MaterialArtistResponse

Propiedad Tipo Obligatoria Descripción y restricciones
personId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
personName string no
order integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
unique boolean no

Modelo MaterialAuthorResponse

Propiedad Tipo Obligatoria Descripción y restricciones
personId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
personName string no
order integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
unique boolean no

Modelo MaterialFileResponse

Propiedad Tipo Obligatoria Descripción y restricciones
fileId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
fileName string no
fileTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
subFolder string no
mimeType null o string no
fileSize null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
utcCreatedDate string no
utcCreatedTime string no
fullPath string no

Modelo MaterialFillResponse

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
fileId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo MaterialPlaceholderRequest

Propiedad Tipo Obligatoria Descripción y restricciones
rdsText null o string sí
code string sí
comments null o string sí
title string sí
categoryId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
mediaTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
albumId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
companyId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
genreId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
rythmId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
artistIds array de integer o string (int64) no
authorIds array de integer o string (int64) no

Modelo MaterialResponse

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
title null o string no
code null o string no
rdsText null o string no
comments null o string no
priorityId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
mediaTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
materialStateId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
startPos null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
endPos null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
intro null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
outro null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchIn null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchOut null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchInFadeLength null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchOutFadeLength null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchInFadeTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchOutFadeTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
insertOver null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
length null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
contractStartDate null o string no
contractEndDate null o string no
utcCreatedDate null o string no
utcCreatedTime null o string no
utcModifiedDate null o string no
utcModifiedTime null o string no
contentTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
contentDate null o string no
contentTime null o string no
oldMaterialId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
vStandard null o string no
archiveStateId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
customField0 null o string no
customField1 null o string no
customField2 null o string no
customField3 null o string no
customField4 null o string no
customField5 null o string no
customField6 null o string no
customField7 null o string no
customField8 null o string no
customField9 null o string no
national boolean no
independent boolean no
skipSadaic boolean no
useTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
recordingTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
personType null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
languageId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
bpm null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
tags null o string no
rythmId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
utcDcsCuratedDate null o string no
utcDcsCuratedTime null o string no
acousticId null o string no
companyId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
albumId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
genreId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
categoryId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
categoryName null o string no
isDeleted null o boolean no
master null o boolean no

Modelo MediaTypeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
mediaTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
mediaTypeName null o string no

Modelo NextCodeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
code string no

Modelo OrderDaypartDto

Propiedad Tipo Obligatoria Descripción y restricciones
daypartId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
orderId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
fixedTime boolean no
startTime string (time) no
endTime string (time) no
startDayOffset boolean no
endDayOffset boolean no
weekdays integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
orderRuns integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo OrderResponse

Propiedad Tipo Obligatoria Descripción y restricciones
orderId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignName null o string no
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
duration integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
startDate string (date) no
endDate null o string (date) no
priority integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
breakTypeFilter integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
breakTypeFilterName null o string no
positionType integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
positionTypeName null o string no
manualPosition null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
scopeId integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
scopeName null o string no
protectionLevel integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
protectionLevelName null o string no
interleaveArtistic boolean no
title null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
dayparts array de OrderDaypartDto no
clips array de ClipResponse no
industries array de IndustryResponse no

Modelo PagedResponseOfMaterialResponse

Propiedad Tipo Obligatoria Descripción y restricciones
data array de MaterialResponse no
total integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo PersonResponse

Propiedad Tipo Obligatoria Descripción y restricciones
personId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
personName string no

Modelo Pgm5ExistsResponse

Propiedad Tipo Obligatoria Descripción y restricciones
exists boolean no
pgmId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
status null o integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no

Modelo Pgm5SummaryResponse

Propiedad Tipo Obligatoria Descripción y restricciones
pgmId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
pgmDate string (date) no
templateId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
reviewReasons array de string no
unplaced integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
forced integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
conflict integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo PgmBlockRequest

Propiedad Tipo Obligatoria Descripción y restricciones
description null o string no
blockTime string sí
events array de PgmEventRequest sí

Modelo PgmBlockResponse

Propiedad Tipo Obligatoria Descripción y restricciones
description null o string no
blockTime string no
events array de PgmEventResponse no

Modelo PgmConditionResponse

Propiedad Tipo Obligatoria Descripción y restricciones
condition integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name string no
description string no

Modelo PgmEventRequest

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
condition integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
trafficCode null o string no
trafficIndex null o string no

Modelo PgmEventResponse

Propiedad Tipo Obligatoria Descripción y restricciones
materialId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
condition integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
trafficCode null o string no
trafficIndex null o string no

Modelo PgmResponse

Propiedad Tipo Obligatoria Descripción y restricciones
id integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
date string no
programmingTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
programmingTypeName null o string no
active boolean no
utcModifiedDate string no
utcModifiedTime string no
blocks array de PgmBlockResponse no

Modelo PriorityTypeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
priorityTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
priorityTypeName null o string no

Modelo ProblemDetails

Propiedad Tipo Obligatoria Descripción y restricciones
type null o string no
title null o string no
status null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
detail null o string no
instance null o string no

Modelo ProgrammingTypeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
id integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name null o string no

Modelo RefreshTokenRequest

Propiedad Tipo Obligatoria Descripción y restricciones
refreshToken string no

Modelo ReportAuditLogItem

Fila de auditoría de acciones de usuarios.

Propiedad Tipo Obligatoria Descripción y restricciones
id integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
createdAt string (date-time) no
userId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
username null o string no
method string no
path string no
action string no
detail null o string no
statusCode integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
elapsedMs null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
error null o string no

Modelo ReportBreakOccupancyItem

Ocupación promedio de tanda por hora en el rango.

Propiedad Tipo Obligatoria Descripción y restricciones
hour integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
ocupacionPct number o string (double) sí patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
zonaUsadaSeg integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
zonaMaxSeg integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
zonas integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo ReportIndustryShareItem

Participación por rubro (industria) en el rango.

Propiedad Tipo Obligatoria Descripción y restricciones
rubro string sí
segundos integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
spots integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
porcentaje number o string (double) sí patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$

Modelo ReportOrdenesItem

Proyección de airings por orden en un rango de fechas.

Propiedad Tipo Obligatoria Descripción y restricciones
orderId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderTitle null o string no
clientId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignName null o string no
duration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
vecesQueSaldra integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
programadosReal integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo ReportScheduleItem

As-run log: una fila por emisión de material (spot o clip) en el rango.

Propiedad Tipo Obligatoria Descripción y restricciones
playedDate null o string (date) no Actual air date (null if not aired yet).
playedTime null o string (time) no Actual air time (null if not aired yet).
orderTitle null o string no Advertising order title.
clientName null o string no
campaignName null o string no
industry null o string no Advertiser industry.
hdxMaterialName null o string no HDX material name.
duration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
aired boolean no

Modelo RythmTypeResponse

Propiedad Tipo Obligatoria Descripción y restricciones
rythmTypeId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
rythmTypeName null o string no

Modelo SaveBreakClipRequest

Propiedad Tipo Obligatoria Descripción y restricciones
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
clipId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName null o string no
title null o string no
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo SaveBreakRequest

Propiedad Tipo Obligatoria Descripción y restricciones
breakId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
templateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
startTime string (time) sí
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
breakType string sí
zones array de SaveZoneRequest sí
clips array de SaveBreakClipRequest sí

Modelo SavePgm5Request

Propiedad Tipo Obligatoria Descripción y restricciones
pgmId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) sí
stationId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
status null o integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
reviewReasons array de string no
breaks array de SaveBreakRequest sí
summary SchedulingSummary sí
unplaced array de SaveUnplacedRequest sí
metrics SchedulingMetricsResponse sí
statusId integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
reviewReason null o string no

Modelo SavePgm5Response

Propiedad Tipo Obligatoria Descripción y restricciones
pgmId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
pgmDate string (date) no
templateId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
breakCount integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
zoneCount integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clipCount integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
spotCount integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
unplacedCount integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
overwritten boolean no

Modelo SaveSpotRequest

Propiedad Tipo Obligatoria Descripción y restricciones
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
orderTitle null o string no
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignName null o string no
clientId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
industry null o string no
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName null o string no
positionType null o string no
lockState string sí
conflictReason null o string no

Modelo SaveUnplacedRequest

Propiedad Tipo Obligatoria Descripción y restricciones
instanceId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
orderId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
orderTitle null o string no
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignName null o string no
clientId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
industry null o string no
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName null o string no
positionType null o string no
probableCause string sí

Modelo SaveZoneRequest

Propiedad Tipo Obligatoria Descripción y restricciones
zoneId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
scopeId integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
scopeName string sí
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
maxDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
usedDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
spots array de SaveSpotRequest sí

Modelo ScheduleRequest

Request to execute the scheduling algorithm.

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int32) sí Station ID to schedule. patrón ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) sí Date to schedule (commercial day).
activeStage ActiveStage no Active algorithm stage (Stage1, Stage2, or Stage3). Default: Stage1.
scoreWeights null o ScoreWeights no Custom scoring weights (optional). If null, uses default weights.
ignoreSoftConstraints boolean no If true, ignores soft constraints (separation, frequency, competitive protection). Spots that violate soft constraints will be assigned with state CONFLICT. Default: false (respects all constraints).
ignoreHardConstraints boolean no If true, ignores all constraints except physical duration. Spots will be assigned with state FORCED even if they violate hard constraints. Implies IgnoreSoftConstraints = true. Default: false (respects hard constraints).
savePgm boolean no If true, persists the generated PGM5 in HDX. If false, only returns the generated result.

Modelo SchedulingMetricsResponse

Métricas del resultado.

Propiedad Tipo Obligatoria Descripción y restricciones
totalConflicts integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalForced integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalUnplaced integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
overallFulfillmentPercentage number o string (double) sí patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$

Modelo SchedulingResponse

Respuesta jerárquica del algoritmo de scheduling. Estructura: Breaks → Zones → Spots

Propiedad Tipo Obligatoria Descripción y restricciones
pgmId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) sí
stationId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
status null o integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
statusName null o string no
reviewReasons array de string no
breaks array de BreakResponse sí
summary SchedulingSummary sí
unplaced array de UnplacedResponse sí
metrics SchedulingMetricsResponse sí

Modelo SchedulingStats

Statistics about scheduling availability for a date.

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) sí
breakCount integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalBreakDurationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
campaignCount integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderCount integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalDesiredRuns integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo SchedulingSummary

Resumen general del resultado.

Propiedad Tipo Obligatoria Descripción y restricciones
totalBreaks integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalSpots integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalCommands integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
usedDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$

Modelo Scope

Scope of a spot or zone: National or Local.

Propiedad Tipo Obligatoria Descripción y restricciones
`` sin esquema declarado sí

Modelo ScoreWeights

Pesos para el cálculo de puntaje de candidatos en el scoring del algoritmo.

Propiedad Tipo Obligatoria Descripción y restricciones
w1_Priority number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w2_Separation number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w3_Distribution number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w4_Variety number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w5_Frequency number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w6_Occupation number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$

Modelo SettingsResponse

Propiedad Tipo Obligatoria Descripción y restricciones
settingId integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
autoApprovePgm boolean no
forceFullPlacement boolean no
enableAdvancedLog boolean no
materialCodeByCategory boolean no
defaultArtisticCategoryId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
utcModified string (date-time) no

Modelo SpotResponse

Spot (comercial/artístico) asignado.

Propiedad Tipo Obligatoria Descripción y restricciones
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderTitle null o string no
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignName null o string no
clientId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
industry null o string no
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName string sí
positionType null o string no
lockState string sí
conflictReason null o string no
playedDate null o string (date-time) no
aired boolean no

Modelo TemplateBreakTemplateSummaryResponse

Propiedad Tipo Obligatoria Descripción y restricciones
breakTemplateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
startTime string (time) sí
dayOffset boolean sí
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
breakType integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
breakTypeName null o string no
isActive boolean sí

Modelo TemplateResponse

Propiedad Tipo Obligatoria Descripción y restricciones
templateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
stationId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
dayOfWeek integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
startTime string (time) sí
endTime string (time) sí
endDayOffset boolean sí
specificDate null o string (date) no
isActive boolean sí
utcCreated string (date-time) sí
utcModified string (date-time) sí
breakTemplates array de TemplateBreakTemplateSummaryResponse no

Modelo UnplacedResponse

Spot que no pudo ser asignado.

Propiedad Tipo Obligatoria Descripción y restricciones
instanceId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
orderTitle null o string no
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
campaignName null o string no
clientId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
clientName null o string no
industry null o string no
materialId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
durationSeconds integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
assetTypeName string sí
positionType null o string no
probableCause string sí

Modelo UpdateAgencyRequest

Propiedad Tipo Obligatoria Descripción y restricciones
name string no
type integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
contact null o string no
phone null o string no
email null o string no
commission null o number o string (double) no patrón ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
notes null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$

Modelo UpdateAlbumRequest

Propiedad Tipo Obligatoria Descripción y restricciones
albumName string sí
albumYear null o string no
genreId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
catalogCode null o string no
companyId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
comments null o string no
imageFileId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo UpdateBreakTemplateRequest

DTO para actualizar un template existente.

Propiedad Tipo Obligatoria Descripción y restricciones
templateId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
startTime string (time) sí
dayOffset boolean sí
totalDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
breakType integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
isActive boolean no
zones array de CreateBreakTemplateZoneRequest no
clips array de CreateBreakTemplateClipRequest no

Modelo UpdateBreakTypeRequest

Propiedad Tipo Obligatoria Descripción y restricciones
name string sí

Modelo UpdateCampaignRequest

Propiedad Tipo Obligatoria Descripción y restricciones
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
agencyId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
name string no
startDate string (date) no
endDate string (date) no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
notes null o string no

Modelo UpdateCategoryRequest

Propiedad Tipo Obligatoria Descripción y restricciones
categoryName string no
description null o string no
prefix null o string no
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo UpdateClientRequest

Propiedad Tipo Obligatoria Descripción y restricciones
companyName string no
industryIds array de integer o string (int32) no
contact null o string no
phone null o string no
email null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
notes null o string no

Modelo UpdateCompanyRequest

Propiedad Tipo Obligatoria Descripción y restricciones
companyName string sí

Modelo UpdateGenreRequest

Propiedad Tipo Obligatoria Descripción y restricciones
genreName string sí

Modelo UpdateIndustryRequest

Propiedad Tipo Obligatoria Descripción y restricciones
name string no

Modelo UpdateMaterialRequest

Propiedad Tipo Obligatoria Descripción y restricciones
title null o string no
code null o string no
comments null o string no
rdsText null o string no
assetTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
mediaTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
albumId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
companyId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
genreId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
priorityId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
materialStateId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
startPos null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
endPos null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
intro null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
outro null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchIn null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchOut null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchInFadeLength null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchOutFadeLength null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchInFadeTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
punchOutFadeTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
insertOver null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
contractStartDate null o string no
contractEndDate null o string no
contentTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
contentDate null o string no
contentTime null o string no
vStandard null o string no
archiveStateId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
customField0 null o string no
customField1 null o string no
customField2 null o string no
customField3 null o string no
customField4 null o string no
customField5 null o string no
customField6 null o string no
customField7 null o string no
customField8 null o string no
customField9 null o string no
national null o boolean no
independent null o boolean no
skipSadaic null o boolean no
useTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
recordingTypeId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
personType null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
languageId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
bpm null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
tags null o string no
rythmId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo UpdateOrderDaypartRequest

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$
fixedTime boolean no
startTime string (time) no
endTime string (time) no
startDayOffset boolean no
endDayOffset boolean no
weekdays integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
orderRuns integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo UpdateOrderRequest

Propiedad Tipo Obligatoria Descripción y restricciones
campaignId null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
clientId integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
duration integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
startDate string (date) no
endDate null o string (date) no
priority integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
breakTypeFilter integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
positionType integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
manualPosition null o integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
scope integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
protectionLevel integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
minSeparation integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
maxFrequency integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$
interleaveArtistic boolean no
title null o string no
status integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
dayparts array de OrderDaypartDto no
clips array de ClipRequest no
industryIds array de integer o string (int32) no

Modelo UpdatePersonRequest

Propiedad Tipo Obligatoria Descripción y restricciones
personName string sí

Modelo UpdatePgm5StatusRequest

Propiedad Tipo Obligatoria Descripción y restricciones
statusId integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
reviewReason null o string no

Modelo UpdatePgmRequest

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
date string sí
programmingTypeId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
active boolean no
blocks array de PgmBlockRequest sí

Modelo UpdateSettingsRequest

Propiedad Tipo Obligatoria Descripción y restricciones
autoApprovePgm null o boolean no
forceFullPlacement null o boolean no
enableAdvancedLog null o boolean no
materialCodeByCategory null o boolean no
defaultArtisticCategoryId null o integer o string (int64) no patrón ^-?(?:0|[1-9]\d*)$

Modelo UpdateTemplateRequest

Propiedad Tipo Obligatoria Descripción y restricciones
stationId integer o string (int64) sí patrón ^-?(?:0|[1-9]\d*)$
name string sí
dayOfWeek integer o string (uint8) no patrón ^-?(?:0|[1-9]\d*)$
startTime string (time) sí
endTime string (time) sí
endDayOffset boolean sí
specificDate null o string (date) no
isActive boolean no

Modelo UpdateUserRoleDto

Propiedad Tipo Obligatoria Descripción y restricciones
roleid integer o string (int32) no patrón ^-?(?:0|[1-9]\d*)$

Modelo ZoneResponse

Zona dentro de un break.

Propiedad Tipo Obligatoria Descripción y restricciones
zoneId integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
scopeId integer o string (uint8) sí patrón ^-?(?:0|[1-9]\d*)$
scopeName string sí
position integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
maxDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
usedDuration integer o string (int32) sí patrón ^-?(?:0|[1-9]\d*)$
spots array de SpotResponse sí

7. Flujos recomendados

Aplicación de asistencia al aire

  1. Autenticarse y mantener el token fuera de logs.
  2. Usar HARDATA ECP para obtener playlists, playlistItemId, materialId, timers y cambios de actual/siguiente.
  3. Consultar GET /api/v1/material/{materialId} para metadata y marcas de audio.
  4. Consultar artistas y autores mediante los endpoints asociados al material cuando sea necesario.
  5. Cachear respuestas por materialId, con invalidación razonable; no consultar en cada evento de timer.
  6. Tomar decisiones de transporte exclusivamente con el estado autoritativo de HARDATA ECP.

Gestión de tráfico

  1. Crear o consultar agencias, clientes, campañas y órdenes.
  2. Configurar dayparts, clips, industrias, prioridades y restricciones.
  3. Configurar templates y templates de tanda por emisora.
  4. Consultar estadísticas del algoritmo.
  5. Ejecutar la programación y revisar conflictos, no ubicados y métricas.

8. Seguridad y privacidad

  • No incluir usuarios, contraseñas, JWT, claves o URLs privadas en código fuente, repositorios, telemetría o capturas.
  • Guardar secretos en el almacén seguro del sistema operativo o en un gestor de secretos.
  • Evitar registrar cuerpos que puedan contener datos personales, contactos, emails o tokens.
  • Aplicar mínimo privilegio y separar cuentas de lectura de cuentas con capacidad de modificación o borrado.
  • Confirmar explícitamente operaciones destructivas, especialmente hard delete, batch delete y eliminación de archivos físicos.
  • No exponer el endpoint de broadcast WebSocket a usuarios sin autorización administrativa.

9. Checklist de implementación

  • URL base configurable y HTTPS en producción.
  • Login y token fuera de logs.
  • Bearer enviado sólo al host esperado.
  • Timeouts, cancelación y backoff implementados.
  • 200, 201, 204, 206, 400, 401, 404, 409, 416 y 500 manejados.
  • Paginación aplicada en listados de materiales.
  • Streaming implementa Range requests.
  • Mutaciones desconocidas no se reintentan automáticamente.
  • Eliminaciones físicas requieren confirmación.
  • Modelos toleran campos adicionales y nulos.
  • HARDATA ECP se usa como autoridad para el estado al aire.