Integration Tools

Hardata API

Document version: 1.1
Contrato fuente: OpenAPI 3.1.1, API v1.0
Reference status: September 14, 2026

This is the public, self-contained HARDATA API reference. It supports authentication, querying and management of media, metadata, catalogs, and advertising traffic, as well as execution of the scheduling algorithm. It should be used together with HARDATA ECP when an application also needs to monitor or control HDX in real time.

This documentation does not contain tokens, keys, users, passwords, or private values from any installation. All authentication values in the examples are placeholders that the integrator must replace at runtime.

1. Base URL and Transport

The reference specification declares http://localhost:5010/. In a real installation, the base URL is provided by HARDATA or by the system administrator. Do not hard-code localhost or a port as product constants.

  • Transporte HTTP/HTTPS.
  • JSON bodies are UTF-8 except for multipart/form-data and media streaming.
  • Dates and times must be sent in the format specified by each field's schema.
  • Identifiers are opaque: do not infer meaning, order, or persistence from their value. When the schema declares int64, its decimal representation is still an identifier, not a number suitable for business calculations.
  • Use HTTPS in production and validate the certificate.

2. Authentication

The specification declares HTTP Bearer authentication using JWT tokens. Obtain a token with POST /api/v1/auth/login and send it with protected requests:

Authorization: Bearer <token-jwt>

Login example without real credentials:

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

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

Response: LoginResponse, with success, message, token and refreshToken. When the token has expired, refresh it with POST /api/v1/auth/refresh. Never log the login body or token. The OpenAPI source defines the Bearer scheme but does not annotate security operation by operation; an integration should treat any endpoint not explicitly exposed as public by the installation as protected and handle 401 Unauthorized.

The HARDATA API base URL, credentials, and token are configured and managed separately from the HARDATA ECP connection. An authenticated WebSocket session does not authenticate HTTP requests, session.setup does not discover the API, and an App must not assume that both services share credentials even if a particular installation has provisioned them that way.

3. Client Conventions

  • Send Accept: application/json for JSON responses.
  • Send Content-Type: application/json for JSON creates and updates.
  • Tratar 200 and 201 as success with a body; 204 as success without a body.
  • Handle 400 as invalid input, 401 as missing or expired authentication, 404 as resource not found, 409 as a conflict, and 500 as an internal server error.
  • For errors with a body ProblemDetails, preserve status, title, detail, type e instance.
  • Do not automatically retry POST, PUT o DELETE if the outcome is unknown. Check the resource state first.
  • Apply timeouts, cancellation, and backoff with jitter. Refresh the token according to the installation policy.
  • Allow additional properties to maintain compatibility with future extensions.

Relationship of materialId with HARDATA ECP

materialId is an Int64 in HARDATA Database and HARDATA API. HARDATA ECP transports it as a canonical decimal string to avoid loss of precision: 0 or a sequence without a leading zero between 1 and 9223372036854775807.

To query the metadata of an ECP node, the App uses that sequence literally as {materialId} in GET /api/v1/material/{materialId}. The server converts it to Int64 using invariant culture. It must not first be converted to Number in JavaScript; to read JSON responses containing int64 outside JavaScript's safe range, a parser that preserves 64-bit integers is required.

4. Minimal Examples

Query a media item

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

Query Timing for Automation

Use GET /api/v1/material/{materialId}. The integer time fields of MaterialResponse are expressed in milliseconds:

  • startPos and endPos: start and end positions on the file timeline; endPos = 0 indicates that the physical end is used.
  • punchIn e intro: positions measured from the beginning of the file.
  • punchOut and outro: offsets measured backward from the effective end; for example, punchOut = 1500 starts the crossfade when 1500 ms remain.
  • punchInFadeLength and punchOutFadeLength: fade durations.
  • insertOver: time offset, also in milliseconds.

An application such as AI Operator can combine this metadata with positionMs, durationMs and remainingMs received through HARDATA ECP. HARDATA API does not replace ECP timers or playback events; before comparing values, the App must respect the direction of each marker and use a single unit.

Paginated Search

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

Streaming with Seeking

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

The endpoint may return 200 or 206; handle 416 when the requested range is invalid.

5. Complete Endpoint Catalog

Agency

GET /api/v1/traffic/agency

Status Response Description
200 array of AgencyResponse OK

POST /api/v1/traffic/agency

Cuerpo: CreateAgencyRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 AgencyResponse OK

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

Parameter Location Type Required Description
agencyId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 AgencyResponse OK

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

Parameter Location Type Required Description
agencyId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateAgencyRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 AgencyResponse OK

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

Parameter Location Type Required Description
agencyId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

GET /api/v1/traffic/agency/types

Status Response Description
200 no declared schema OK

GET /api/v1/traffic/agency/statuses

Status Response Description
200 no declared schema OK

Album

GET /api/v1/album

Status Response Description
200 array of AlbumResponse OK

POST /api/v1/album

Cuerpo: CreateAlbumRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 AlbumResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/album/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 AlbumResponse OK
404 ProblemDetails Not Found

PUT /api/v1/album/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateAlbumRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 AlbumResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/album/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema 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. Required: yes.

Status Response Description
200 SchedulingResponse Scheduling completed successfully.
400 ProblemDetails Invalid request parameters.
401 ProblemDetails Unauthorized - JWT token required.
500 no declared schema 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.

Parameter Location Type Required Description
stationId query integer or string (int32) No Station ID. pattern ^-?(?:0|[1-9]\d*)$
date query string (date) No Schedule date (YYYY-MM-DD).
Status Response Description
200 SchedulingStats Statistics retrieved successfully.
400 ProblemDetails Invalid parameters.
401 ProblemDetails Unauthorized - JWT token required.

AssetType

