/
/
/
1"""Pydantic models for MSX JSON API."""
2
3from __future__ import annotations
4
5from enum import StrEnum
6
7from pydantic import BaseModel, Field
8
9
10class MsxTemplateType(StrEnum):
11 """MSX Template types."""
12
13 SEPARATE = "separate"
14 LIST = "list"
15
16
17class MsxTemplate(BaseModel):
18 """MSX Template model."""
19
20 type: MsxTemplateType | str = MsxTemplateType.SEPARATE
21 layout: str | None = None
22 icon: str | None = None
23 action: str | None = None
24 image_filler: str | None = Field(default=None, serialization_alias="imageFiller")
25 image_width: float | None = Field(default=None, serialization_alias="imageWidth")
26 color: str | None = None
27
28
29class MsxItem(BaseModel):
30 """MSX Content Item model."""
31
32 title: str | None = None
33 title_header: str | None = Field(default=None, serialization_alias="titleHeader")
34 label: str | None = None
35 image: str | None = None
36 icon: str | None = None
37 action: str | None = None
38 background: str | None = None
39 player_label: str | None = Field(default=None, serialization_alias="playerLabel")
40 title_footer: str | None = Field(default=None, serialization_alias="titleFooter")
41 duration: int | None = None
42 next_action: str | None = Field(default=None, serialization_alias="nextAction")
43 prev_action: str | None = Field(default=None, serialization_alias="prevAction")
44 content: str | None = None
45 url: str | None = None
46 type: str | None = None
47
48
49class MsxContent(BaseModel):
50 """MSX Content Page model."""
51
52 type: str = "list"
53 headline: str | None = None
54 area: str | None = None
55 template: MsxTemplate | None = None
56 items: list[MsxItem] | None = None
57 action: str | None = None
58 hint: str | None = None
59