@teardown/schemas 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
+ import { Type } from "@sinclair/typebox";
1
2
  import { OrgRoleTypeEnum, OrgTypeEnum } from "@teardown/types";
2
- import { t } from "elysia";
3
3
  import { SlugSchema, } from "../../common";
4
- export const OrgHeadersSchema = t.Object({
5
- "td-org-id": t.String(),
4
+ export const OrgHeadersSchema = Type.Object({
5
+ "td-org-id": Type.String(),
6
6
  });
7
7
  /**
8
8
  * Helper to check if role is admin or owner
@@ -58,79 +58,79 @@ export function parseOrgTypeEnum(value) {
58
58
  throw new Error(`Invalid OrgTypeEnum value: ${value}. Expected one of: ${Object.values(OrgTypeEnum).join(", ")}`);
59
59
  }
60
60
  }
61
- export const OrgSlugOrIdParamsSchema = t.Object({
62
- org_id_or_slug: t.String(),
61
+ export const OrgSlugOrIdParamsSchema = Type.Object({
62
+ org_id_or_slug: Type.String(),
63
63
  });
64
- export const OrgIdParamsSchema = t.Object({
65
- org_id: t.String(),
64
+ export const OrgIdParamsSchema = Type.Object({
65
+ org_id: Type.String(),
66
66
  });
67
- export const OrgSlugParamsSchema = t.Object({
67
+ export const OrgSlugParamsSchema = Type.Object({
68
68
  // org_slug: SlugSchema,
69
69
  });
70
70
  /**
71
71
  * Base org schema
72
72
  * Represents organisation table structure
73
73
  */
74
- export const OrgSchema = t.Object({
75
- id: t.String({ format: "uuid" }),
76
- name: t.String({ minLength: 1 }),
74
+ export const OrgSchema = Type.Object({
75
+ id: Type.String({ format: "uuid" }),
76
+ name: Type.String({ minLength: 1 }),
77
77
  slug: SlugSchema,
78
- type: t.Enum(OrgTypeEnum),
79
- created_at: t.String(),
80
- updated_at: t.String(),
78
+ type: Type.Enum(OrgTypeEnum),
79
+ created_at: Type.String(),
80
+ updated_at: Type.String(),
81
81
  });
82
82
  /**
83
83
  * Org role schema
84
84
  * Represents organisation_role table structure
85
85
  */
86
- export const OrgRoleSchema = t.Object({
87
- id: t.String({ format: "uuid" }),
88
- org_id: t.String({ format: "uuid" }),
89
- user_id: t.String({ format: "uuid" }),
90
- role: t.Enum(OrgRoleTypeEnum),
91
- created_at: t.String(),
92
- updated_at: t.String(),
86
+ export const OrgRoleSchema = Type.Object({
87
+ id: Type.String({ format: "uuid" }),
88
+ org_id: Type.String({ format: "uuid" }),
89
+ user_id: Type.String({ format: "uuid" }),
90
+ role: Type.Enum(OrgRoleTypeEnum),
91
+ created_at: Type.String(),
92
+ updated_at: Type.String(),
93
93
  });
94
94
  /**
95
95
  * Extended org role with org name
96
96
  * Used for user's org list
97
97
  */
98
- export const OrgRoleWithOrgSchema = t.Composite([
98
+ export const OrgRoleWithOrgSchema = Type.Composite([
99
99
  OrgRoleSchema,
100
- t.Object({
101
- org_id: t.String({ format: "uuid" }),
102
- org_name: t.String(),
100
+ Type.Object({
101
+ org_id: Type.String({ format: "uuid" }),
102
+ org_name: Type.String(),
103
103
  org_slug: SlugSchema,
104
104
  }),
105
105
  ]);
106
106
  /**
107
107
  * Create org request schema
108
108
  */
109
- export const CreateOrgSchema = t.Object({
110
- name: t.String({ minLength: 1, maxLength: 255 }),
109
+ export const CreateOrgSchema = Type.Object({
110
+ name: Type.String({ minLength: 1, maxLength: 255 }),
111
111
  slug: SlugSchema,
112
- type: t.Enum(OrgTypeEnum),
112
+ type: Type.Enum(OrgTypeEnum),
113
113
  });
114
114
  /**
115
115
  * Update org request schema
116
116
  */
117
- export const UpdateOrgSchema = t.Object({
118
- name: t.Optional(t.String({ minLength: 1, maxLength: 255 })),
117
+ export const UpdateOrgSchema = Type.Object({
118
+ name: Type.Optional(Type.String({ minLength: 1, maxLength: 255 })),
119
119
  });
120
120
  /**
121
121
  * Add org role request schema
122
122
  */
123
- export const AddOrgRoleSchema = t.Object({
124
- org_id: t.String({ format: "uuid" }),
125
- user_id: t.String({ format: "uuid" }),
126
- role: t.Enum(OrgRoleTypeEnum),
123
+ export const AddOrgRoleSchema = Type.Object({
124
+ org_id: Type.String({ format: "uuid" }),
125
+ user_id: Type.String({ format: "uuid" }),
126
+ role: Type.Enum(OrgRoleTypeEnum),
127
127
  });
128
128
  /**
129
129
  * Single org response schema
130
130
  */
131
- export const OrgResponseSchema = t.Object({
132
- success: t.Literal(true),
133
- data: t.Object({
131
+ export const OrgResponseSchema = Type.Object({
132
+ success: Type.Literal(true),
133
+ data: Type.Object({
134
134
  org: OrgRoleWithOrgSchema,
135
135
  }),
136
136
  });
@@ -138,77 +138,77 @@ export const OrgResponseSchema = t.Object({
138
138
  * Org error response schema
139
139
  * Discriminated union by error code
140
140
  */
141
- export const OrgErrorSchema = t.Union([
142
- t.Object({
143
- code: t.Literal("UNKNOWN_ERROR"),
144
- message: t.String(),
141
+ export const OrgErrorSchema = Type.Union([
142
+ Type.Object({
143
+ code: Type.Literal("UNKNOWN_ERROR"),
144
+ message: Type.String(),
145
145
  }),
146
- t.Object({
147
- code: t.Literal("VALIDATION_ERROR"),
148
- message: t.String(),
146
+ Type.Object({
147
+ code: Type.Literal("VALIDATION_ERROR"),
148
+ message: Type.String(),
149
149
  }),
150
- t.Object({
151
- code: t.Literal("ORG_ID_MISMATCH"),
152
- message: t.String(),
150
+ Type.Object({
151
+ code: Type.Literal("ORG_ID_MISMATCH"),
152
+ message: Type.String(),
153
153
  }),
154
- t.Object({
155
- code: t.Literal("ORG_NOT_FOUND"),
156
- message: t.String(),
154
+ Type.Object({
155
+ code: Type.Literal("ORG_NOT_FOUND"),
156
+ message: Type.String(),
157
157
  }),
158
- t.Object({
159
- code: t.Literal("ORG_ROLE_NOT_FOUND"),
160
- message: t.String(),
158
+ Type.Object({
159
+ code: Type.Literal("ORG_ROLE_NOT_FOUND"),
160
+ message: Type.String(),
161
161
  }),
162
- t.Object({
163
- code: t.Literal("USER_NOT_IN_ORG"),
164
- message: t.String(),
162
+ Type.Object({
163
+ code: Type.Literal("USER_NOT_IN_ORG"),
164
+ message: Type.String(),
165
165
  }),
166
- t.Object({
167
- code: t.Literal("FORBIDDEN"),
168
- message: t.String(),
166
+ Type.Object({
167
+ code: Type.Literal("FORBIDDEN"),
168
+ message: Type.String(),
169
169
  }),
170
- t.Object({
171
- code: t.Literal("UNAUTHORIZED"),
172
- message: t.String(),
170
+ Type.Object({
171
+ code: Type.Literal("UNAUTHORIZED"),
172
+ message: Type.String(),
173
173
  }),
174
- t.Object({
175
- code: t.Literal("INVALID_ROLE"),
176
- message: t.String(),
174
+ Type.Object({
175
+ code: Type.Literal("INVALID_ROLE"),
176
+ message: Type.String(),
177
177
  }),
178
- t.Object({
179
- code: t.Literal("ORG_ID_REQUIRED"),
180
- message: t.String(),
178
+ Type.Object({
179
+ code: Type.Literal("ORG_ID_REQUIRED"),
180
+ message: Type.String(),
181
181
  }),
182
- t.Object({
183
- code: t.Literal("SLUG_ALREADY_EXISTS"),
184
- message: t.String(),
182
+ Type.Object({
183
+ code: Type.Literal("SLUG_ALREADY_EXISTS"),
184
+ message: Type.String(),
185
185
  }),
186
- t.Object({
187
- code: t.Literal("FETCH_FAILED"),
188
- message: t.String(),
186
+ Type.Object({
187
+ code: Type.Literal("FETCH_FAILED"),
188
+ message: Type.String(),
189
189
  }),
190
- t.Object({
191
- code: t.Literal("CREATE_FAILED"),
192
- message: t.String(),
190
+ Type.Object({
191
+ code: Type.Literal("CREATE_FAILED"),
192
+ message: Type.String(),
193
193
  }),
194
- t.Object({
195
- code: t.Literal("UPDATE_FAILED"),
196
- message: t.String(),
194
+ Type.Object({
195
+ code: Type.Literal("UPDATE_FAILED"),
196
+ message: Type.String(),
197
197
  }),
198
- t.Object({
199
- code: t.Literal("DELETE_FAILED"),
200
- message: t.String(),
198
+ Type.Object({
199
+ code: Type.Literal("DELETE_FAILED"),
200
+ message: Type.String(),
201
201
  }),
202
- t.Object({
203
- code: t.Literal("ROLE_CREATION_FAILED"),
204
- message: t.String(),
202
+ Type.Object({
203
+ code: Type.Literal("ROLE_CREATION_FAILED"),
204
+ message: Type.String(),
205
205
  }),
206
206
  ]);
207
207
  /**
208
208
  * Org error response wrapper
209
209
  */
210
- export const OrgErrorResponseSchema = t.Object({
211
- success: t.Literal(false),
210
+ export const OrgErrorResponseSchema = Type.Object({
211
+ success: Type.Literal(false),
212
212
  error: OrgErrorSchema,
213
213
  });
214
- export const OrgRequestResponseSchema = t.Union([OrgResponseSchema, OrgErrorResponseSchema]);
214
+ export const OrgRequestResponseSchema = Type.Union([OrgResponseSchema, OrgErrorResponseSchema]);
@@ -1,4 +1,4 @@
1
- import { type Static } from "elysia";
1
+ import { type Static } from "@sinclair/typebox";
2
2
  import type { AssertSchemaCompatibleWithRow, AssertTrue } from "../../common";
3
3
  /**
4
4
  * Base persona schema
@@ -1,100 +1,100 @@
1
- import { t } from "elysia";
1
+ import { Type } from "@sinclair/typebox";
2
2
  /**
3
3
  * Base persona schema
4
4
  * Represents personas table structure
5
5
  */
6
- export const PersonaSchema = t.Object({
7
- id: t.String({ format: "uuid" }),
8
- environment_id: t.String({ format: "uuid" }),
9
- user_id: t.Union([t.String(), t.Null()]),
10
- name: t.Union([t.String(), t.Null()]),
11
- email: t.Union([t.String({ format: "email" }), t.Null()]),
12
- created_at: t.String(),
13
- updated_at: t.String(),
6
+ export const PersonaSchema = Type.Object({
7
+ id: Type.String({ format: "uuid" }),
8
+ environment_id: Type.String({ format: "uuid" }),
9
+ user_id: Type.Union([Type.String(), Type.Null()]),
10
+ name: Type.Union([Type.String(), Type.Null()]),
11
+ email: Type.Union([Type.String({ format: "email" }), Type.Null()]),
12
+ created_at: Type.String(),
13
+ updated_at: Type.String(),
14
14
  });
15
15
  /**
16
16
  * Persona params schema
17
17
  */
18
- export const PersonaParamsSchema = t.Object({
19
- persona_id: t.String({ format: "uuid" }),
18
+ export const PersonaParamsSchema = Type.Object({
19
+ persona_id: Type.String({ format: "uuid" }),
20
20
  });
21
21
  /**
22
22
  * Search personas query schema
23
23
  * Supports pagination, search, and sorting
24
24
  */
25
- export const SearchPersonasQuerySchema = t.Object({
26
- project_id: t.String({ format: "uuid" }),
27
- page: t.Numeric({ minimum: 1, default: 1 }),
28
- limit: t.Numeric({ minimum: 1, maximum: 100, default: 20 }),
29
- search: t.Optional(t.String()),
30
- sort_by: t.Union([t.Literal("created_at"), t.Literal("updated_at"), t.Literal("name"), t.Literal("email")], {
25
+ export const SearchPersonasQuerySchema = Type.Object({
26
+ project_id: Type.String({ format: "uuid" }),
27
+ page: Type.Number({ minimum: 1, default: 1 }),
28
+ limit: Type.Number({ minimum: 1, maximum: 100, default: 20 }),
29
+ search: Type.Optional(Type.String()),
30
+ sort_by: Type.Union([Type.Literal("created_at"), Type.Literal("updated_at"), Type.Literal("name"), Type.Literal("email")], {
31
31
  default: "created_at",
32
32
  }),
33
- sort_order: t.Union([t.Literal("asc"), t.Literal("desc")], { default: "desc" }),
33
+ sort_order: Type.Union([Type.Literal("asc"), Type.Literal("desc")], { default: "desc" }),
34
34
  });
35
35
  /**
36
36
  * Search personas query schema without project_id (injected from headers)
37
37
  */
38
- export const SearchPersonasQueryParamsSchema = t.Omit(SearchPersonasQuerySchema, ["project_id"]);
38
+ export const SearchPersonasQueryParamsSchema = Type.Omit(SearchPersonasQuerySchema, ["project_id"]);
39
39
  /**
40
40
  * Personas by IDs request schema
41
41
  */
42
- export const PersonasByIdsSchema = t.Object({
43
- persona_ids: t.Array(t.String({ format: "uuid" }), { minItems: 1, maxItems: 100 }),
42
+ export const PersonasByIdsSchema = Type.Object({
43
+ persona_ids: Type.Array(Type.String({ format: "uuid" }), { minItems: 1, maxItems: 100 }),
44
44
  });
45
45
  /**
46
46
  * Paginated personas response schema
47
47
  */
48
- export const PersonasResponseSchema = t.Object({
49
- personas: t.Array(PersonaSchema),
50
- pagination: t.Object({
51
- page: t.Integer({ minimum: 1 }),
52
- limit: t.Integer({ minimum: 1 }),
53
- total: t.Integer({ minimum: 0 }),
54
- total_pages: t.Integer({ minimum: 0 }),
48
+ export const PersonasResponseSchema = Type.Object({
49
+ personas: Type.Array(PersonaSchema),
50
+ pagination: Type.Object({
51
+ page: Type.Integer({ minimum: 1 }),
52
+ limit: Type.Integer({ minimum: 1 }),
53
+ total: Type.Integer({ minimum: 0 }),
54
+ total_pages: Type.Integer({ minimum: 0 }),
55
55
  }),
56
56
  });
57
57
  /**
58
58
  * Single persona response schema
59
59
  */
60
- export const PersonaResponseSchema = t.Object({
61
- success: t.Literal(true),
60
+ export const PersonaResponseSchema = Type.Object({
61
+ success: Type.Literal(true),
62
62
  data: PersonaSchema,
63
63
  });
64
64
  /**
65
65
  * Persona error response schema
66
66
  * Discriminated union by error code
67
67
  */
68
- export const PersonaErrorSchema = t.Union([
69
- t.Object({
70
- code: t.Literal("PERSONA_NOT_FOUND"),
71
- message: t.String(),
68
+ export const PersonaErrorSchema = Type.Union([
69
+ Type.Object({
70
+ code: Type.Literal("PERSONA_NOT_FOUND"),
71
+ message: Type.String(),
72
72
  }),
73
- t.Object({
74
- code: t.Literal("PROJECT_NOT_FOUND"),
75
- message: t.String(),
73
+ Type.Object({
74
+ code: Type.Literal("PROJECT_NOT_FOUND"),
75
+ message: Type.String(),
76
76
  }),
77
- t.Object({
78
- code: t.Literal("FORBIDDEN"),
79
- message: t.String(),
77
+ Type.Object({
78
+ code: Type.Literal("FORBIDDEN"),
79
+ message: Type.String(),
80
80
  }),
81
- t.Object({
82
- code: t.Literal("FETCH_FAILED"),
83
- message: t.String(),
81
+ Type.Object({
82
+ code: Type.Literal("FETCH_FAILED"),
83
+ message: Type.String(),
84
84
  }),
85
- t.Object({
86
- code: t.Literal("INVALID_PARAMS"),
87
- message: t.String(),
85
+ Type.Object({
86
+ code: Type.Literal("INVALID_PARAMS"),
87
+ message: Type.String(),
88
88
  }),
89
89
  ]);
90
90
  /**
91
91
  * Persona error response wrapper
92
92
  */
93
- export const PersonaErrorResponseSchema = t.Object({
94
- success: t.Literal(false),
93
+ export const PersonaErrorResponseSchema = Type.Object({
94
+ success: Type.Literal(false),
95
95
  error: PersonaErrorSchema,
96
96
  });
97
97
  /**
98
98
  * Persona request response schema
99
99
  */
100
- export const PersonaRequestResponseSchema = t.Union([PersonaResponseSchema, PersonaErrorResponseSchema]);
100
+ export const PersonaRequestResponseSchema = Type.Union([PersonaResponseSchema, PersonaErrorResponseSchema]);
@@ -1,5 +1,5 @@
1
+ import { type Static } from "@sinclair/typebox";
1
2
  import { ProjectStatusEnum, ProjectTypeEnum } from "@teardown/types";
2
- import { type Static } from "elysia";
3
3
  import { type AssertSchemaCompatibleWithInsert, type AssertSchemaCompatibleWithRow, type AssertSchemaCompatibleWithUpdate, type AssertTrue } from "../../common";
4
4
  /**
5
5
  * Parse and validate a ProjectTypeEnum value
@@ -1,5 +1,5 @@
1
+ import { Type } from "@sinclair/typebox";
1
2
  import { ProjectStatusEnum, ProjectTypeEnum } from "@teardown/types";
2
- import { t } from "elysia";
3
3
  import { SlugSchema, } from "../../common";
4
4
  /**
5
5
  * Parse and validate a ProjectTypeEnum value
@@ -43,103 +43,103 @@ export function parseProjectStatusEnum(value) {
43
43
  * Base project schema
44
44
  * Represents projects table structure
45
45
  */
46
- export const ProjectSchema = t.Object({
47
- id: t.String({ format: "uuid" }),
48
- org_id: t.String({ format: "uuid" }),
49
- name: t.String({ minLength: 1 }),
46
+ export const ProjectSchema = Type.Object({
47
+ id: Type.String({ format: "uuid" }),
48
+ org_id: Type.String({ format: "uuid" }),
49
+ name: Type.String({ minLength: 1 }),
50
50
  slug: SlugSchema,
51
- type: t.Enum(ProjectTypeEnum),
52
- status: t.Enum(ProjectStatusEnum),
53
- created_at: t.String(),
54
- updated_at: t.String(),
51
+ type: Type.Enum(ProjectTypeEnum),
52
+ status: Type.Enum(ProjectStatusEnum),
53
+ created_at: Type.String(),
54
+ updated_at: Type.String(),
55
55
  });
56
- export const ProjectParamsSchema = t.Object({
57
- project_id_or_slug: t.String(),
56
+ export const ProjectParamsSchema = Type.Object({
57
+ project_id_or_slug: Type.String(),
58
58
  });
59
59
  /**
60
60
  * Create project request schema
61
61
  */
62
- export const CreateProjectSchema = t.Object({
63
- name: t.String({ minLength: 1, maxLength: 255 }),
62
+ export const CreateProjectSchema = Type.Object({
63
+ name: Type.String({ minLength: 1, maxLength: 255 }),
64
64
  slug: SlugSchema,
65
- type: t.Enum(ProjectTypeEnum),
66
- org_id: t.String(),
65
+ type: Type.Enum(ProjectTypeEnum),
66
+ org_id: Type.String(),
67
67
  });
68
68
  /**
69
69
  * Update project request schema
70
70
  */
71
- export const UpdateProjectSchema = t.Object({
72
- name: t.Optional(t.String({ minLength: 1, maxLength: 255 })),
73
- slug: t.Optional(SlugSchema),
71
+ export const UpdateProjectSchema = Type.Object({
72
+ name: Type.Optional(Type.String({ minLength: 1, maxLength: 255 })),
73
+ slug: Type.Optional(SlugSchema),
74
74
  });
75
75
  /**
76
76
  * Single project response schema
77
77
  */
78
- export const ProjectResponseSchema = t.Object({
79
- success: t.Literal(true),
78
+ export const ProjectResponseSchema = Type.Object({
79
+ success: Type.Literal(true),
80
80
  data: ProjectSchema,
81
81
  });
82
82
  /**
83
83
  * Multiple projects response schema
84
84
  */
85
- export const ProjectsResponseSchema = t.Object({
86
- projects: t.Array(ProjectSchema),
85
+ export const ProjectsResponseSchema = Type.Object({
86
+ projects: Type.Array(ProjectSchema),
87
87
  });
88
88
  /**
89
89
  * Project error response schema
90
90
  * Discriminated union by error code
91
91
  */
92
- export const ProjectErrorSchema = t.Union([
93
- t.Object({
94
- code: t.Literal("PROJECT_NOT_FOUND"),
95
- message: t.String(),
92
+ export const ProjectErrorSchema = Type.Union([
93
+ Type.Object({
94
+ code: Type.Literal("PROJECT_NOT_FOUND"),
95
+ message: Type.String(),
96
96
  }),
97
- t.Object({
98
- code: t.Literal("PROJECT_NOT_IN_ORG"),
99
- message: t.String(),
97
+ Type.Object({
98
+ code: Type.Literal("PROJECT_NOT_IN_ORG"),
99
+ message: Type.String(),
100
100
  }),
101
- t.Object({
102
- code: t.Literal("INVALID_SLUG"),
103
- message: t.String(),
101
+ Type.Object({
102
+ code: Type.Literal("INVALID_SLUG"),
103
+ message: Type.String(),
104
104
  }),
105
- t.Object({
106
- code: t.Literal("SLUG_ALREADY_EXISTS"),
107
- message: t.String(),
105
+ Type.Object({
106
+ code: Type.Literal("SLUG_ALREADY_EXISTS"),
107
+ message: Type.String(),
108
108
  }),
109
- t.Object({
110
- code: t.Literal("FORBIDDEN"),
111
- message: t.String(),
109
+ Type.Object({
110
+ code: Type.Literal("FORBIDDEN"),
111
+ message: Type.String(),
112
112
  }),
113
- t.Object({
114
- code: t.Literal("CREATE_FAILED"),
115
- message: t.String(),
113
+ Type.Object({
114
+ code: Type.Literal("CREATE_FAILED"),
115
+ message: Type.String(),
116
116
  }),
117
- t.Object({
118
- code: t.Literal("UPDATE_FAILED"),
119
- message: t.String(),
117
+ Type.Object({
118
+ code: Type.Literal("UPDATE_FAILED"),
119
+ message: Type.String(),
120
120
  }),
121
- t.Object({
122
- code: t.Literal("DELETE_FAILED"),
123
- message: t.String(),
121
+ Type.Object({
122
+ code: Type.Literal("DELETE_FAILED"),
123
+ message: Type.String(),
124
124
  }),
125
- t.Object({
126
- code: t.Literal("FETCH_FAILED"),
127
- message: t.String(),
125
+ Type.Object({
126
+ code: Type.Literal("FETCH_FAILED"),
127
+ message: Type.String(),
128
128
  }),
129
- t.Object({
130
- code: t.Literal("ARCHIVE_FAILED"),
131
- message: t.String(),
129
+ Type.Object({
130
+ code: Type.Literal("ARCHIVE_FAILED"),
131
+ message: Type.String(),
132
132
  }),
133
- t.Object({
134
- code: t.Literal("INVALID_REQUEST"),
135
- message: t.String(),
133
+ Type.Object({
134
+ code: Type.Literal("INVALID_REQUEST"),
135
+ message: Type.String(),
136
136
  }),
137
137
  ]);
138
138
  /**
139
139
  * Project error response wrapper
140
140
  */
141
- export const ProjectErrorResponseSchema = t.Object({
142
- success: t.Literal(false),
141
+ export const ProjectErrorResponseSchema = Type.Object({
142
+ success: Type.Literal(false),
143
143
  error: ProjectErrorSchema,
144
144
  });
145
- export const ProjectRequestResponseSchema = t.Union([ProjectResponseSchema, ProjectErrorResponseSchema]);
145
+ export const ProjectRequestResponseSchema = Type.Union([ProjectResponseSchema, ProjectErrorResponseSchema]);