GET /api/v1/asset-type

Status Response Description
200 array of AssetTypeResponse OK

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

Parameter Location Type Required Description
assetTypeId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 AssetTypeResponse OK
404 ProblemDetails Not Found

Auth

POST /api/v1/auth/login

Cuerpo: HdxLoginRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 LoginResponse OK

POST /api/v1/auth/refresh

Cuerpo: RefreshTokenRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 LoginResponse OK

Break Templates

GET /api/v1/traffic/breaktemplate

List all templates

Parameter Location Type Required Description
includeInactive query boolean No predeterminado False
Status Response Description
200 array of BreakTemplateResponse OK
401 ProblemDetails Unauthorized

POST /api/v1/traffic/breaktemplate

Cuerpo: CreateBreakTemplateRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 BreakTemplateResponse OK

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 BreakTemplateResponse OK

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateBreakTemplateRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 BreakTemplateResponse OK

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

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

Get templates by station

Parameter Location Type Required Description
stationId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
includeInactive query boolean No predeterminado False
Status Response Description
200 array of BreakTemplateResponse OK
401 ProblemDetails Unauthorized

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

BreakType

GET /api/v1/traffic/break-types

Status Response Description
200 array with no declared schema OK

POST /api/v1/traffic/break-types

Cuerpo: CreateBreakTypeRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 no declared schema Created
409 ProblemDetails Conflict

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateBreakTypeRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 no declared schema OK
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

Campaign

GET /api/v1/traffic/campaign

Status Response Description
200 array of CampaignResponse OK

POST /api/v1/traffic/campaign

Cuerpo: CreateCampaignRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 CampaignResponse OK

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

Parameter Location Type Required Description
campaignId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 CampaignResponse OK

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

Parameter Location Type Required Description
campaignId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateCampaignRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 CampaignResponse OK

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

Parameter Location Type Required Description
campaignId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

GET /api/v1/traffic/campaign/statuses

Status Response Description
200 no declared schema OK

Category

GET /api/v1/category

Status Response Description
200 array of CategoryResponse OK

POST /api/v1/category

Cuerpo: CreateCategoryRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 CategoryResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

GET /api/v1/category/{categoryId}

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 CategoryResponse OK
404 ProblemDetails Not Found

PUT /api/v1/category/{categoryId}

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateCategoryRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 CategoryResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/category/{categoryId}

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

GET /api/v1/category/storages

Status Response Description
200 array of CategoryResponse OK

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

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 NextCodeResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of CategoryResponse OK
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of CategoryResponse OK
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of CategoryResponse OK
404 ProblemDetails Not Found

Client

GET /api/v1/traffic/client

Gets all clients.

Status Response Description
200 array of ClientResponse Client list.

POST /api/v1/traffic/client

Creates a new client.

Cuerpo: CreateClientRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 ClientResponse Client created.

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

Gets a client by ID.

Parameter Location Type Required Description
clientId path integer (int32) yes Client ID. pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 ClientResponse Client found.

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

Updates an existing client.

Parameter Location Type Required Description
clientId path integer (int32) yes ID of the client to update. pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateClientRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 ClientResponse Client updated.

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

Deletes a client by ID.

Parameter Location Type Required Description
clientId path integer (int32) yes ID of the client to delete. pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema Operation result.

GET /api/v1/traffic/client/statuses

Status Response Description
200 no declared schema OK

Clip Metadata

GET /api/v1/traffic/clip_metadata

Status Response Description
200 array of ClipMetadataResponse OK

POST /api/v1/traffic/clip_metadata

Cuerpo: CreateClipMetadataRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 ClipMetadataResponse OK

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

Parameter Location Type Required Description
clipMetadataId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 ClipMetadataResponse OK

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

Parameter Location Type Required Description
clipMetadataId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

Common

GET /api/v1/traffic/common/scopes

Possible scopes (National / Local). Used in Order, BreakTemplateZone, and ClipMetadata.

Status Response Description
200 no declared schema OK

GET /api/v1/traffic/common/weekdays

Base values for the day-of-week bitmask. Used in OrderDaypart and BreakTemplate.

Status Response Description
200 no declared schema OK

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

Available break types (Simple, Rotating, etc.). Used in BreakTemplate.

Status Response Description
200 no declared schema OK

Company

GET /api/v1/company

Status Response Description
200 array of CompanyResponse OK

POST /api/v1/company

Cuerpo: CreateCompanyRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 CompanyResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/company/{companyId}

Parameter Location Type Required Description
companyId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 CompanyResponse OK
404 ProblemDetails Not Found

PUT /api/v1/company/{companyId}

Parameter Location Type Required Description
companyId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateCompanyRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 CompanyResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/company/{companyId}

Parameter Location Type Required Description
companyId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

FileType

GET /api/v1/file-type

Status Response Description
200 array of FileTypeResponse OK

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

Parameter Location Type Required Description
fileTypeId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 FileTypeResponse OK
404 ProblemDetails Not Found

Genre

GET /api/v1/genre

Status Response Description
200 array of GenreResponse OK

POST /api/v1/genre

Cuerpo: CreateGenreRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 GenreResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/genre/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 GenreResponse OK
404 ProblemDetails Not Found

PUT /api/v1/genre/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateGenreRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 GenreResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/genre/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

Industry

GET /api/v1/traffic/industry

Gets all industries.

Status Response Description
200 array of IndustryResponse Industry list.

POST /api/v1/traffic/industry

Creates new industries.

Cuerpo: array of string. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 array of IndustryResponse List of created industries.

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

Gets a specific industry by ID.

Parameter Location Type Required Description
industryId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 IndustryResponse Specific industry.

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

Updates an existing industry.

