> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# PromotionalLowDemandTimeRule

> Regra fixa de promoção para horários de menor demanda

O `PromotionalLowDemandTimeRule` representa a regra de validação para uma promoção do tipo `LOW_DEMAND_TIME`. Ela define janela de dia/horário, rota opcional e limite de ocupação para aplicar o desconto.

## Campos

| Campo                            | Tipo                                  | Descrição                                              |
| -------------------------------- | ------------------------------------- | ------------------------------------------------------ |
| `promotionalLowDemandTimeRuleId` | `UUID`                                | Identificador único                                    |
| `promotionalId`                  | `UUID`                                | Promoção dona da regra                                 |
| `organizationId`                 | `UUID`                                | Organização da Company responsável pela promoção       |
| `companyId`                      | `UUID`                                | Company dona da promoção                               |
| `routeId`                        | `UUID?`                               | Rota exigida, quando a regra é restrita a uma rota     |
| `weekdays`                       | `Int[]`                               | Dias da semana aceitos, de `0` a `6`                   |
| `startTime`                      | `String`                              | Horário inicial aceito no formato `HH:mm`              |
| `endTime`                        | `String`                              | Horário final aceito no formato `HH:mm`                |
| `maxOccupancyRateBps`            | `Int?`                                | Ocupação máxima permitida em basis points              |
| `applyTo`                        | `PromotionalLowDemandTimeApplyTarget` | Nível em que o desconto é aplicado                     |
| `createdBy`                      | `UUID?`                               | Usuário que criou o registro, quando aplicável         |
| `createdAt`                      | `DateTime`                            | Data de criação                                        |
| `updatedBy`                      | `UUID?`                               | Usuário que fez a última atualização, quando aplicável |
| `updatedAt`                      | `DateTime`                            | Data da última atualização                             |
| `deletedBy`                      | `UUID?`                               | Usuário que removeu o registro, quando aplicável       |
| `deletedAt`                      | `DateTime?`                           | Data de remoção lógica                                 |

## Relacionamentos

* Relaciona-se com [Promotional](/data-modelling/promotion/promotional) por `promotionalId`.
* Relaciona-se com [Company](/data-modelling/tenant/company) por `companyId`.
* Relaciona-se com [Route](/data-modelling/operations/route) por `routeId`, quando preenchido.

## Regras de Negócio

* Deve existir apenas para Promotional com `type = LOW_DEMAND_TIME`.
* Cada Promotional `LOW_DEMAND_TIME` deve ter exatamente uma PromotionalLowDemandTimeRule ativa.
* Quando `routeId` estiver preenchido, a Trip do ticket deve pertencer à Route informada.
* `weekdays` valida o dia da semana da partida da Trip.
* `startTime` e `endTime` validam o horário de partida da Trip.
* `maxOccupancyRateBps`, quando preenchido, valida a ocupação da Trip antes da aplicação do desconto.
* `applyTo = TICKET` aplica o desconto somente nos tickets elegíveis.
* `applyTo = ORDER` aplica o desconto no Order quando todos os critérios forem atendidos.
* O front pode usar a janela de horário e rota para exibir a promoção em buscas elegíveis.
* `createdBy`, `updatedBy` e `deletedBy` seguem o padrão de auditoria do DEVMOB e registram o usuário responsável pela mutação, quando aplicável.

## Enums

### PromotionalLowDemandTimeApplyTarget

| Valor    | Descrição                               |
| -------- | --------------------------------------- |
| `ORDER`  | Aplica o desconto no pedido             |
| `TICKET` | Aplica o desconto nos tickets elegíveis |

## Example

```json theme={null}
{
  "promotionalLowDemandTimeRuleId": "0197f7c5-1fae-7212-b9c9-a86f07afe78c",
  "promotionalId": "0197f7c0-55de-7b18-9073-c7d7c8c9a441",
  "organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "routeId": "0197a80c-4204-7b77-9005-48cc23677587",
  "weekdays": [1, 2, 3, 4],
  "startTime": "10:00",
  "endTime": "15:00",
  "maxOccupancyRateBps": 6000,
  "applyTo": "TICKET",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T15:08:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-04T15:08:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}
```
