@ominity/api-typescript 1.1.5 → 1.2.0

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.
Files changed (242) hide show
  1. package/README.md +1 -0
  2. package/dist/commonjs/funcs/cms/contentCreate.d.ts +11 -0
  3. package/dist/commonjs/funcs/cms/contentCreate.d.ts.map +1 -0
  4. package/dist/commonjs/funcs/cms/contentCreate.js +110 -0
  5. package/dist/commonjs/funcs/cms/contentCreate.js.map +1 -0
  6. package/dist/commonjs/funcs/cms/contentDelete.d.ts +10 -0
  7. package/dist/commonjs/funcs/cms/contentDelete.d.ts.map +1 -0
  8. package/dist/commonjs/funcs/cms/contentDelete.js +110 -0
  9. package/dist/commonjs/funcs/cms/contentDelete.js.map +1 -0
  10. package/dist/commonjs/funcs/cms/contentGet.d.ts +11 -0
  11. package/dist/commonjs/funcs/cms/contentGet.d.ts.map +1 -0
  12. package/dist/commonjs/funcs/cms/contentGet.js +110 -0
  13. package/dist/commonjs/funcs/cms/contentGet.js.map +1 -0
  14. package/dist/commonjs/funcs/cms/contentList.d.ts +11 -0
  15. package/dist/commonjs/funcs/cms/contentList.d.ts.map +1 -0
  16. package/dist/commonjs/funcs/cms/contentList.js +117 -0
  17. package/dist/commonjs/funcs/cms/contentList.js.map +1 -0
  18. package/dist/commonjs/funcs/cms/contentTypesGet.d.ts +10 -0
  19. package/dist/commonjs/funcs/cms/contentTypesGet.d.ts.map +1 -0
  20. package/dist/commonjs/funcs/cms/contentTypesGet.js +114 -0
  21. package/dist/commonjs/funcs/cms/contentTypesGet.js.map +1 -0
  22. package/dist/commonjs/funcs/cms/contentTypesList.d.ts +10 -0
  23. package/dist/commonjs/funcs/cms/contentTypesList.d.ts.map +1 -0
  24. package/dist/commonjs/funcs/cms/contentTypesList.js +121 -0
  25. package/dist/commonjs/funcs/cms/contentTypesList.js.map +1 -0
  26. package/dist/commonjs/funcs/cms/contentUpdate.d.ts +11 -0
  27. package/dist/commonjs/funcs/cms/contentUpdate.d.ts.map +1 -0
  28. package/dist/commonjs/funcs/cms/contentUpdate.js +111 -0
  29. package/dist/commonjs/funcs/cms/contentUpdate.js.map +1 -0
  30. package/dist/commonjs/funcs/cms/index.d.ts +7 -0
  31. package/dist/commonjs/funcs/cms/index.d.ts.map +1 -1
  32. package/dist/commonjs/funcs/cms/index.js +7 -0
  33. package/dist/commonjs/funcs/cms/index.js.map +1 -1
  34. package/dist/commonjs/funcs/index.d.ts +1 -0
  35. package/dist/commonjs/funcs/index.d.ts.map +1 -1
  36. package/dist/commonjs/funcs/index.js +1 -0
  37. package/dist/commonjs/funcs/index.js.map +1 -1
  38. package/dist/commonjs/index.d.ts +1 -0
  39. package/dist/commonjs/index.d.ts.map +1 -1
  40. package/dist/commonjs/index.js +1 -0
  41. package/dist/commonjs/index.js.map +1 -1
  42. package/dist/commonjs/lib/config.d.ts +3 -3
  43. package/dist/commonjs/lib/config.js +1 -1
  44. package/dist/commonjs/models/cms/content-entry.d.ts +14 -0
  45. package/dist/commonjs/models/cms/content-entry.d.ts.map +1 -0
  46. package/dist/commonjs/models/cms/content-entry.js +57 -0
  47. package/dist/commonjs/models/cms/content-entry.js.map +1 -0
  48. package/dist/commonjs/models/cms/content-type-field.d.ts +27 -0
  49. package/dist/commonjs/models/cms/content-type-field.d.ts.map +1 -0
  50. package/dist/commonjs/models/cms/content-type-field.js +65 -0
  51. package/dist/commonjs/models/cms/content-type-field.js.map +1 -0
  52. package/dist/commonjs/models/cms/content-type.d.ts +32 -0
  53. package/dist/commonjs/models/cms/content-type.d.ts.map +1 -0
  54. package/dist/commonjs/models/cms/content-type.js +78 -0
  55. package/dist/commonjs/models/cms/content-type.js.map +1 -0
  56. package/dist/commonjs/models/cms/index.d.ts +3 -0
  57. package/dist/commonjs/models/cms/index.d.ts.map +1 -1
  58. package/dist/commonjs/models/cms/index.js +3 -0
  59. package/dist/commonjs/models/cms/index.js.map +1 -1
  60. package/dist/commonjs/models/commerce/route.d.ts +2 -2
  61. package/dist/commonjs/models/commerce/route.d.ts.map +1 -1
  62. package/dist/commonjs/models/commerce/route.js +2 -2
  63. package/dist/commonjs/models/commerce/route.js.map +1 -1
  64. package/dist/commonjs/models/index.d.ts +1 -0
  65. package/dist/commonjs/models/index.d.ts.map +1 -1
  66. package/dist/commonjs/models/index.js +1 -0
  67. package/dist/commonjs/models/index.js.map +1 -1
  68. package/dist/commonjs/models/operations/cms-content-types.d.ts +29 -0
  69. package/dist/commonjs/models/operations/cms-content-types.d.ts.map +1 -0
  70. package/dist/commonjs/models/operations/cms-content-types.js +71 -0
  71. package/dist/commonjs/models/operations/cms-content-types.js.map +1 -0
  72. package/dist/commonjs/models/operations/cms-content.d.ts +55 -0
  73. package/dist/commonjs/models/operations/cms-content.d.ts.map +1 -0
  74. package/dist/commonjs/models/operations/cms-content.js +92 -0
  75. package/dist/commonjs/models/operations/cms-content.js.map +1 -0
  76. package/dist/commonjs/models/operations/index.d.ts +2 -0
  77. package/dist/commonjs/models/operations/index.d.ts.map +1 -1
  78. package/dist/commonjs/models/operations/index.js +2 -0
  79. package/dist/commonjs/models/operations/index.js.map +1 -1
  80. package/dist/commonjs/sdk/cms/content-types.d.ts +7 -0
  81. package/dist/commonjs/sdk/cms/content-types.d.ts.map +1 -0
  82. package/dist/commonjs/sdk/cms/content-types.js +20 -0
  83. package/dist/commonjs/sdk/cms/content-types.js.map +1 -0
  84. package/dist/commonjs/sdk/cms/content.d.ts +11 -0
  85. package/dist/commonjs/sdk/cms/content.d.ts.map +1 -0
  86. package/dist/commonjs/sdk/cms/content.js +32 -0
  87. package/dist/commonjs/sdk/cms/content.js.map +1 -0
  88. package/dist/commonjs/sdk/cms/index.d.ts +8 -0
  89. package/dist/commonjs/sdk/cms/index.d.ts.map +1 -1
  90. package/dist/commonjs/sdk/cms/index.js +13 -1
  91. package/dist/commonjs/sdk/cms/index.js.map +1 -1
  92. package/dist/commonjs/sdk/index.d.ts +1 -0
  93. package/dist/commonjs/sdk/index.d.ts.map +1 -1
  94. package/dist/commonjs/sdk/index.js +1 -0
  95. package/dist/commonjs/sdk/index.js.map +1 -1
  96. package/dist/commonjs/sdk/sdk.d.ts +3 -0
  97. package/dist/commonjs/sdk/sdk.d.ts.map +1 -1
  98. package/dist/commonjs/sdk/sdk.js +4 -0
  99. package/dist/commonjs/sdk/sdk.js.map +1 -1
  100. package/dist/commonjs/sdk/tracking/events.d.ts +27 -0
  101. package/dist/commonjs/sdk/tracking/events.d.ts.map +1 -0
  102. package/dist/commonjs/sdk/tracking/events.js +137 -0
  103. package/dist/commonjs/sdk/tracking/events.js.map +1 -0
  104. package/dist/commonjs/sdk/tracking/index.d.ts +12 -0
  105. package/dist/commonjs/sdk/tracking/index.d.ts.map +1 -0
  106. package/dist/commonjs/sdk/tracking/index.js +35 -0
  107. package/dist/commonjs/sdk/tracking/index.js.map +1 -0
  108. package/dist/esm/funcs/cms/contentCreate.d.ts +11 -0
  109. package/dist/esm/funcs/cms/contentCreate.d.ts.map +1 -0
  110. package/dist/esm/funcs/cms/contentCreate.js +74 -0
  111. package/dist/esm/funcs/cms/contentCreate.js.map +1 -0
  112. package/dist/esm/funcs/cms/contentDelete.d.ts +10 -0
  113. package/dist/esm/funcs/cms/contentDelete.d.ts.map +1 -0
  114. package/dist/esm/funcs/cms/contentDelete.js +74 -0
  115. package/dist/esm/funcs/cms/contentDelete.js.map +1 -0
  116. package/dist/esm/funcs/cms/contentGet.d.ts +11 -0
  117. package/dist/esm/funcs/cms/contentGet.d.ts.map +1 -0
  118. package/dist/esm/funcs/cms/contentGet.js +74 -0
  119. package/dist/esm/funcs/cms/contentGet.js.map +1 -0
  120. package/dist/esm/funcs/cms/contentList.d.ts +11 -0
  121. package/dist/esm/funcs/cms/contentList.d.ts.map +1 -0
  122. package/dist/esm/funcs/cms/contentList.js +81 -0
  123. package/dist/esm/funcs/cms/contentList.js.map +1 -0
  124. package/dist/esm/funcs/cms/contentTypesGet.d.ts +10 -0
  125. package/dist/esm/funcs/cms/contentTypesGet.d.ts.map +1 -0
  126. package/dist/esm/funcs/cms/contentTypesGet.js +78 -0
  127. package/dist/esm/funcs/cms/contentTypesGet.js.map +1 -0
  128. package/dist/esm/funcs/cms/contentTypesList.d.ts +10 -0
  129. package/dist/esm/funcs/cms/contentTypesList.d.ts.map +1 -0
  130. package/dist/esm/funcs/cms/contentTypesList.js +85 -0
  131. package/dist/esm/funcs/cms/contentTypesList.js.map +1 -0
  132. package/dist/esm/funcs/cms/contentUpdate.d.ts +11 -0
  133. package/dist/esm/funcs/cms/contentUpdate.d.ts.map +1 -0
  134. package/dist/esm/funcs/cms/contentUpdate.js +75 -0
  135. package/dist/esm/funcs/cms/contentUpdate.js.map +1 -0
  136. package/dist/esm/funcs/cms/index.d.ts +7 -0
  137. package/dist/esm/funcs/cms/index.d.ts.map +1 -1
  138. package/dist/esm/funcs/cms/index.js +7 -0
  139. package/dist/esm/funcs/cms/index.js.map +1 -1
  140. package/dist/esm/funcs/index.d.ts +1 -0
  141. package/dist/esm/funcs/index.d.ts.map +1 -1
  142. package/dist/esm/funcs/index.js +1 -0
  143. package/dist/esm/funcs/index.js.map +1 -1
  144. package/dist/esm/index.d.ts +1 -0
  145. package/dist/esm/index.d.ts.map +1 -1
  146. package/dist/esm/index.js +1 -0
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/lib/config.d.ts +3 -3
  149. package/dist/esm/lib/config.js +1 -1
  150. package/dist/esm/models/cms/content-entry.d.ts +14 -0
  151. package/dist/esm/models/cms/content-entry.d.ts.map +1 -0
  152. package/dist/esm/models/cms/content-entry.js +21 -0
  153. package/dist/esm/models/cms/content-entry.js.map +1 -0
  154. package/dist/esm/models/cms/content-type-field.d.ts +27 -0
  155. package/dist/esm/models/cms/content-type-field.d.ts.map +1 -0
  156. package/dist/esm/models/cms/content-type-field.js +29 -0
  157. package/dist/esm/models/cms/content-type-field.js.map +1 -0
  158. package/dist/esm/models/cms/content-type.d.ts +32 -0
  159. package/dist/esm/models/cms/content-type.d.ts.map +1 -0
  160. package/dist/esm/models/cms/content-type.js +42 -0
  161. package/dist/esm/models/cms/content-type.js.map +1 -0
  162. package/dist/esm/models/cms/index.d.ts +3 -0
  163. package/dist/esm/models/cms/index.d.ts.map +1 -1
  164. package/dist/esm/models/cms/index.js +3 -0
  165. package/dist/esm/models/cms/index.js.map +1 -1
  166. package/dist/esm/models/commerce/route.d.ts +2 -2
  167. package/dist/esm/models/commerce/route.d.ts.map +1 -1
  168. package/dist/esm/models/commerce/route.js +2 -2
  169. package/dist/esm/models/commerce/route.js.map +1 -1
  170. package/dist/esm/models/index.d.ts +1 -0
  171. package/dist/esm/models/index.d.ts.map +1 -1
  172. package/dist/esm/models/index.js +1 -0
  173. package/dist/esm/models/index.js.map +1 -1
  174. package/dist/esm/models/operations/cms-content-types.d.ts +29 -0
  175. package/dist/esm/models/operations/cms-content-types.d.ts.map +1 -0
  176. package/dist/esm/models/operations/cms-content-types.js +35 -0
  177. package/dist/esm/models/operations/cms-content-types.js.map +1 -0
  178. package/dist/esm/models/operations/cms-content.d.ts +55 -0
  179. package/dist/esm/models/operations/cms-content.d.ts.map +1 -0
  180. package/dist/esm/models/operations/cms-content.js +56 -0
  181. package/dist/esm/models/operations/cms-content.js.map +1 -0
  182. package/dist/esm/models/operations/index.d.ts +2 -0
  183. package/dist/esm/models/operations/index.d.ts.map +1 -1
  184. package/dist/esm/models/operations/index.js +2 -0
  185. package/dist/esm/models/operations/index.js.map +1 -1
  186. package/dist/esm/sdk/cms/content-types.d.ts +7 -0
  187. package/dist/esm/sdk/cms/content-types.d.ts.map +1 -0
  188. package/dist/esm/sdk/cms/content-types.js +16 -0
  189. package/dist/esm/sdk/cms/content-types.js.map +1 -0
  190. package/dist/esm/sdk/cms/content.d.ts +11 -0
  191. package/dist/esm/sdk/cms/content.d.ts.map +1 -0
  192. package/dist/esm/sdk/cms/content.js +28 -0
  193. package/dist/esm/sdk/cms/content.js.map +1 -0
  194. package/dist/esm/sdk/cms/index.d.ts +8 -0
  195. package/dist/esm/sdk/cms/index.d.ts.map +1 -1
  196. package/dist/esm/sdk/cms/index.js +10 -0
  197. package/dist/esm/sdk/cms/index.js.map +1 -1
  198. package/dist/esm/sdk/index.d.ts +1 -0
  199. package/dist/esm/sdk/index.d.ts.map +1 -1
  200. package/dist/esm/sdk/index.js +1 -0
  201. package/dist/esm/sdk/index.js.map +1 -1
  202. package/dist/esm/sdk/sdk.d.ts +3 -0
  203. package/dist/esm/sdk/sdk.d.ts.map +1 -1
  204. package/dist/esm/sdk/sdk.js +4 -0
  205. package/dist/esm/sdk/sdk.js.map +1 -1
  206. package/dist/esm/sdk/tracking/events.d.ts +27 -0
  207. package/dist/esm/sdk/tracking/events.d.ts.map +1 -0
  208. package/dist/esm/sdk/tracking/events.js +133 -0
  209. package/dist/esm/sdk/tracking/events.js.map +1 -0
  210. package/dist/esm/sdk/tracking/index.d.ts +12 -0
  211. package/dist/esm/sdk/tracking/index.d.ts.map +1 -0
  212. package/dist/esm/sdk/tracking/index.js +31 -0
  213. package/dist/esm/sdk/tracking/index.js.map +1 -0
  214. package/jsr.json +1 -1
  215. package/package.json +1 -1
  216. package/src/funcs/cms/contentCreate.ts +171 -0
  217. package/src/funcs/cms/contentDelete.ts +157 -0
  218. package/src/funcs/cms/contentGet.ts +171 -0
  219. package/src/funcs/cms/contentList.ts +179 -0
  220. package/src/funcs/cms/contentTypesGet.ts +162 -0
  221. package/src/funcs/cms/contentTypesList.ts +169 -0
  222. package/src/funcs/cms/contentUpdate.ts +172 -0
  223. package/src/funcs/cms/index.ts +7 -0
  224. package/src/funcs/index.ts +1 -0
  225. package/src/index.ts +1 -0
  226. package/src/lib/config.ts +1 -1
  227. package/src/models/cms/content-entry.ts +31 -0
  228. package/src/models/cms/content-type-field.ts +54 -0
  229. package/src/models/cms/content-type.ts +75 -0
  230. package/src/models/cms/index.ts +3 -3
  231. package/src/models/commerce/route.ts +4 -4
  232. package/src/models/index.ts +1 -0
  233. package/src/models/operations/cms-content-types.ts +74 -0
  234. package/src/models/operations/cms-content.ts +132 -0
  235. package/src/models/operations/index.ts +2 -0
  236. package/src/sdk/cms/content-types.ts +25 -0
  237. package/src/sdk/cms/content.ts +50 -0
  238. package/src/sdk/cms/index.ts +14 -0
  239. package/src/sdk/index.ts +1 -0
  240. package/src/sdk/sdk.ts +6 -0
  241. package/src/sdk/tracking/events.ts +200 -0
  242. package/src/sdk/tracking/index.ts +34 -0