Parameter Location Type Required Description
industryId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateIndustryRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 IndustryResponse Industry updated.

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

Deletes an existing industry.

Parameter Location Type Required Description
industryId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema Industry deleted.

Media

GET /api/v1/material

Gets all media, with optional filters and pagination. Each CATEGORYMATERIAL row (master or link) is returned as a media item. By default, the recycle bin is excluded (isDeleted=false).

Parameter Location Type Required Description
CategoryId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Title query string No
Code query string No
MediaTypeId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
MaterialStateId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
HasFiles query boolean No
IsDeleted query boolean No
page query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$; predeterminado 1
pageSize query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$; predeterminado 50
Status Response Description
200 PagedResponseOfMaterialResponse OK

GET /api/v1/material/search

Searches media by free text across all relevant fields (title, code, comments, rdsText, tags, customFields, artist/author names, album, genre, company).

Parameter Location Type Required Description
q query string No
page query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$; predeterminado 1
pageSize query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$; predeterminado 50
Status Response Description
200 PagedResponseOfMaterialResponse OK

GET /api/v1/material/{materialId}

Gets a media item by ID.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 MaterialResponse OK
404 ProblemDetails Not Found

PUT /api/v1/material/{materialId}

Updates the metadata of an existing media item.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateMaterialRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 MaterialResponse OK
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/material/{materialId}

Deletes an entire media item: physical files, MATERIALFILE, FILE, CATEGORYMATERIAL, and finally MATERIAL. Sequential order is used to respect foreign keys.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found

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

Audio/video stream for frontend playback. Supports range requests for seeking.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
fileId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK
206 no declared schema Partial Content
401 ProblemDetails Unauthorized
404 ProblemDetails Not Found
416 ProblemDetails Range Not Satisfiable

POST /api/v1/material/placeholder

Creates a placeholder media item without audio.

Cuerpo: MaterialPlaceholderRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 MaterialResponse Created
409 ProblemDetails Conflict

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

Gets all files associated with a media item.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of MaterialFileResponse OK
404 ProblemDetails Not Found

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

Moves a media item to another category. Replaces all existing category links.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
categoryId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK
404 ProblemDetails Not Found

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

Deletes a file associated with a media item, including the physical file from storage.

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
fileId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found

POST /api/v1/material/batch-delete

Deletes multiple media items in a single sequential transaction to avoid deadlocks.

Cuerpo: BatchDeleteRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 no declared schema OK
400 ProblemDetails Bad Request

POST /api/v1/material/fill

Attaches an audio or video file to an existing media item.

Cuerpo: multipart/form-data. Required: yes.

Field Type Required Description
materialId integer or string (int64) yes
file binary file yes
Status Response Description
201 MaterialFillResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of MaterialArtistResponse OK
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: LinkArtistRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 MaterialArtistResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

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

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
personId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of MaterialAuthorResponse OK
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: LinkAuthorRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 MaterialAuthorResponse Created
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

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

Parameter Location Type Required Description
materialId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
personId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found

MediaType

GET /api/v1/media-type

Status Response Description
200 array of MediaTypeResponse OK

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

Parameter Location Type Required Description
mediaTypeId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 MediaTypeResponse OK
404 ProblemDetails Not Found

Order

GET /api/v1/traffic/order

Status Response Description
200 array of OrderResponse OK

POST /api/v1/traffic/order

Cuerpo: CreateOrderRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 OrderResponse OK

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

Parameter Location Type Required Description
orderId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 OrderResponse OK

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

Parameter Location Type Required Description
orderId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateOrderRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 OrderResponse OK

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

Parameter Location Type Required Description
orderId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

GET /api/v1/traffic/order/statuses

Status Response Description
200 no declared schema OK

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

Status Response Description
200 no declared schema OK

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

Status Response Description
200 no declared schema OK

Order Daypart

GET /api/v1/traffic/order_daypart

Status Response Description
200 array of OrderDaypartDto OK

POST /api/v1/traffic/order_daypart

Cuerpo: CreateOrderDaypartRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 OrderDaypartDto OK

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

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 OrderDaypartDto OK

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateOrderDaypartRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 OrderDaypartDto OK

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

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

Person

GET /api/v1/person

Status Response Description
200 array of PersonResponse OK

POST /api/v1/person

Cuerpo: CreatePersonRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
201 PersonResponse Created
400 ProblemDetails Bad Request
409 ProblemDetails Conflict

GET /api/v1/person/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 PersonResponse OK
404 ProblemDetails Not Found

PUT /api/v1/person/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdatePersonRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 PersonResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found
409 ProblemDetails Conflict

DELETE /api/v1/person/{id}

Parameter Location Type Required Description
id path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found
409 ProblemDetails Conflict

PGM5

GET /api/v1/traffic/pgm5/all

Parameter Location Type Required Description
FromDate query string (date) No
ToDate query string (date) No
Status query integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
StationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of Pgm5SummaryResponse OK
400 ProblemDetails Bad Request

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

Parameter Location Type Required Description
pgmId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 SchedulingResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
pgmId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

GET /api/v1/traffic/pgm5

Parameter Location Type Required Description
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
date query string (date) No
Status Response Description
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. Required: yes.

Status Response Description
200 SavePgm5Response OK
400 ProblemDetails Bad Request

GET /api/v1/traffic/pgm5/exists

Parameter Location Type Required Description
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
date query string (date) No
Status Response Description
200 Pgm5ExistsResponse OK
400 ProblemDetails Bad Request

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

Parameter Location Type Required Description
pgmId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdatePgm5StatusRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 Pgm5SummaryResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

PGM

GET /api/v1/pgm

Parameter Location Type Required Description
StationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Date query string No
ProgrammingTypeId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
Active query boolean No
Status Response Description
200 no declared schema OK
400 ProblemDetails Bad Request

