1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
// SPDX-FileCopyrightText: OpenTalk GmbH <mail@opentalk.eu>
//
// SPDX-License-Identifier: EUPL-1.2
/*!
Types and traits for the OpenTalk API and signaling protocols.
This crate re-exports items from the crates where they are defined.
All of these types can be used directly by importing the crate where they
are defined directly. If many types are needed in a project, this crate
could be the easier starting point though, because it serves as an index of
which crates are available.
# Crate features
In order to allow efficient usage of the referenced items, this crate
defines a flag for each of them. In addition some meta features are
available that pull in a set of dependencies.
## Meta features
### Types meta features
* **types-all** -
Enables all features that depend on specific datatype crates, indirectly by
enabling the **api** and the **signaling-all** features.
* **api** -
Enables the **api-v1** feature.
* **signaling-all** -
Enables all the signaling datatypes feature for all signaling modules.
### Functionality meta features
* **backend** -
Should be enabled when implementing the server side of either a signaling module
or an the API. Enables:
* the **backend** feature of each types crate
* **diesel**
* **kustos**
* **rand**
* **redis**
* **serde**
* **frontend** -
Should be enabled when implemting the client side of either a signaling module
or the API. Enables:
* the **frontend** feature of each types crate
* **serde**
## Type features
* **api-v1** -
Re-exports [`opentalk-types-api-v1`](https://docs.rs/opentalk-types-api-v1) crate as [`api::v1`].
* **signaling** -
Re-exports all content of the [`opentalk-types-signaling`](https://docs.rs/opentalk-types-signaling) crate in the [`signaling`] module.
* **signaling-breakout** -
Re-exports [`opentalk-types-signaling-breakout`](https://docs.rs/opentalk-types-signaling-breakout) crate as [`signaling::breakout`].
* **signaling-chat** -
Re-exports [`opentalk-types-signaling-chat`](https://docs.rs/opentalk-types-signaling-chat) crate as [`signaling::chat`].
* **signaling-control** -
Re-exports [`opentalk-types-signaling-control`](https://docs.rs/opentalk-types-signaling-control) crate as [`signaling::control`].
* **signaling-livekit** -
Re-exports [`opentalk-types-signaling-livekit`](https://docs.rs/opentalk-types-signaling-livekit) crate as [`signaling::livekit`].
* **signaling-meeting-notes** -
Re-exports [`opentalk-types-signaling-meeting-notes`](https://docs.rs/opentalk-types-signaling-meeting-notes) crate as [`signaling::meeting_notes`].
* **signaling-meeting-report** -
Re-exports [`opentalk-types-signaling-meeting-report`](https://docs.rs/opentalk-types-signaling-meeting-report) crate as [`signaling::meeting_report`].
* **signaling-moderation** -
Re-exports [`opentalk-types-signaling-moderation`](https://docs.rs/opentalk-types-signaling-moderation) crate as [`signaling::moderation`].
* **signaling-polls** -
Re-exports [`opentalk-types-signaling-polls`](https://docs.rs/opentalk-types-signaling-polls) crate as [`signaling::polls`].
* **signaling-recording** -
Re-exports [`opentalk-types-signaling-recording`](https://docs.rs/opentalk-types-signaling-recording) crate as [`signaling::recording`].
* **signaling-recording-service** -
Re-exports [`opentalk-types-signaling-recording-service`](https://docs.rs/opentalk-types-signaling-recording-service) crate as [`signaling::recording_service`].
* **signaling-shared-folder** -
Re-exports [`opentalk-types-signaling-shared-folder`](https://docs.rs/opentalk-types-signaling-shared-folder) crate as [`signaling::shared_folder`].
* **signaling-subroom-audio** -
Re-exports [`opentalk-types-signaling-subroom-audio`](https://docs.rs/opentalk-types-signaling-subroom-audio) crate as [`signaling::subroom_audio`].
* **signaling-timer** -
Re-exports [`opentalk-types-signaling-timer`](https://docs.rs/opentalk-types-signaling-timer) crate as [`signaling::timer`].
* **signaling-training-participation-report** -
Re-exports [`opentalk-types-signaling-training-participation-report`](https://docs.rs/opentalk-types-signaling-training-participation-report) crate as [`signaling::training_participation_report`].
* **signaling-whiteboard** -
Re-exports [`opentalk-types-signaling-whiteboard`](https://docs.rs/opentalk-types-signaling-whiteboard) crate as [`signaling::whiteboard`].
## Functionality features
* **clap** -
Should be enabled when implementing command-line tooling that exposes the
types using [`clap`](https://docs.rs/clap). This allows listing the possible
values of enumeration types using the builtin `--help` functionality of `clap`.
* **diesel** -
Enabling this feature makes some newtypes storable in a database through the
[`diesel`](https://docs.rs/diesel) crate. Used for implementing the server
side with a `diesel` database backend.
* **kustos** -
Adds some metadata to types that represent API resources, so that the `kustos`
permission enforcement system can determine which permissions it needs to
apply to certain endpoints when implementing the server side of the API.
* **rand** -
Adds random generation of some datatypes such as `uuid`, so that they can
be generated on the server side in the API endpoint implementation or inside
signaling modules.
* **redis** -
Adds annotations to some signaling data types so that they can be stored
inside redis by the server side of a signaling module.
* **serde** -
Adds [`serde`](https://docs.rs/serde/) `Serialize` and `Deserialize`
implementations for each datatype that is sent over the network.
* **utoipa** -
Adds [`utoipa`](https://docs.rs/utoipa/) `ToSchema` and `IntoParams`
implementations to all types that are exposed in the OpenTalk Web API, so that
they can be used to generate an OpenAPI specification of the Web API.
*/
pub use opentalk_types_common as common;