@@ -0,0 +1,75 @@
1
+ /*
2
+ * CMS Content Type model.
3
+ */
4
+
5
+ import * as z from "zod/v4";
6
+ import { remap as remap$ } from "../../lib/primitives.js";
7
+ import { HalLinks, HalLinks$inboundSchema } from "../hal.js";
8
+ import {
9
+ ContentTypeField,
10
+ ContentTypeField$inboundSchema,
11
+ } from "./content-type-field.js";
12
+
13
+ export type ContentTypeRouteConfiguration = {
14
+ name: string;
15
+ parameterFieldSlugs: Array<string>;
16
+ };
17
+
18
+ export type ContentType = {
19
+ resource: string;
20
+ id: number;
21
+ name: string;
22
+ slug: string;
23
+ resourceKey: string | null;
24
+ singularTitle: string | null;
25
+ pluralTitle: string | null;
26
+ description: string | null;
27
+ translatable: boolean;
28
+ routable: boolean;
29
+ route: ContentTypeRouteConfiguration | null;
30
+ showInNavigation: boolean;
31
+ navigationGroup: string | null;
32
+ formLayout: Record<string, any> | Array<any> | null;
33
+ fields?: Array<ContentTypeField>;
34
+ updatedAt: string | null;
35
+ createdAt: string | null;
36
+ links?: HalLinks;
37
+ };
38
+
39
+ /** @internal */
40
+ export const ContentTypeRouteConfiguration$inboundSchema: z.ZodType<
41
+ ContentTypeRouteConfiguration
42
+ > = z.object({
43
+ name: z.string(),
44
+ parameterFieldSlugs: z.array(z.string()),
45
+ });
46
+
47
+ /** @internal */
48
+ export const ContentType$inboundSchema: z.ZodType<ContentType> = z.object({
49
+ resource: z.string(),
50
+ id: z.number(),
51
+ name: z.string(),
52
+ slug: z.string(),
53
+ resourceKey: z.string().nullable(),
54
+ singularTitle: z.string().nullable(),
55
+ pluralTitle: z.string().nullable(),
56
+ description: z.string().nullable(),
57
+ translatable: z.boolean(),
58
+ routable: z.boolean(),
59
+ route: ContentTypeRouteConfiguration$inboundSchema.nullable(),
60
+ showInNavigation: z.boolean(),
61
+ navigationGroup: z.string().nullable(),
62
+ formLayout: z.union([
63
+ z.record(z.string(), z.any()),
64
+ z.array(z.any()),
65
+ z.null(),
66
+ ]),
67
+ fields: z.array(ContentTypeField$inboundSchema).optional(),
68
+ updatedAt: z.string().nullable(),
69
+ createdAt: z.string().nullable(),
70
+ _links: HalLinks$inboundSchema.optional(),
71
+ }).transform((v) => {
72
+ return remap$(v, {
73
+ "_links": "links",
74
+ }) as ContentType;
75
+ });
@@ -3,6 +3,6 @@ export * from "./layout.js";
3
3
  export * from "./page.js";