POST /api/v1/pgm

Cuerpo: CreatePgmRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
201 PgmResponse Created
400 ProblemDetails Bad Request

GET /api/v1/pgm/types

Status Response Description
200 array of ProgrammingTypeResponse OK

GET /api/v1/pgm/conditions

Status Response Description
200 array of PgmConditionResponse OK

GET /api/v1/pgm/{pgmId}

Parameter Location Type Required Description
pgmId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 PgmResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

PUT /api/v1/pgm/{pgmId}

Parameter Location Type Required Description
pgmId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdatePgmRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 PgmResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

DELETE /api/v1/pgm/{pgmId}

Parameter Location Type Required Description
pgmId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

PriorityType

GET /api/v1/priority-type

Status Response Description
200 array of PriorityTypeResponse OK

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

Parameter Location Type Required Description
priorityTypeId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 PriorityTypeResponse OK
404 ProblemDetails Not Found

Report

GET /api/v1/traffic/reports/programming

Parameter Location Type Required Description
startDate query string (date) No
endDate query string (date) No
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
clientId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
orderId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of SchedulingResponse OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/orders

Parameter Location Type Required Description
startDate query string (date) No
endDate query string (date) No
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
clientId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
orderId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of ReportOrdenesItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/schedule

Parameter Location Type Required Description
startDate query string (date) No
endDate query string (date) No
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of ReportScheduleItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

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

Parameter Location Type Required Description
startDate query string (date) No
endDate query string (date) No
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of ReportBreakOccupancyItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

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

Parameter Location Type Required Description
startDate query string (date) No
endDate query string (date) No
stationId query integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of ReportIndustryShareItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

GET /api/v1/traffic/reports/audit

Parameter Location Type Required Description
from query string (date-time) No
to query string (date-time) No
method query string No
statusCode query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
userId query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
limit query integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 array of ReportAuditLogItem OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized

RythmType

GET /api/v1/rythm-type

Status Response Description
200 array of RythmTypeResponse OK

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

Parameter Location Type Required Description
rythmTypeId path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 RythmTypeResponse OK
404 ProblemDetails Not Found

Settings

GET /api/v1/traffic/settings

Status Response Description
200 SettingsResponse OK
404 ProblemDetails Not Found

PATCH /api/v1/traffic/settings

Cuerpo: UpdateSettingsRequest. Content-Type: application/json, application/*+json. Required: yes.

Status Response Description
200 SettingsResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

Station

GET /api/v1/station

Get all stations

Status Response Description
200 array with no declared schema OK
401 ProblemDetails Unauthorized

GET /api/v1/station/{stationId}

Get station by ID

Parameter Location Type Required Description
stationId path integer (int64) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK
400 ProblemDetails Bad Request
401 ProblemDetails Unauthorized
404 ProblemDetails Not Found

Template

GET /api/v1/traffic/template

Parameter Location Type Required Description
includeInactive query boolean No predeterminado False
Status Response Description
200 array of TemplateResponse OK

POST /api/v1/traffic/template

Cuerpo: CreateTemplateRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
201 TemplateResponse Created
400 ProblemDetails Bad Request

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 TemplateResponse OK
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateTemplateRequest. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 TemplateResponse OK
400 ProblemDetails Bad Request
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found

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

Parameter Location Type Required Description
id path integer (int32) yes pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
204 no declared schema No Content
404 ProblemDetails Not Found

User

POST /api/v1/traffic/user/refreshusers

Status Response Description
200 no declared schema OK

GET /api/v1/traffic/users

Gets all users.

Status Response Description
200 no declared schema OK

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

Gets a user by ID.

Parameter Location Type Required Description
userid path integer or string (int32) yes User ID. pattern ^-?(?:0|[1-9]\d*)$
Status Response Description
200 no declared schema OK

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

Updates a user's roleid (singular endpoint).

Parameter Location Type Required Description
userid path integer or string (int32) yes User ID. pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateUserRoleDto. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 no declared schema OK

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

Updates a user's roleid (plural endpoint).

Parameter Location Type Required Description
userid path integer or string (int32) yes User ID. pattern ^-?(?:0|[1-9]\d*)$

Cuerpo: UpdateUserRoleDto. Content-Type: application/json, text/json, application/*+json. Required: yes.

Status Response Description
200 no declared schema OK

6. Data Models

The following names and types are derived directly from the OpenAPI contract. A property not marked as required may be absent; in addition, some legacy models allow null values even when the schema does not always mark them explicitly. Clients should deserialize tolerantly.

Model ActiveStage

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

Property Type Required Description and Constraints
`` no declared schema yes

Model AgencyResponse

Property Type Required Description and Constraints
agencyId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name string No
type integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
typeName null or string No
contact null or string No
phone null or string No
email null or string No
commission null or number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
notes null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No

Model AlbumResponse

Property Type Required Description and Constraints
albumId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
albumName string No
albumYear null or string No
genreId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
catalogCode null or string No
companyId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
comments null or string No
imageFileId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model AssetTypeResponse

Property Type Required Description and Constraints
assetTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName null or string No

Model BatchDeleteRequest

Property Type Required Description and Constraints
materialIds array of integer or string (int64) No

Model BreakClipResponse

Clip fijo pre-asignado.

Property Type Required Description and Constraints
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
clipId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName string yes
title null or string No
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
playedDate null or string (date-time) No
aired boolean No

Model BreakResponse

Information about a scheduled break.

Property Type Required Description and Constraints
breakId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
templateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
startTime string (time) yes
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
breakType string yes
zones array of ZoneResponse yes
clips array of BreakClipResponse yes

Model BreakTemplateClipResponse

Response DTO for a template clip.

Property Type Required Description and Constraints
clipId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
materialId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
randomArtisticCategoryId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName null or string No
title null or string No
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model BreakTemplateResponse

Response DTO for a break template.

Property Type Required Description and Constraints
breakTemplateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
templateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
templateName string yes
name string yes
startTime string (time) yes
dayOffset boolean yes
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
breakType integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
breakTypeName null or string yes
dayOfWeek integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
specificDate null or string (date) No
isActive boolean yes
utcCreated string (date-time) yes
utcModified string (date-time) yes
zones array of BreakTemplateZoneResponse No
clips array of BreakTemplateClipResponse No

Model BreakTemplateZoneResponse

Response DTO for a template zone.

Property Type Required Description and Constraints
zoneId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
scope Scope yes
scopeName null or string yes
maxDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model CampaignResponse

Property Type Required Description and Constraints
campaignId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
agencyId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
agencyName null or string No
name string No
startDate string (date) No
endDate string (date) No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
notes null or string No

Model CategoryResponse

Property Type Required Description and Constraints
categoryId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
categoryName string No
nodeLevel null or string No
description null or string No
counter null or string No
prefix null or string No
isStorage null or boolean No
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
storageName null or string No
utcCreatedDate null or string No
utcCreatedTime null or string No
utcModifiedDate null or string No
utcModifiedTime null or string No

Model ClientResponse

Property Type Required Description and Constraints
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
companyName string No
industries array of IndustryItem No
contact null or string No
phone null or string No
email null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
notes null or string No

Model ClipMetadataResponse

Property Type Required Description and Constraints
clipMetadataId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
materialId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
orderId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model ClipRequest

Property Type Required Description and Constraints
materialId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model ClipResponse

Property Type Required Description and Constraints
materialId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
code null or string No
title null or string No
duration null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
categoryId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
categoryName null or string No

Model CompanyResponse

Property Type Required Description and Constraints
companyId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
companyName string No
utcCreatedDate null or string No
utcCreatedTime null or string No
utcModifiedDate null or string No
utcModifiedTime null or string No

Model CreateAgencyRequest

Property Type Required Description and Constraints
name string No
type integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
contact null or string No
phone null or string No
email null or string No
commission null or number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
notes null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$

Model CreateAlbumRequest

Property Type Required Description and Constraints
albumName string yes
albumYear null or string No
genreId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
catalogCode null or string No
companyId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
comments null or string No
imageFileId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model CreateBreakTemplateClipRequest

DTO for creating a clip within a template.

Property Type Required Description and Constraints
materialId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
randomArtisticCategoryId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model CreateBreakTemplateRequest

DTO for creating a new break template. Includes associated zones and clips.

Property Type Required Description and Constraints
templateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
startTime string (time) yes
dayOffset boolean yes
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
breakType integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
isActive boolean No
zones array of CreateBreakTemplateZoneRequest No
clips array of CreateBreakTemplateClipRequest No

Model CreateBreakTemplateZoneRequest

DTO for creating a zone within a template.

Property Type Required Description and Constraints
scope Scope No
maxDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model CreateBreakTypeRequest

Property Type Required Description and Constraints
name string yes

Model CreateCampaignRequest

Property Type Required Description and Constraints
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
agencyId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name string No
startDate string (date) No
endDate string (date) No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
notes null or string No

Model CreateCategoryRequest

Property Type Required Description and Constraints
categoryName string No
parentCategoryId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
description null or string No
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
prefix null or string No

Model CreateClientRequest

Property Type Required Description and Constraints
companyName string No
industryIds array of integer or string (int32) No
contact null or string No
phone null or string No
email null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
notes null or string No

Model CreateClipMetadataRequest

Property Type Required Description and Constraints
materialId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model CreateCompanyRequest

Property Type Required Description and Constraints
companyName string yes

Model CreateGenreRequest

Property Type Required Description and Constraints
genreName string yes

Model CreateOrderDaypartRequest

Property Type Required Description and Constraints
orderId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
fixedTime boolean No
startTime string (time) No
endTime string (time) No
startDayOffset boolean No
endDayOffset boolean No
weekdays integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
orderRuns integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model CreateOrderRequest

Property Type Required Description and Constraints
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
duration integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
startDate string (date) No
endDate null or string (date) No
priority integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
breakTypeFilter integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
positionType integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
manualPosition null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
scope integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
protectionLevel integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
minSeparation integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
maxFrequency integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
interleaveArtistic boolean No
title null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
dayparts array of OrderDaypartDto No
clips array of ClipRequest No
industryIds array of integer or string (int32) No

Model CreatePersonRequest

Property Type Required Description and Constraints
personName string yes

Model CreatePgmRequest

Property Type Required Description and Constraints
stationId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
date string yes
programmingTypeId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
active boolean No
blocks array of PgmBlockRequest yes

Model CreateTemplateRequest

Property Type Required Description and Constraints
stationId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
dayOfWeek integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
startTime string (time) yes
endTime string (time) yes
endDayOffset boolean yes
specificDate null or string (date) No
isActive boolean No

Model FileTypeResponse

Property Type Required Description and Constraints
fileTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
fileTypeName null or string No

Model GenreResponse

Property Type Required Description and Constraints
genreId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
genreName string No

Model HdxLoginRequest

Property Type Required Description and Constraints
username string No
password string No

Model IFormFile

Property Type Required Description and Constraints
`` no declared schema yes

Model IndustryItem

Property Type Required Description and Constraints
industryId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name string No

Model IndustryResponse

Property Type Required Description and Constraints
industryId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name string No

Model LinkArtistRequest

Property Type Required Description and Constraints
personId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
order integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
unique boolean No

Model LinkAuthorRequest

Property Type Required Description and Constraints
personId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
order integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
unique boolean No

Model LoginResponse

Property Type Required Description and Constraints
success boolean No
message string No
token null or string No
refreshToken null or string No

Model MaterialArtistResponse

Property Type Required Description and Constraints
personId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
personName string No
order integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
unique boolean No

Model MaterialAuthorResponse

Property Type Required Description and Constraints
personId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
personName string No
order integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
unique boolean No

Model MaterialFileResponse

Property Type Required Description and Constraints
fileId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
fileName string No
fileTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
subFolder string No
mimeType null or string No
fileSize null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
utcCreatedDate string No
utcCreatedTime string No
fullPath string No

Model MaterialFillResponse

Property Type Required Description and Constraints
materialId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
fileId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model MaterialPlaceholderRequest

Property Type Required Description and Constraints
rdsText null or string yes
code string yes
comments null or string yes
title string yes
categoryId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
mediaTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
albumId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
companyId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
genreId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
rythmId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
artistIds array of integer or string (int64) No
authorIds array of integer or string (int64) No

Model MaterialResponse

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

Model MediaTypeResponse

Property Type Required Description and Constraints
mediaTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
mediaTypeName null or string No

Model NextCodeResponse

Property Type Required Description and Constraints
code string No

Model OrderDaypartDto

Property Type Required Description and Constraints
daypartId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
orderId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
fixedTime boolean No
startTime string (time) No
endTime string (time) No
startDayOffset boolean No
endDayOffset boolean No
weekdays integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
orderRuns integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model OrderResponse

Property Type Required Description and Constraints
orderId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignName null or string No
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
duration integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
startDate string (date) No
endDate null or string (date) No
priority integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
breakTypeFilter integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
breakTypeFilterName null or string No
positionType integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
positionTypeName null or string No
manualPosition null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
scopeId integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
scopeName null or string No
protectionLevel integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
protectionLevelName null or string No
interleaveArtistic boolean No
title null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
dayparts array of OrderDaypartDto No
clips array of ClipResponse No
industries array of IndustryResponse No

Model PagedResponseOfMaterialResponse

Property Type Required Description and Constraints
data array of MaterialResponse No
total integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model PersonResponse

Property Type Required Description and Constraints
personId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
personName string No

Model Pgm5ExistsResponse

Property Type Required Description and Constraints
exists boolean No
pgmId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
status null or integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No

Model Pgm5SummaryResponse

Property Type Required Description and Constraints
pgmId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
pgmDate string (date) No
templateId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
reviewReasons array of string No
unplaced integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
forced integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
conflict integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model PgmBlockRequest

Property Type Required Description and Constraints
description null or string No
blockTime string yes
events array of PgmEventRequest yes

Model PgmBlockResponse

Property Type Required Description and Constraints
description null or string No
blockTime string No
events array of PgmEventResponse No

Model PgmConditionResponse

Property Type Required Description and Constraints
condition integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name string No
description string No

Model PgmEventRequest

Property Type Required Description and Constraints
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
condition integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
trafficCode null or string No
trafficIndex null or string No

Model PgmEventResponse

Property Type Required Description and Constraints
materialId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
condition integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
trafficCode null or string No
trafficIndex null or string No

Model PgmResponse

Property Type Required Description and Constraints
id integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
date string No
programmingTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
programmingTypeName null or string No
active boolean No
utcModifiedDate string No
utcModifiedTime string No
blocks array of PgmBlockResponse No

Model PriorityTypeResponse

Property Type Required Description and Constraints
priorityTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
priorityTypeName null or string No

Model ProblemDetails

Property Type Required Description and Constraints
type null or string No
title null or string No
status null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
detail null or string No
instance null or string No

Model ProgrammingTypeResponse

Property Type Required Description and Constraints
id integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name null or string No

Model RefreshTokenRequest

Property Type Required Description and Constraints
refreshToken string No

Model ReportAuditLogItem

Audit row for user actions.

Property Type Required Description and Constraints
id integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
createdAt string (date-time) No
userId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
username null or string No
method string No
path string No
action string No
detail null or string No
statusCode integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
elapsedMs null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
error null or string No

Model ReportBreakOccupancyItem

Average break occupancy by hour within the range.

Property Type Required Description and Constraints
hour integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
ocupacionPct number or string (double) yes pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
zonaUsadaSeg integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
zonaMaxSeg integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
zonas integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model ReportIndustryShareItem

Share by industry within the range.

Property Type Required Description and Constraints
rubro string yes
segundos integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
spots integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
porcentaje number or string (double) yes pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$

Model ReportOrdenesItem

Projected airings by order over a date range.

Property Type Required Description and Constraints
orderId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderTitle null or string No
clientId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignName null or string No
duration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
vecesQueSaldra integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
programadosReal integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model ReportScheduleItem

As-run log: one row per media playout (spot or clip) within the range.

Property Type Required Description and Constraints
playedDate null or string (date) No Actual air date (null if not aired yet).
playedTime null or string (time) No Actual air time (null if not aired yet).
orderTitle null or string No Advertising order title.
clientName null or string No
campaignName null or string No
industry null or string No Advertiser industry.
hdxMaterialName null or string No HDX material name.
duration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
aired boolean No

Model RythmTypeResponse

Property Type Required Description and Constraints
rythmTypeId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
rythmTypeName null or string No

Model SaveBreakClipRequest

Property Type Required Description and Constraints
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
clipId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName null or string No
title null or string No
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model SaveBreakRequest

Property Type Required Description and Constraints
breakId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
templateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
startTime string (time) yes
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
breakType string yes
zones array of SaveZoneRequest yes
clips array of SaveBreakClipRequest yes

Model SavePgm5Request

Property Type Required Description and Constraints
pgmId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) yes
stationId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
status null or integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
reviewReasons array of string No
breaks array of SaveBreakRequest yes
summary SchedulingSummary yes
unplaced array of SaveUnplacedRequest yes
metrics SchedulingMetricsResponse yes
statusId integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
reviewReason null or string No

Model SavePgm5Response

Property Type Required Description and Constraints
pgmId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
pgmDate string (date) No
templateId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
breakCount integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
zoneCount integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clipCount integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
spotCount integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
unplacedCount integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
overwritten boolean No

Model SaveSpotRequest

Property Type Required Description and Constraints
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
orderTitle null or string No
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignName null or string No
clientId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
industry null or string No
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName null or string No
positionType null or string No
lockState string yes
conflictReason null or string No

Model SaveUnplacedRequest

Property Type Required Description and Constraints
instanceId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
orderId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
orderTitle null or string No
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignName null or string No
clientId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
industry null or string No
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName null or string No
positionType null or string No
probableCause string yes

Model SaveZoneRequest

Property Type Required Description and Constraints
zoneId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
scopeId integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
scopeName string yes
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
maxDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
usedDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
spots array of SaveSpotRequest yes

Model ScheduleRequest

Request to execute the scheduling algorithm.

Property Type Required Description and Constraints
stationId integer or string (int32) yes Station ID to schedule. pattern ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) yes Date to schedule (commercial day).
activeStage ActiveStage No Active algorithm stage (Stage1, Stage2, or Stage3). Default: Stage1.
scoreWeights null or 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.

Model SchedulingMetricsResponse

Result metrics.

Property Type Required Description and Constraints
totalConflicts integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalForced integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalUnplaced integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
overallFulfillmentPercentage number or string (double) yes pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$

Model SchedulingResponse

Hierarchical response from the scheduling algorithm. Structure: Breaks → Zones → Spots

Property Type Required Description and Constraints
pgmId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) yes
stationId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
status null or integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
statusName null or string No
reviewReasons array of string No
breaks array of BreakResponse yes
summary SchedulingSummary yes
unplaced array of UnplacedResponse yes
metrics SchedulingMetricsResponse yes

Model SchedulingStats

Statistics about scheduling availability for a date.

Property Type Required Description and Constraints
stationId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
scheduleDate string (date) yes
breakCount integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalBreakDurationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
campaignCount integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderCount integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalDesiredRuns integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model SchedulingSummary

Overall result summary.

Property Type Required Description and Constraints
totalBreaks integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalSpots integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalCommands integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
usedDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$

Model Scope

Scope of a spot or zone: National or Local.

Property Type Required Description and Constraints
`` no declared schema yes

Model ScoreWeights

Weights used to calculate candidate scores in the algorithm scoring.

Property Type Required Description and Constraints
w1_Priority number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w2_Separation number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w3_Distribution number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w4_Variety number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w5_Frequency number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$
w6_Occupation number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$

Model SettingsResponse

Property Type Required Description and Constraints
settingId integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
autoApprovePgm boolean No
forceFullPlacement boolean No
enableAdvancedLog boolean No
materialCodeByCategory boolean No
defaultArtisticCategoryId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
utcModified string (date-time) No

Model SpotResponse

Assigned spot (commercial/imaging).

Property Type Required Description and Constraints
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderTitle null or string No
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignName null or string No
clientId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
industry null or string No
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName string yes
positionType null or string No
lockState string yes
conflictReason null or string No
playedDate null or string (date-time) No
aired boolean No

Model TemplateBreakTemplateSummaryResponse

Property Type Required Description and Constraints
breakTemplateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
startTime string (time) yes
dayOffset boolean yes
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
breakType integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
breakTypeName null or string No
isActive boolean yes

Model TemplateResponse

Property Type Required Description and Constraints
templateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
stationId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
dayOfWeek integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
startTime string (time) yes
endTime string (time) yes
endDayOffset boolean yes
specificDate null or string (date) No
isActive boolean yes
utcCreated string (date-time) yes
utcModified string (date-time) yes
breakTemplates array of TemplateBreakTemplateSummaryResponse No

Model UnplacedResponse

Spot that could not be assigned.

Property Type Required Description and Constraints
instanceId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
orderTitle null or string No
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
campaignName null or string No
clientId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
clientName null or string No
industry null or string No
materialId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
durationSeconds integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
assetTypeName string yes
positionType null or string No
probableCause string yes

Model UpdateAgencyRequest

Property Type Required Description and Constraints
name string No
type integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
contact null or string No
phone null or string No
email null or string No
commission null or number or string (double) No pattern ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
notes null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$

Model UpdateAlbumRequest

Property Type Required Description and Constraints
albumName string yes
albumYear null or string No
genreId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
catalogCode null or string No
companyId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
comments null or string No
imageFileId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model UpdateBreakTemplateRequest

DTO for updating an existing template.

Property Type Required Description and Constraints
templateId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
startTime string (time) yes
dayOffset boolean yes
totalDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
breakType integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
isActive boolean No
zones array of CreateBreakTemplateZoneRequest No
clips array of CreateBreakTemplateClipRequest No

Model UpdateBreakTypeRequest

Property Type Required Description and Constraints
name string yes

Model UpdateCampaignRequest

Property Type Required Description and Constraints
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
agencyId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
name string No
startDate string (date) No
endDate string (date) No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
notes null or string No

Model UpdateCategoryRequest

Property Type Required Description and Constraints
categoryName string No
description null or string No
prefix null or string No
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model UpdateClientRequest

Property Type Required Description and Constraints
companyName string No
industryIds array of integer or string (int32) No
contact null or string No
phone null or string No
email null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
notes null or string No

Model UpdateCompanyRequest

Property Type Required Description and Constraints
companyName string yes

Model UpdateGenreRequest

Property Type Required Description and Constraints
genreName string yes

Model UpdateIndustryRequest

Property Type Required Description and Constraints
name string No

Model UpdateMaterialRequest

Property Type Required Description and Constraints
title null or string No
code null or string No
comments null or string No
rdsText null or string No
assetTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
mediaTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
albumId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
companyId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
genreId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
priorityId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
materialStateId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
startPos null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
endPos null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
intro null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
outro null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
punchIn null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
punchOut null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
punchInFadeLength null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
punchOutFadeLength null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
punchInFadeTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
punchOutFadeTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
insertOver null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
contractStartDate null or string No
contractEndDate null or string No
contentTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
contentDate null or string No
contentTime null or string No
vStandard null or string No
archiveStateId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
customField0 null or string No
customField1 null or string No
customField2 null or string No
customField3 null or string No
customField4 null or string No
customField5 null or string No
customField6 null or string No
customField7 null or string No
customField8 null or string No
customField9 null or string No
national null or boolean No
independent null or boolean No
skipSadaic null or boolean No
useTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
recordingTypeId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
personType null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
languageId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
bpm null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
tags null or string No
rythmId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model UpdateOrderDaypartRequest

Property Type Required Description and Constraints
stationId integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$
fixedTime boolean No
startTime string (time) No
endTime string (time) No
startDayOffset boolean No
endDayOffset boolean No
weekdays integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
orderRuns integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model UpdateOrderRequest

Property Type Required Description and Constraints
campaignId null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
clientId integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
duration integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
startDate string (date) No
endDate null or string (date) No
priority integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
breakTypeFilter integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
positionType integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
manualPosition null or integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
scope integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
protectionLevel integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
minSeparation integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
maxFrequency integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$
interleaveArtistic boolean No
title null or string No
status integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
dayparts array of OrderDaypartDto No
clips array of ClipRequest No
industryIds array of integer or string (int32) No

Model UpdatePersonRequest

Property Type Required Description and Constraints
personName string yes

Model UpdatePgm5StatusRequest

Property Type Required Description and Constraints
statusId integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
reviewReason null or string No

Model UpdatePgmRequest

Property Type Required Description and Constraints
stationId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
date string yes
programmingTypeId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
active boolean No
blocks array of PgmBlockRequest yes

Model UpdateSettingsRequest

Property Type Required Description and Constraints
autoApprovePgm null or boolean No
forceFullPlacement null or boolean No
enableAdvancedLog null or boolean No
materialCodeByCategory null or boolean No
defaultArtisticCategoryId null or integer or string (int64) No pattern ^-?(?:0|[1-9]\d*)$

Model UpdateTemplateRequest

Property Type Required Description and Constraints
stationId integer or string (int64) yes pattern ^-?(?:0|[1-9]\d*)$
name string yes
dayOfWeek integer or string (uint8) No pattern ^-?(?:0|[1-9]\d*)$
startTime string (time) yes
endTime string (time) yes
endDayOffset boolean yes
specificDate null or string (date) No
isActive boolean No

Model UpdateUserRoleDto

Property Type Required Description and Constraints
roleid integer or string (int32) No pattern ^-?(?:0|[1-9]\d*)$

Model ZoneResponse

Zone within a break.

Property Type Required Description and Constraints
zoneId integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
scopeId integer or string (uint8) yes pattern ^-?(?:0|[1-9]\d*)$
scopeName string yes
position integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
maxDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
usedDuration integer or string (int32) yes pattern ^-?(?:0|[1-9]\d*)$
spots array of SpotResponse yes

7. Flujos recomendados

On-Air Assistance Application

  1. Authenticate and keep the token out of logs.
  2. Use HARDATA ECP to obtain playlists, playlistItemId, materialId, timers, and current/next changes.
  3. Query GET /api/v1/material/{materialId} for metadata and audio markers.
  4. Query artists and authors through the endpoints associated with the media item when needed.
  5. Cache responses by materialId, with reasonable invalidation; do not query on every timer event.
  6. Make transport decisions exclusively from the authoritative HARDATA ECP state.

Traffic Management

  1. Create or query agencies, clients, campaigns, and orders.
  2. Configure dayparts, clips, industries, priorities, and constraints.
  3. Configure templates and break templates by station.
  4. Query algorithm statistics.
  5. Run scheduling and review conflicts, unplaced items, and metrics.

8. Security and Privacy

  • Do not include users, passwords, JWTs, keys, or private URLs in source code, repositories, telemetry, or screenshots.
  • Store secrets in the operating system's secure store or in a secrets manager.
  • Avoid logging bodies that may contain personal data, contacts, emails, or tokens.
  • Apply least privilege and separate read-only accounts from accounts with modification or deletion capabilities.
  • Explicitly confirm destructive operations, especially hard delete, batch delete, and deletion of physical files.
  • Do not expose the WebSocket broadcast endpoint to users without administrative authorization.

9. Implementation Checklist

  • Configurable base URL and HTTPS in production.
  • Login and token kept out of logs.
  • Bearer sent only to the expected host.
  • Timeouts, cancellation, and backoff implemented.
  • 200, 201, 204, 206, 400, 401, 404, 409, 416 and 500 manejados.
  • Pagination applied to media listings.
  • Streaming implementa Range requests.
  • Unknown mutations are not automatically retried.
  • Physical deletions require confirmation.
  • Models tolerate additional and null fields.
  • HARDATA ECP is used as the authority for on-air state.