4
4
  export * from "./menu.js";
5
5
  export * from "./page-component.js";
6
-
7
-
8
-
6
+ export * from "./content-type-field.js";
7
+ export * from "./content-type.js";
8
+ export * from "./content-entry.js";
@@ -4,12 +4,12 @@
4
4
 
5
5
  import * as z from "zod/v4";
6
6
 
7
- export type RouteParameters = Record<string, string | number>;
7
+ export type RouteParameters = Record<string, string | number | boolean | null>;
8
8
 
9
9
  export type Route = {
10
10
  resource: string;
11
11
  name: string;
12
- locale: string;
12
+ locale: string | null;
13
13
  parameters: RouteParameters;
14
14
  };
15
15
 
@@ -17,13 +17,13 @@ export type Route = {
17
17
  export const RouteParameters$inboundSchema: z.ZodType<RouteParameters> = z
18
18
  .record(
19
19
  z.string(),
20
- z.union([z.string(), z.number()]),
20
+ z.union([z.string(), z.number(), z.boolean(), z.null()]),
21
21
  );
22
22
 
23
23
  /** @internal */
24
24
  export const Route$inboundSchema: z.ZodType<Route> = z.object({
25
25
  resource: z.string(),
26
26
  name: z.string(),
27
- locale: z.string(),
27
+ locale: z.string().nullable(),
28
28
  parameters: RouteParameters$inboundSchema,
29
29
  });
@@ -1,5 +1,6 @@
1
1
  export * from "./security.js";
2
2
  export * from "./channels/index.js";
3
+ export * from "./cms/index.js";
3
4
  export * from "./common/index.js";
4
5
  export * from "./commerce/index.js";
5
6
  export * from "./localization/index.js";
@@ -0,0 +1,74 @@
1
+ /*
2
+ * CMS Content Types operations.
3
+ */
4
+
5
+ import * as z from "zod/v4";
6
+ import { buildPaginated, Paginated } from "../pagination.js";
7
+ import { ContentType, ContentType$inboundSchema } from "../cms/content-type.js";
8
+ import { HalLinks$inboundSchema } from "../hal.js";
9
+
10
+ export type ListContentTypesRequest = {
11
+ filterId?: number | undefined;
12
+ filterNameSingular?: string | undefined;
13
+ filterNamePlural?: string | undefined;
14
+ filterSlug?: string | undefined;
15
+ filterResourceKey?: string | undefined;
16
+ include?: string | undefined;
17
+ sort?: string | undefined;
18
+ page?: number | undefined;
19
+ limit?: number | undefined;
20
+ };
21
+
22
+ export type ListContentTypesResponse = Paginated<ContentType>;
23
+
24
+ /** @internal */
25
+ export const ListContentTypesRequest$outboundSchema: z.ZodType<
26
+ ListContentTypesRequest
27
+ > = z.object({
28
+ filterId: z.number().optional(),
29
+ filterNameSingular: z.string().optional(),
30
+ filterNamePlural: z.string().optional(),
31
+ filterSlug: z.string().optional(),
32
+ filterResourceKey: z.string().optional(),
33
+ include: z.string().optional(),
34
+ sort: z.string().optional(),
35
+ page: z.number().optional(),
36
+ limit: z.number().optional(),
37
+ });
38
+
39
+ /** @internal */
40
+ export const ListContentTypesResponse$inboundSchema: z.ZodType<
41
+ ListContentTypesResponse
42
+ > = z.object({
43
+ _embedded: z.object({
44
+ content_types: z.array(ContentType$inboundSchema),
45
+ }),
46
+ count: z.number(),
47
+ _links: HalLinks$inboundSchema.optional(),
48
+ }).transform((v) =>
49
+ buildPaginated(
50
+ v._embedded.content_types,
51
+ v.count,
52
+ v._links,
53
+ )
54
+ );
55
+
56
+ export type GetContentTypeRequest = {
57
+ id: number;
58
+ include?: string | undefined;
59
+ };
60
+
61
+ export type GetContentTypeResponse = ContentType;
62
+
63
+ /** @internal */
64
+ export const GetContentTypeRequest$outboundSchema: z.ZodType<
65
+ GetContentTypeRequest
66
+ > = z.object({
67
+ id: z.number(),
68
+ include: z.string().optional(),
69
+ });
70
+
71
+ /** @internal */
72
+ export const GetContentTypeResponse$inboundSchema: z.ZodType<
73
+ GetContentTypeResponse
74
+ > = ContentType$inboundSchema;
@@ -0,0 +1,132 @@
1
+ /*
2
+ * CMS Content operations.
3
+ */
4
+
5
+ import * as z from "zod/v4";
6
+ import { buildPaginated, Paginated } from "../pagination.js";
7
+ import { ContentEntry, ContentEntry$inboundSchema } from "../cms/content-entry.js";
8
+ import { HalLinks$inboundSchema } from "../hal.js";
9
+
10
+ export type ListContentRequest = {
11
+ slug: string;
12
+ filterId?: string | undefined;
13
+ sort?: string | undefined;
14
+ page?: number | undefined;
15
+ limit?: number | undefined;
16
+ };
17
+
18
+ export type ListContentResponse<TEntry extends ContentEntry = ContentEntry> = Paginated<TEntry>;
19
+
20
+ /** @internal */
21
+ export const ListContentRequest$outboundSchema: z.ZodType<
22
+ ListContentRequest
23
+ > = z.object({
24
+ slug: z.string(),
25
+ filterId: z.string().optional(),
26
+ sort: z.string().optional(),
27
+ page: z.number().optional(),
28
+ limit: z.number().optional(),
29
+ });
30
+
31
+ /** @internal */
32
+ export const ListContentResponse$inboundSchema: z.ZodType<
33
+ ListContentResponse
34
+ > = z.object({
35
+ _embedded: z.record(z.string(), z.array(ContentEntry$inboundSchema)),
36
+ count: z.number(),
37
+ _links: HalLinks$inboundSchema.optional(),
38
+ }).transform((v) => {
39
+ const entries = Object.values(v._embedded)[0] ?? [];
40
+
41
+ return buildPaginated(
42
+ entries,
43
+ v.count,
44
+ v._links,
45
+ );
46
+ });
47
+
48
+ export type GetContentRequest = {
49
+ slug: string;
50
+ id: string;
51
+ };
52
+
53
+ export type GetContentResponse<TEntry extends ContentEntry = ContentEntry> = TEntry;
54
+
55
+ /** @internal */
56
+ export const GetContentRequest$outboundSchema: z.ZodType<
57
+ GetContentRequest
58
+ > = z.object({
59
+ slug: z.string(),
60
+ id: z.string(),
61
+ });
62
+
63
+ /** @internal */
64
+ export const GetContentResponse$inboundSchema: z.ZodType<
65
+ GetContentResponse
66
+ > = ContentEntry$inboundSchema;
67
+
68
+ export type CreateContentRequest = {
69
+ slug: string;
70
+ data: Record<string, any>;
71
+ };
72
+
73
+ export type CreateContentResponse<TEntry extends ContentEntry = ContentEntry> = TEntry;
74
+
75
+ /** @internal */
76
+ export const CreateContentRequest$outboundSchema: z.ZodType<
77
+ CreateContentRequest
78
+ > = z.object({
79
+ slug: z.string(),
80
+ data: z.record(z.string(), z.any()),
81
+ });
82
+
83
+ /** @internal */
84
+ export const CreateContentResponse$inboundSchema: z.ZodType<
85
+ CreateContentResponse
86
+ > = ContentEntry$inboundSchema;
87
+
88
+ export type UpdateContentRequest = {
89
+ slug: string;
90
+ id: string;
91
+ data: Record<string, any>;
92
+ };
93
+
94
+ export type UpdateContentResponse<TEntry extends ContentEntry = ContentEntry> = TEntry;
95
+
96
+ /** @internal */
97
+ export const UpdateContentRequest$outboundSchema: z.ZodType<
98
+ UpdateContentRequest
99
+ > = z.object({
100
+ slug: z.string(),
101
+ id: z.string(),
102
+ data: z.record(z.string(), z.any()),
103
+ });
104
+
105
+ /** @internal */
106
+ export const UpdateContentResponse$inboundSchema: z.ZodType<
107
+ UpdateContentResponse
108
+ > = ContentEntry$inboundSchema;
109
+
110
+ export type DeleteContentRequest = {
111
+ slug: string;
112
+ id: string;
113
+ };
114
+
115
+ export type DeleteContentResponse = {
116
+ deleted: boolean;
117
+ };
118
+
119
+ /** @internal */
120
+ export const DeleteContentRequest$outboundSchema: z.ZodType<
121
+ DeleteContentRequest
122
+ > = z.object({
123
+ slug: z.string(),
124
+ id: z.string(),
125
+ });
126
+
127
+ /** @internal */
128
+ export const DeleteContentResponse$inboundSchema: z.ZodType<
129
+ DeleteContentResponse
130
+ > = z.object({
131
+ deleted: z.boolean(),
132
+ });
@@ -2,7 +2,9 @@ export * from "./commerce-products.js";
2
2
  export * from "./commerce-categories.js";
3
3
  export * from "./commerce-carts.js";
4
4
  export * from "./commerce-cart-items.js";
5
+ export * from "./cms-content.js";
5
6
  export * from "./cms-components.js";
7
+ export * from "./cms-content-types.js";
6
8
  export * from "./cms-layouts.js";
7
9
  export * from "./cms-pages.js";
8
10
  export * from "./cms-menus.js";
@@ -0,0 +1,25 @@
1
+ /*
2
+ * CMS Content Types SDK.
3
+ */
4
+
5
+ import { contentTypesList } from "../../funcs/cms/contentTypesList.js";
6
+ import { contentTypesGet } from "../../funcs/cms/contentTypesGet.js";
7
+ import { ClientSDK, RequestOptions } from "../../lib/sdks.js";
8
+ import * as operations from "../../models/operations/index.js";
9
+ import { unwrapAsync } from "../../types/fp.js";
10
+
11
+ export class ContentTypes extends ClientSDK {
12
+ async list(
13
+ request?: operations.ListContentTypesRequest | undefined,
14
+ options?: RequestOptions,
15
+ ): Promise<operations.ListContentTypesResponse> {
16
+ return unwrapAsync(contentTypesList(this, request, options));
17
+ }
18
+
19
+ async get(
20
+ request: operations.GetContentTypeRequest,
21
+ options?: RequestOptions,
22
+ ): Promise<operations.GetContentTypeResponse> {
23
+ return unwrapAsync(contentTypesGet(this, request, options));
24
+ }
25
+ }
@@ -0,0 +1,50 @@
1
+ /*
2
+ * CMS Content SDK.
3
+ */
4
+
5
+ import { contentList } from "../../funcs/cms/contentList.js";
6
+ import { contentGet } from "../../funcs/cms/contentGet.js";
7
+ import { contentCreate } from "../../funcs/cms/contentCreate.js";
8
+ import { contentUpdate } from "../../funcs/cms/contentUpdate.js";
9
+ import { contentDelete } from "../../funcs/cms/contentDelete.js";
10
+ import { ClientSDK, RequestOptions } from "../../lib/sdks.js";
11
+ import { ContentEntry } from "../../models/cms/content-entry.js";
12
+ import * as operations from "../../models/operations/index.js";
13
+ import { unwrapAsync } from "../../types/fp.js";
14
+
15
+ export class Content extends ClientSDK {
16
+ async list<TEntry extends ContentEntry = ContentEntry>(
17
+ request: operations.ListContentRequest,
18
+ options?: RequestOptions,
19
+ ): Promise<operations.ListContentResponse<TEntry>> {
20
+ return unwrapAsync(contentList<TEntry>(this, request, options));
21
+ }
22
+
23
+ async get<TEntry extends ContentEntry = ContentEntry>(
24
+ request: operations.GetContentRequest,
25
+ options?: RequestOptions,
26
+ ): Promise<operations.GetContentResponse<TEntry>> {
27
+ return unwrapAsync(contentGet<TEntry>(this, request, options));
28
+ }
29
+
30
+ async create<TEntry extends ContentEntry = ContentEntry>(
31
+ request: operations.CreateContentRequest,
32
+ options?: RequestOptions,
33
+ ): Promise<operations.CreateContentResponse<TEntry>> {
34
+ return unwrapAsync(contentCreate<TEntry>(this, request, options));
35
+ }
36
+
37
+ async update<TEntry extends ContentEntry = ContentEntry>(
38
+ request: operations.UpdateContentRequest,
39
+ options?: RequestOptions,
40
+ ): Promise<operations.UpdateContentResponse<TEntry>> {
41
+ return unwrapAsync(contentUpdate<TEntry>(this, request, options));
42
+ }
43
+
44
+ async delete(
45
+ request: operations.DeleteContentRequest,
46
+ options?: RequestOptions,
47
+ ): Promise<operations.DeleteContentResponse> {
48
+ return unwrapAsync(contentDelete(this, request, options));
49
+ }
50
+ }
@@ -4,17 +4,23 @@
4
4
 
5
5
  import { ClientSDK } from "../../lib/sdks.js";
6
6
  import { Components } from "./components.js";
7
+ import { Content } from "./content.js";
8
+ import { ContentTypes } from "./content-types.js";
7
9
  import { Layouts } from "./layouts.js";
8
10
  import { Pages } from "./pages.js";
9
11
  import { Menus } from "./menus.js";
10
12
 
11
13
  export { Components } from "./components.js";
14
+ export { Content } from "./content.js";
15
+ export { ContentTypes } from "./content-types.js";
12
16
  export { Layouts } from "./layouts.js";
13
17
  export { Pages } from "./pages.js";
14
18
  export { Menus } from "./menus.js";
15
19
 
16
20
  export class Cms extends ClientSDK {
17
21
  private _components?: Components;
22
+ private _content?: Content;
23
+ private _contentTypes?: ContentTypes;
18
24
  private _layouts?: Layouts;
19
25
  private _pages?: Pages;
20
26
  private _menus?: Menus;
@@ -23,6 +29,14 @@ export class Cms extends ClientSDK {
23
29
  return (this._components ??= new Components(this._options));
24
30
  }
25
31
 
32
+ get content(): Content {
33
+ return (this._content ??= new Content(this._options));
34
+ }
35
+
36
+ get contentTypes(): ContentTypes {
37
+ return (this._contentTypes ??= new ContentTypes(this._options));
38
+ }
39
+
26
40
  get layouts(): Layouts {
27
41
  return (this._layouts ??= new Layouts(this._options));
28
42
  }
package/src/sdk/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
 
2
2
  export * from "./sdk.js";
3
+ export * from "./tracking/index.js";
package/src/sdk/sdk.ts CHANGED
@@ -10,6 +10,7 @@ import { OAuth2 } from "./oauth2.js";
10
10
  import { Settings } from "./settings/index.js";
11
11
  import { Users } from "./users/index.js";
12
12
  import { Admins } from "./admins.js";
13
+ import { Tracking } from "./tracking/index.js";
13
14
  import type { SDKOptions } from "../lib/config.js";
14
15
  import type {
15
16
  OminityModuleInput,
@@ -66,6 +67,11 @@ export class Ominity extends ClientSDK {
66
67
  return (this._http ??= new Http(this._options));
67
68
  }
68
69
 
70
+ private _tracking?: Tracking;
71
+ get tracking(): Tracking {
72
+ return (this._tracking ??= new Tracking(this.http));
73
+ }
74
+
69
75
  private _localization?: Localization;
70
76
  get localization(): Localization {
71
77
  return (this._localization ??= new Localization(this._options));
@@ -0,0 +1,200 @@
1
+ /*
2
+ * Tracking Events SDK.
3
+ */
4
+
5
+ import { RequestOptions } from "../../lib/sdks.js";
6
+ import { Http } from "../http.js";
7
+
8
+ export type TrackingEventName =
9
+ | "page_view"
10
+ | "product_view"
11
+ | "cart_view"
12
+ | "add_to_cart"
13
+ | "remove_from_cart"
14
+ | "checkout_started"
15
+ | "purchase"
16
+ | "button_click"
17
+ | string;
18
+
19
+ export type TrackingEventMetadata = Readonly<Record<string, unknown>>;
20
+ export type TrackingEventUtm = Readonly<Record<string, string>>;
21
+
22
+ export interface TrackEventRequest {
23
+ readonly event: TrackingEventName;
24
+ readonly timestamp?: string | Date;
25
+ readonly title?: string;
26
+ readonly url?: string;
27
+ readonly metadata?: TrackingEventMetadata;
28
+ readonly visitorId?: string;
29
+ readonly userId?: number;
30
+ readonly referrer?: string;
31
+ readonly utm?: TrackingEventUtm;
32
+ }
33
+
34
+ export interface TrackEventResponse {
35
+ readonly success: boolean;
36
+ readonly visitorId: string;
37
+ }
38
+
39
+ type MutableTrackingPayload = {
40
+ event: string;
41
+ timestamp: string;
42
+ title?: string;
43
+ url?: string;
44
+ metadata?: TrackingEventMetadata;
45
+ visitorId?: string;
46
+ userId?: number;
47
+ referrer?: string;
48
+ utm?: TrackingEventUtm;
49
+ };
50
+
51
+ function asNonEmptyString(value: unknown): string | undefined {
52
+ if (typeof value !== "string") {
53
+ return;
54
+ }
55
+
56
+ const trimmed = value.trim();
57
+ return trimmed.length > 0 ? trimmed : undefined;
58
+ }
59
+
60
+ function asValidDate(value: Date): Date | undefined {
61
+ if (!Number.isFinite(value.getTime())) {
62
+ return;
63
+ }
64
+
65
+ return value;
66
+ }
67
+
68
+ function normalizeTimestamp(value: string | Date | undefined): string {
69
+ if (value instanceof Date) {
70
+ const parsed = asValidDate(value);
71
+ if (parsed) {
72
+ return parsed.toISOString();
73
+ }
74
+ } else if (typeof value === "string") {
75
+ const trimmed = value.trim();
76
+ if (trimmed.length > 0) {
77
+ return trimmed;
78
+ }
79
+ }
80
+
81
+ return new Date().toISOString();
82
+ }
83
+
84
+ function normalizeUtm(value: unknown): TrackingEventUtm | undefined {
85
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
86
+ return;
87
+ }
88
+
89
+ const normalized: Record<string, string> = {};
90
+ for (const [key, raw] of Object.entries(value)) {
91
+ const trimmed = asNonEmptyString(raw);
92
+ if (trimmed) {
93
+ normalized[key] = trimmed;
94
+ }
95
+ }
96
+
97
+ return Object.keys(normalized).length > 0 ? normalized : undefined;
98
+ }
99
+
100
+ function normalizeMetadata(value: unknown): TrackingEventMetadata | undefined {
101
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
102
+ return;
103
+ }
104
+
105
+ return value as TrackingEventMetadata;
106
+ }
107
+
108
+ function normalizeTrackEventPayload(input: TrackEventRequest): MutableTrackingPayload {
109
+ const eventName = asNonEmptyString(input.event);
110
+ if (!eventName) {
111
+ throw new Error("Tracking event name is required.");
112
+ }
113
+
114
+ const payload: MutableTrackingPayload = {
115
+ event: eventName,
116
+ timestamp: normalizeTimestamp(input.timestamp),
117
+ };
118
+
119
+ const title = asNonEmptyString(input.title);
120
+ if (title) {
121
+ payload.title = title;
122
+ }
123
+
124
+ const url = asNonEmptyString(input.url);
125
+ if (url) {
126
+ payload.url = url;
127
+ }
128
+
129
+ const metadata = normalizeMetadata(input.metadata);
130
+ if (metadata) {
131
+ payload.metadata = metadata;
132
+ }
133
+
134
+ const visitorId = asNonEmptyString(input.visitorId);
135
+ if (visitorId) {
136
+ payload.visitorId = visitorId;
137
+ }
138
+
139
+ if (typeof input.userId === "number" && Number.isFinite(input.userId)) {
140
+ payload.userId = Math.trunc(input.userId);
141
+ }
142
+
143
+ const referrer = asNonEmptyString(input.referrer);
144
+ if (referrer) {
145
+ payload.referrer = referrer;
146
+ }
147
+
148
+ const utm = normalizeUtm(input.utm);
149
+ if (utm) {
150
+ payload.utm = utm;
151
+ }
152
+
153
+ return payload;
154
+ }
155
+
156
+ function asRecord(value: unknown): Record<string, unknown> {
157
+ if (typeof value === "object" && value !== null) {
158
+ return value as Record<string, unknown>;
159
+ }
160
+
161
+ return {};
162
+ }
163
+
164
+ function normalizeTrackEventResponse(payload: unknown): TrackEventResponse {
165
+ const record = asRecord(payload);
166
+ const visitorId = asNonEmptyString(record["visitorId"]) ?? "";
167
+ const success = record["success"] === true;
168
+
169
+ return {
170
+ success,
171
+ visitorId,
172
+ };
173
+ }
174
+
175
+ export class TrackingEvents {
176
+ readonly #http: Http;
177
+
178
+ constructor(http: Http) {
179
+ this.#http = http;
180
+ }
181
+
182
+ async create(
183
+ request: TrackEventRequest,
184
+ options?: RequestOptions,
185
+ ): Promise<TrackEventResponse> {
186
+ const response = await this.#http.post("/tracking/events", {
187
+ ...options,
188
+ json: normalizeTrackEventPayload(request),
189
+ });
190
+
191
+ return normalizeTrackEventResponse(await response.json());
192
+ }
193
+
194
+ async track(
195
+ request: TrackEventRequest,
196
+ options?: RequestOptions,
197
+ ): Promise<TrackEventResponse> {
198
+ return this.create(request, options);
199
+ }
200
+ }