@flaks/onerecord 0.3.0 → 0.5.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 (109) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/MIGRATING.md +37 -0
  3. package/dist/api/index.d.ts +296 -0
  4. package/dist/api/index.d.ts.map +1 -0
  5. package/dist/api/index.js +197 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/classes/composing/codec.d.ts +4 -0
  8. package/dist/classes/composing/codec.d.ts.map +1 -0
  9. package/dist/classes/composing/codec.js +11 -0
  10. package/dist/classes/composing/codec.js.map +1 -0
  11. package/dist/classes/composing/deserialize.d.ts +5 -0
  12. package/dist/classes/composing/deserialize.d.ts.map +1 -0
  13. package/dist/classes/{organization → composing}/deserialize.js +3 -3
  14. package/dist/classes/composing/deserialize.js.map +1 -0
  15. package/dist/classes/composing/index.d.ts +6 -0
  16. package/dist/classes/composing/index.d.ts.map +1 -0
  17. package/dist/classes/composing/index.js +5 -0
  18. package/dist/classes/composing/index.js.map +1 -0
  19. package/dist/classes/composing/schema.d.ts +27 -0
  20. package/dist/classes/composing/schema.d.ts.map +1 -0
  21. package/dist/classes/composing/schema.js +19 -0
  22. package/dist/classes/composing/schema.js.map +1 -0
  23. package/dist/classes/composing/serialize.d.ts +6 -0
  24. package/dist/classes/composing/serialize.d.ts.map +1 -0
  25. package/dist/classes/{organization → composing}/serialize.js +6 -6
  26. package/dist/classes/composing/serialize.js.map +1 -0
  27. package/dist/classes/loading-material/codec.d.ts +4 -0
  28. package/dist/classes/loading-material/codec.d.ts.map +1 -0
  29. package/dist/classes/loading-material/codec.js +11 -0
  30. package/dist/classes/loading-material/codec.js.map +1 -0
  31. package/dist/classes/loading-material/deserialize.d.ts +5 -0
  32. package/dist/classes/loading-material/deserialize.d.ts.map +1 -0
  33. package/dist/classes/loading-material/deserialize.js +64 -0
  34. package/dist/classes/loading-material/deserialize.js.map +1 -0
  35. package/dist/classes/loading-material/index.d.ts +6 -0
  36. package/dist/classes/loading-material/index.d.ts.map +1 -0
  37. package/dist/classes/loading-material/index.js +5 -0
  38. package/dist/classes/loading-material/index.js.map +1 -0
  39. package/dist/classes/loading-material/schema.d.ts +20 -0
  40. package/dist/classes/loading-material/schema.d.ts.map +1 -0
  41. package/dist/classes/loading-material/schema.js +14 -0
  42. package/dist/classes/loading-material/schema.js.map +1 -0
  43. package/dist/classes/loading-material/serialize.d.ts +6 -0
  44. package/dist/classes/loading-material/serialize.d.ts.map +1 -0
  45. package/dist/classes/loading-material/serialize.js +28 -0
  46. package/dist/classes/loading-material/serialize.js.map +1 -0
  47. package/dist/classes/unit-composition/codec.d.ts +4 -0
  48. package/dist/classes/unit-composition/codec.d.ts.map +1 -0
  49. package/dist/classes/unit-composition/codec.js +11 -0
  50. package/dist/classes/unit-composition/codec.js.map +1 -0
  51. package/dist/classes/unit-composition/deserialize.d.ts +5 -0
  52. package/dist/classes/unit-composition/deserialize.d.ts.map +1 -0
  53. package/dist/classes/unit-composition/deserialize.js +64 -0
  54. package/dist/classes/unit-composition/deserialize.js.map +1 -0
  55. package/dist/classes/unit-composition/index.d.ts +6 -0
  56. package/dist/classes/unit-composition/index.d.ts.map +1 -0
  57. package/dist/classes/unit-composition/index.js +5 -0
  58. package/dist/classes/unit-composition/index.js.map +1 -0
  59. package/dist/classes/unit-composition/schema.d.ts +15 -0
  60. package/dist/classes/unit-composition/schema.d.ts.map +1 -0
  61. package/dist/classes/unit-composition/schema.js +12 -0
  62. package/dist/classes/unit-composition/schema.js.map +1 -0
  63. package/dist/classes/unit-composition/serialize.d.ts +6 -0
  64. package/dist/classes/unit-composition/serialize.d.ts.map +1 -0
  65. package/dist/classes/unit-composition/serialize.js +28 -0
  66. package/dist/classes/unit-composition/serialize.js.map +1 -0
  67. package/dist/codecs.d.ts +4 -1
  68. package/dist/codecs.d.ts.map +1 -1
  69. package/dist/codecs.js +4 -1
  70. package/dist/codecs.js.map +1 -1
  71. package/dist/codes/enums.d.ts +5 -0
  72. package/dist/codes/enums.d.ts.map +1 -1
  73. package/dist/codes/enums.js +1 -0
  74. package/dist/codes/enums.js.map +1 -1
  75. package/dist/codes/index.d.ts +1 -1
  76. package/dist/codes/index.d.ts.map +1 -1
  77. package/dist/codes/index.js +1 -1
  78. package/dist/codes/index.js.map +1 -1
  79. package/dist/facade.d.ts +5 -2
  80. package/dist/facade.d.ts.map +1 -1
  81. package/dist/factory-classes.d.ts +6 -0
  82. package/dist/factory-classes.d.ts.map +1 -1
  83. package/dist/factory-classes.js +6 -0
  84. package/dist/factory-classes.js.map +1 -1
  85. package/dist/index.d.ts +8 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +11 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/version.d.ts +1 -1
  90. package/dist/version.js +1 -1
  91. package/package.json +10 -5
  92. package/dist/classes/organization/codec.d.ts +0 -4
  93. package/dist/classes/organization/codec.d.ts.map +0 -1
  94. package/dist/classes/organization/codec.js +0 -11
  95. package/dist/classes/organization/codec.js.map +0 -1
  96. package/dist/classes/organization/deserialize.d.ts +0 -5
  97. package/dist/classes/organization/deserialize.d.ts.map +0 -1
  98. package/dist/classes/organization/deserialize.js.map +0 -1
  99. package/dist/classes/organization/index.d.ts +0 -6
  100. package/dist/classes/organization/index.d.ts.map +0 -1
  101. package/dist/classes/organization/index.js +0 -5
  102. package/dist/classes/organization/index.js.map +0 -1
  103. package/dist/classes/organization/schema.d.ts +0 -14
  104. package/dist/classes/organization/schema.d.ts.map +0 -1
  105. package/dist/classes/organization/schema.js +0 -11
  106. package/dist/classes/organization/schema.js.map +0 -1
  107. package/dist/classes/organization/serialize.d.ts +0 -6
  108. package/dist/classes/organization/serialize.d.ts.map +0 -1
  109. package/dist/classes/organization/serialize.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,73 @@ All notable changes are documented here. Format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/), versioning follows
5
5
  [SemVer](https://semver.org/) per the policy in `MIGRATING.md`.
6
6
 
7
+ ## [0.5.0] - 2026-07-26
8
+
9
+ ONE Record API 2.2.0 interoperability boundary for applications that must
10
+ work both inside the Flaks sphere and with standards-only peers.
11
+
12
+ ### Added
13
+
14
+ - Strict Zod wire schemas for ServerInformation, ChangeRequest,
15
+ SubscriptionRequest, AccessDelegationRequest, Notification, and their
16
+ embedded API objects.
17
+ - `assertEndorsedServerInformation`, which rejects peers that do not advertise
18
+ JSON-LD, API 2.2.0, the non-versioned cargo ontology IRI, and its separately
19
+ versioned 3.2.0 IRI.
20
+ - `OneRecordPeerProfileSchema` for transporting standards endpoint and OIDC
21
+ discovery metadata through Flaks Connect without coupling the ONE Record
22
+ protocol to Connect.
23
+ - The `@flaks/onerecord/api` export and equivalent root exports.
24
+ - A shared implementation profile in `docs/ONE_RECORD_2_2_PROFILE.md`.
25
+
26
+ ### Changed
27
+
28
+ - `__VERSION__` now reports `0.5.0`.
29
+ - API-layer schemas accept compact `api:`/`cargo:` references as well as
30
+ absolute IRIs, matching the JSON-LD examples in the endorsed standard.
31
+
32
+ ### Compatibility
33
+
34
+ - Existing cargo-model codecs and application-layer types are unchanged.
35
+ - No network publication is performed by this repository change. Consumers
36
+ must move to 0.5.0 only after the package release gate is completed.
37
+
38
+ ## [0.4.0] - 2026-05-19
39
+
40
+ ULD composition classes: the `:UnitComposition` / `:Composing` /
41
+ `:LoadingMaterial` ULD-build model plus the `CompositionType` code list.
42
+ Purely **additive** — no breaking changes, no schema rewrites. Every
43
+ modelling deviation is non-breaking and documented in
44
+ `docs/spec-deviations.md` §17. No migration required (see `MIGRATING.md`).
45
+
46
+ ### Added
47
+
48
+ - **`CompositionType`** code list — `COMPOSITION` | `DECOMPOSITION`
49
+ (`:CompositionType` individuals); the action sense of a `Composing` record.
50
+ - **`LoadingMaterial`** class — `:LoadingMaterial` (dunnage / securing /
51
+ load-distribution material used in a ULD build).
52
+ - **`UnitComposition`** class — `:UnitComposition` (the assembled ULD-load
53
+ record grouping a `ULD` with its constituent `Piece`s and loading material).
54
+ - **`Composing`** class — `:Composing` (the `:LogisticsActivity`-derived
55
+ loading/unloading action that produces or breaks a `UnitComposition`;
56
+ carries `compositionType`).
57
+ - **`ULD.inUnitComposition`** property — back-reference from a `ULD` to the
58
+ `UnitComposition` it participates in.
59
+ - Codecs, schemas, and `serialize*` / `serialize*Strict` / `deserialize*`
60
+ helpers for `LoadingMaterial`, `UnitComposition`, and `Composing`
61
+ (`*Codec`, `*Schema`, `serializeComposing`, `serializeComposingStrict`,
62
+ `deserializeComposing`, and the `UnitComposition` / `LoadingMaterial`
63
+ equivalents).
64
+
65
+ ### Notes
66
+
67
+ - Several inherited optional `:LogisticsActivity` / `:LogisticsObject`
68
+ properties are intentionally omitted from `Composing` / `UnitComposition`
69
+ (e.g. `actionTimeType`, `contactDetails`, `executionStatus`,
70
+ `checkActions`, `servedServices`). All are optional in the 3.2-rc2
71
+ ontology and can be added non-breakingly later — see
72
+ `docs/spec-deviations.md` §17 for the per-property rationale.
73
+
7
74
  ## [0.3.0] - 2026-05-17
8
75
 
9
76
  FWB-equivalence Path A: 10 new classes, schema rewrites for the core FWB
package/MIGRATING.md CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  This file documents one entry per minor release.
4
4
 
5
+ ## Migrating from v0.4.x to v0.5.0
6
+
7
+ Existing cargo-model imports require no changes. v0.5.0 adds a stricter,
8
+ separate API wire boundary:
9
+
10
+ ```ts
11
+ import {
12
+ OneRecordServerInformationSchema,
13
+ OneRecordPeerProfileSchema,
14
+ assertEndorsedServerInformation,
15
+ } from '@flaks/onerecord/api'
16
+ ```
17
+
18
+ Use these schemas at HTTP and Flaks Connect boundaries. Do not substitute the
19
+ older cargo-model `ServerInformationSchema` for API 2.2.0 wire validation; it
20
+ is retained for compatibility with existing application-layer mappings.
21
+
22
+ The peer profile contains discovery metadata, not credentials. A Connect
23
+ credential bundle may carry this profile, but each application must still
24
+ authenticate, authorize, and communicate using standard ONE Record endpoints
25
+ when the peer is not part of the Flaks sphere.
26
+
27
+ ## Migrating from v0.3.x to v0.4.0
28
+
29
+ **No action required.** v0.4.0 is purely additive: it introduces the ULD
30
+ composition model (`UnitComposition`, `Composing`, `LoadingMaterial`, the
31
+ `CompositionType` code list, and the `ULD.inUnitComposition` back-reference).
32
+
33
+ - No classes removed, no fields renamed, no schema shapes changed.
34
+ - Existing v0.3.x wire payloads validate and round-trip unchanged.
35
+ - Adopt the new classes only if you produce or consume ULD-build records;
36
+ otherwise upgrading is transparent.
37
+
38
+ Per the SemVer policy below, this minor bump carries no breaking changes
39
+ (it could have, but does not). Every modelling deviation in the new classes
40
+ is non-breaking and documented in `docs/spec-deviations.md` §17.
41
+
5
42
  ## Migrating from v0.2.x to v0.3.0
6
43
 
7
44
  v0.3.0 is a **breaking release**. Review every item below before upgrading.
@@ -0,0 +1,296 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Endorsed ONE Record production baseline (28 July 2025).
4
+ *
5
+ * The development specification is deliberately not used as the default wire
6
+ * contract. Development versions can be advertised in addition to this
7
+ * baseline once a product implements them completely.
8
+ */
9
+ export declare const ONE_RECORD_API_VERSION: "2.2.0";
10
+ export declare const ONE_RECORD_CARGO_ONTOLOGY_VERSION: "3.2.0";
11
+ export declare const ONE_RECORD_ORCHESTRATION_VERSION: "1.1.0";
12
+ export declare const ONE_RECORD_API_ONTOLOGY: "https://onerecord.iata.org/ns/api";
13
+ export declare const ONE_RECORD_CARGO_ONTOLOGY: "https://onerecord.iata.org/ns/cargo";
14
+ export declare const ONE_RECORD_API_ONTOLOGY_VERSION: "https://onerecord.iata.org/ns/api/2.2.0";
15
+ export declare const ONE_RECORD_CARGO_ONTOLOGY_VERSION_IRI: "https://onerecord.iata.org/ns/cargo/3.2.0";
16
+ export declare const JsonLdContextSchema: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
17
+ export declare const OneRecordReferenceSchema: z.ZodObject<{
18
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
19
+ '@type': z.ZodOptional<z.ZodString>;
20
+ }, z.core.$loose>;
21
+ export declare const OneRecordTypedValueSchema: z.ZodObject<{
22
+ '@value': z.ZodString;
23
+ '@type': z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strict>;
25
+ export declare const OneRecordRequestStatusSchema: z.ZodEnum<{
26
+ "api:REQUEST_PENDING": "api:REQUEST_PENDING";
27
+ "api:REQUEST_ACCEPTED": "api:REQUEST_ACCEPTED";
28
+ "api:REQUEST_REJECTED": "api:REQUEST_REJECTED";
29
+ "api:REQUEST_FAILED": "api:REQUEST_FAILED";
30
+ "api:REQUEST_REVOKED": "api:REQUEST_REVOKED";
31
+ "api:REQUEST_ACKNOWLEDGED": "api:REQUEST_ACKNOWLEDGED";
32
+ }>;
33
+ export declare const OneRecordServerInformationSchema: z.ZodObject<{
34
+ '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
35
+ '@id': z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
36
+ '@type': z.ZodUnion<readonly [z.ZodLiteral<"api:ServerInformation">, z.ZodLiteral<"https://onerecord.iata.org/ns/api#ServerInformation">]>;
37
+ 'api:hasDataHolder': z.ZodObject<{
38
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
39
+ '@type': z.ZodOptional<z.ZodString>;
40
+ }, z.core.$loose>;
41
+ 'api:hasServerEndpoint': z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
42
+ 'api:hasSupportedApiVersion': z.ZodArray<z.ZodString>;
43
+ 'api:hasSupportedContentType': z.ZodArray<z.ZodString>;
44
+ 'api:hasSupportedLanguage': z.ZodArray<z.ZodString>;
45
+ 'api:hasSupportedOntology': z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
46
+ 'api:hasSupportedOntologyVersion': z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
47
+ 'api:hasSupportedEncoding': z.ZodOptional<z.ZodArray<z.ZodString>>;
48
+ }, z.core.$strict>;
49
+ export declare const OneRecordChangeRequestSchema: z.ZodObject<{
50
+ '@type': z.ZodLiteral<"api:ChangeRequest">;
51
+ 'api:hasChange': z.ZodUnion<readonly [z.ZodObject<{
52
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
53
+ '@type': z.ZodOptional<z.ZodString>;
54
+ }, z.core.$loose>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
55
+ '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
56
+ '@id': z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
57
+ 'api:hasRequestStatus': z.ZodObject<{
58
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
59
+ '@type': z.ZodOptional<z.ZodString>;
60
+ }, z.core.$loose>;
61
+ 'api:isRequestedBy': z.ZodObject<{
62
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
63
+ '@type': z.ZodOptional<z.ZodString>;
64
+ }, z.core.$loose>;
65
+ 'api:isRequestedAt': z.ZodObject<{
66
+ '@value': z.ZodString;
67
+ '@type': z.ZodOptional<z.ZodString>;
68
+ }, z.core.$strict>;
69
+ 'api:hasRequestStatusSince': z.ZodOptional<z.ZodObject<{
70
+ '@value': z.ZodString;
71
+ '@type': z.ZodOptional<z.ZodString>;
72
+ }, z.core.$strict>>;
73
+ 'api:isRevokedBy': z.ZodOptional<z.ZodObject<{
74
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
75
+ '@type': z.ZodOptional<z.ZodString>;
76
+ }, z.core.$loose>>;
77
+ 'api:isRevokedAt': z.ZodOptional<z.ZodObject<{
78
+ '@value': z.ZodString;
79
+ '@type': z.ZodOptional<z.ZodString>;
80
+ }, z.core.$strict>>;
81
+ 'api:hasError': z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
82
+ }, z.core.$strict>;
83
+ export declare const OneRecordSubscriptionSchema: z.ZodObject<{
84
+ '@id': z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
85
+ '@type': z.ZodLiteral<"api:Subscription">;
86
+ 'api:hasContentType': z.ZodOptional<z.ZodString>;
87
+ 'api:hasSubscriber': z.ZodObject<{
88
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
89
+ '@type': z.ZodOptional<z.ZodString>;
90
+ }, z.core.$loose>;
91
+ 'api:hasTopicType': z.ZodObject<{
92
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
93
+ '@type': z.ZodOptional<z.ZodString>;
94
+ }, z.core.$loose>;
95
+ 'api:includeSubscriptionEventType': z.ZodArray<z.ZodObject<{
96
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
97
+ '@type': z.ZodOptional<z.ZodString>;
98
+ }, z.core.$loose>>;
99
+ 'api:hasTopic': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodObject<{
100
+ '@value': z.ZodString;
101
+ '@type': z.ZodOptional<z.ZodString>;
102
+ }, z.core.$strict>]>;
103
+ 'api:expiresAt': z.ZodOptional<z.ZodObject<{
104
+ '@value': z.ZodString;
105
+ '@type': z.ZodOptional<z.ZodString>;
106
+ }, z.core.$strict>>;
107
+ 'api:hasDescription': z.ZodOptional<z.ZodString>;
108
+ 'api:notifyRequestStatusChange': z.ZodOptional<z.ZodBoolean>;
109
+ 'api:sendLogisticsObjectBody': z.ZodOptional<z.ZodBoolean>;
110
+ }, z.core.$strict>;
111
+ export declare const OneRecordSubscriptionRequestSchema: z.ZodObject<{
112
+ '@type': z.ZodLiteral<"api:SubscriptionRequest">;
113
+ 'api:hasSubscription': z.ZodObject<{
114
+ '@id': z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
115
+ '@type': z.ZodLiteral<"api:Subscription">;
116
+ 'api:hasContentType': z.ZodOptional<z.ZodString>;
117
+ 'api:hasSubscriber': z.ZodObject<{
118
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
119
+ '@type': z.ZodOptional<z.ZodString>;
120
+ }, z.core.$loose>;
121
+ 'api:hasTopicType': z.ZodObject<{
122
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
123
+ '@type': z.ZodOptional<z.ZodString>;
124
+ }, z.core.$loose>;
125
+ 'api:includeSubscriptionEventType': z.ZodArray<z.ZodObject<{
126
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
127
+ '@type': z.ZodOptional<z.ZodString>;
128
+ }, z.core.$loose>>;
129
+ 'api:hasTopic': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodObject<{
130
+ '@value': z.ZodString;
131
+ '@type': z.ZodOptional<z.ZodString>;
132
+ }, z.core.$strict>]>;
133
+ 'api:expiresAt': z.ZodOptional<z.ZodObject<{
134
+ '@value': z.ZodString;
135
+ '@type': z.ZodOptional<z.ZodString>;
136
+ }, z.core.$strict>>;
137
+ 'api:hasDescription': z.ZodOptional<z.ZodString>;
138
+ 'api:notifyRequestStatusChange': z.ZodOptional<z.ZodBoolean>;
139
+ 'api:sendLogisticsObjectBody': z.ZodOptional<z.ZodBoolean>;
140
+ }, z.core.$strict>;
141
+ '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
142
+ '@id': z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
143
+ 'api:hasRequestStatus': z.ZodObject<{
144
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
145
+ '@type': z.ZodOptional<z.ZodString>;
146
+ }, z.core.$loose>;
147
+ 'api:isRequestedBy': z.ZodObject<{
148
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
149
+ '@type': z.ZodOptional<z.ZodString>;
150
+ }, z.core.$loose>;
151
+ 'api:isRequestedAt': z.ZodObject<{
152
+ '@value': z.ZodString;
153
+ '@type': z.ZodOptional<z.ZodString>;
154
+ }, z.core.$strict>;
155
+ 'api:hasRequestStatusSince': z.ZodOptional<z.ZodObject<{
156
+ '@value': z.ZodString;
157
+ '@type': z.ZodOptional<z.ZodString>;
158
+ }, z.core.$strict>>;
159
+ 'api:isRevokedBy': z.ZodOptional<z.ZodObject<{
160
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
161
+ '@type': z.ZodOptional<z.ZodString>;
162
+ }, z.core.$loose>>;
163
+ 'api:isRevokedAt': z.ZodOptional<z.ZodObject<{
164
+ '@value': z.ZodString;
165
+ '@type': z.ZodOptional<z.ZodString>;
166
+ }, z.core.$strict>>;
167
+ 'api:hasError': z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
168
+ }, z.core.$strict>;
169
+ export declare const OneRecordAccessDelegationSchema: z.ZodObject<{
170
+ '@id': z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
171
+ '@type': z.ZodLiteral<"api:AccessDelegation">;
172
+ 'api:hasDescription': z.ZodOptional<z.ZodString>;
173
+ 'api:hasPermission': z.ZodArray<z.ZodObject<{
174
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
175
+ '@type': z.ZodOptional<z.ZodString>;
176
+ }, z.core.$loose>>;
177
+ 'api:isRequestedFor': z.ZodArray<z.ZodObject<{
178
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
179
+ '@type': z.ZodOptional<z.ZodString>;
180
+ }, z.core.$loose>>;
181
+ 'api:hasLogisticsObject': z.ZodArray<z.ZodObject<{
182
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
183
+ '@type': z.ZodOptional<z.ZodString>;
184
+ }, z.core.$loose>>;
185
+ 'api:notifyRequestStatusChange': z.ZodBoolean;
186
+ }, z.core.$strict>;
187
+ export declare const OneRecordAccessDelegationRequestSchema: z.ZodObject<{
188
+ '@type': z.ZodLiteral<"api:AccessDelegationRequest">;
189
+ 'api:hasAccessDelegation': z.ZodObject<{
190
+ '@id': z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
191
+ '@type': z.ZodLiteral<"api:AccessDelegation">;
192
+ 'api:hasDescription': z.ZodOptional<z.ZodString>;
193
+ 'api:hasPermission': z.ZodArray<z.ZodObject<{
194
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
195
+ '@type': z.ZodOptional<z.ZodString>;
196
+ }, z.core.$loose>>;
197
+ 'api:isRequestedFor': z.ZodArray<z.ZodObject<{
198
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
199
+ '@type': z.ZodOptional<z.ZodString>;
200
+ }, z.core.$loose>>;
201
+ 'api:hasLogisticsObject': z.ZodArray<z.ZodObject<{
202
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
203
+ '@type': z.ZodOptional<z.ZodString>;
204
+ }, z.core.$loose>>;
205
+ 'api:notifyRequestStatusChange': z.ZodBoolean;
206
+ }, z.core.$strict>;
207
+ '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
208
+ '@id': z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
209
+ 'api:hasRequestStatus': z.ZodObject<{
210
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
211
+ '@type': z.ZodOptional<z.ZodString>;
212
+ }, z.core.$loose>;
213
+ 'api:isRequestedBy': z.ZodObject<{
214
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
215
+ '@type': z.ZodOptional<z.ZodString>;
216
+ }, z.core.$loose>;
217
+ 'api:isRequestedAt': z.ZodObject<{
218
+ '@value': z.ZodString;
219
+ '@type': z.ZodOptional<z.ZodString>;
220
+ }, z.core.$strict>;
221
+ 'api:hasRequestStatusSince': z.ZodOptional<z.ZodObject<{
222
+ '@value': z.ZodString;
223
+ '@type': z.ZodOptional<z.ZodString>;
224
+ }, z.core.$strict>>;
225
+ 'api:isRevokedBy': z.ZodOptional<z.ZodObject<{
226
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
227
+ '@type': z.ZodOptional<z.ZodString>;
228
+ }, z.core.$loose>>;
229
+ 'api:isRevokedAt': z.ZodOptional<z.ZodObject<{
230
+ '@value': z.ZodString;
231
+ '@type': z.ZodOptional<z.ZodString>;
232
+ }, z.core.$strict>>;
233
+ 'api:hasError': z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
234
+ }, z.core.$strict>;
235
+ export declare const OneRecordNotificationSchema: z.ZodObject<{
236
+ '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
237
+ '@id': z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>>;
238
+ '@type': z.ZodLiteral<"api:Notification">;
239
+ 'api:hasEventType': z.ZodObject<{
240
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
241
+ '@type': z.ZodOptional<z.ZodString>;
242
+ }, z.core.$loose>;
243
+ 'api:hasLogisticsObject': z.ZodOptional<z.ZodObject<{
244
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
245
+ '@type': z.ZodOptional<z.ZodString>;
246
+ }, z.core.$loose>>;
247
+ 'api:hasLogisticsEvent': z.ZodOptional<z.ZodObject<{
248
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
249
+ '@type': z.ZodOptional<z.ZodString>;
250
+ }, z.core.$loose>>;
251
+ 'api:hasLogisticsObjectType': z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodObject<{
252
+ '@value': z.ZodString;
253
+ '@type': z.ZodOptional<z.ZodString>;
254
+ }, z.core.$strict>]>>;
255
+ 'api:hasChangedProperty': z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodObject<{
256
+ '@value': z.ZodString;
257
+ '@type': z.ZodOptional<z.ZodString>;
258
+ }, z.core.$strict>]>>>;
259
+ 'api:hasTopic': z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodObject<{
260
+ '@value': z.ZodString;
261
+ '@type': z.ZodOptional<z.ZodString>;
262
+ }, z.core.$strict>]>>;
263
+ 'api:isTriggeredBy': z.ZodOptional<z.ZodObject<{
264
+ '@id': z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>, z.ZodString]>;
265
+ '@type': z.ZodOptional<z.ZodString>;
266
+ }, z.core.$loose>>;
267
+ }, z.core.$strict>;
268
+ export declare const OneRecordOidcProfileSchema: z.ZodObject<{
269
+ issuer: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
270
+ token_endpoint: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
271
+ jwks_uri: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
272
+ grant_types_supported: z.ZodArray<z.ZodLiteral<"client_credentials">>;
273
+ }, z.core.$strict>;
274
+ /**
275
+ * Flaks Connect carries this standards-only peer metadata alongside its
276
+ * optimized application-specific channels. It contains no plaintext secret.
277
+ */
278
+ export declare const OneRecordPeerProfileSchema: z.ZodObject<{
279
+ server_endpoint: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
280
+ server_information: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
281
+ oidc_discovery: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
282
+ jwks_uri: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
283
+ data_holder: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SafeIri, string>>;
284
+ api_version: z.ZodLiteral<"2.2.0">;
285
+ cargo_ontology_version: z.ZodLiteral<"3.2.0">;
286
+ }, z.core.$strict>;
287
+ export type OneRecordServerInformation = z.infer<typeof OneRecordServerInformationSchema>;
288
+ export type OneRecordChangeRequest = z.infer<typeof OneRecordChangeRequestSchema>;
289
+ export type OneRecordSubscription = z.infer<typeof OneRecordSubscriptionSchema>;
290
+ export type OneRecordSubscriptionRequest = z.infer<typeof OneRecordSubscriptionRequestSchema>;
291
+ export type OneRecordAccessDelegation = z.infer<typeof OneRecordAccessDelegationSchema>;
292
+ export type OneRecordAccessDelegationRequest = z.infer<typeof OneRecordAccessDelegationRequestSchema>;
293
+ export type OneRecordNotification = z.infer<typeof OneRecordNotificationSchema>;
294
+ export type OneRecordPeerProfile = z.infer<typeof OneRecordPeerProfileSchema>;
295
+ export declare function assertEndorsedServerInformation(value: unknown): OneRecordServerInformation;
296
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAG,OAAgB,CAAA;AACtD,eAAO,MAAM,iCAAiC,EAAG,OAAgB,CAAA;AACjE,eAAO,MAAM,gCAAgC,EAAG,OAAgB,CAAA;AAChE,eAAO,MAAM,uBAAuB,EAAG,mCAA4C,CAAA;AACnF,eAAO,MAAM,yBAAyB,EAAG,qCAA8C,CAAA;AACvF,eAAO,MAAM,+BAA+B,2CACqB,CAAA;AACjE,eAAO,MAAM,qCAAqC,6CAC4B,CAAA;AAQ9E,eAAO,MAAM,mBAAmB,oKAI9B,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;iBAKrB,CAAA;AAEhB,eAAO,MAAM,yBAAyB;;;kBAK3B,CAAA;AAEX,eAAO,MAAM,4BAA4B;;;;;;;EAOvC,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;kBA4CzC,CAAA;AAcJ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAM9B,CAAA;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAc7B,CAAA;AAEX,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMpC,CAAA;AAEX,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;kBAUjC,CAAA;AAEX,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMxC,CAAA;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAa7B,CAAA;AAEX,eAAO,MAAM,0BAA0B;;;;;kBAO5B,CAAA;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;kBAU5B,CAAA;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AACzF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AACjF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC7F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AACvF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAE7E,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAa1F"}
@@ -0,0 +1,197 @@
1
+ import { z } from 'zod';
2
+ import { safeIri } from '../iri/zod-safe-iri.js';
3
+ /**
4
+ * Endorsed ONE Record production baseline (28 July 2025).
5
+ *
6
+ * The development specification is deliberately not used as the default wire
7
+ * contract. Development versions can be advertised in addition to this
8
+ * baseline once a product implements them completely.
9
+ */
10
+ export const ONE_RECORD_API_VERSION = '2.2.0';
11
+ export const ONE_RECORD_CARGO_ONTOLOGY_VERSION = '3.2.0';
12
+ export const ONE_RECORD_ORCHESTRATION_VERSION = '1.1.0';
13
+ export const ONE_RECORD_API_ONTOLOGY = 'https://onerecord.iata.org/ns/api';
14
+ export const ONE_RECORD_CARGO_ONTOLOGY = 'https://onerecord.iata.org/ns/cargo';
15
+ export const ONE_RECORD_API_ONTOLOGY_VERSION = `${ONE_RECORD_API_ONTOLOGY}/${ONE_RECORD_API_VERSION}`;
16
+ export const ONE_RECORD_CARGO_ONTOLOGY_VERSION_IRI = `${ONE_RECORD_CARGO_ONTOLOGY}/${ONE_RECORD_CARGO_ONTOLOGY_VERSION}`;
17
+ const nonEmptyArray = (schema) => z.array(schema).min(1);
18
+ const oneRecordIri = z.union([
19
+ safeIri(),
20
+ z.string().regex(/^(?:api|cargo):[A-Za-z][A-Za-z0-9_-]*$/),
21
+ ]);
22
+ export const JsonLdContextSchema = z.union([
23
+ z.string().min(1),
24
+ nonEmptyArray(z.union([z.string().min(1), z.record(z.string(), z.unknown())])),
25
+ z.record(z.string(), z.unknown()),
26
+ ]);
27
+ export const OneRecordReferenceSchema = z
28
+ .object({
29
+ '@id': oneRecordIri,
30
+ '@type': z.string().min(1).optional(),
31
+ })
32
+ .passthrough();
33
+ export const OneRecordTypedValueSchema = z
34
+ .object({
35
+ '@value': z.string(),
36
+ '@type': z.string().min(1).optional(),
37
+ })
38
+ .strict();
39
+ export const OneRecordRequestStatusSchema = z.enum([
40
+ 'api:REQUEST_PENDING',
41
+ 'api:REQUEST_ACCEPTED',
42
+ 'api:REQUEST_REJECTED',
43
+ 'api:REQUEST_FAILED',
44
+ 'api:REQUEST_REVOKED',
45
+ 'api:REQUEST_ACKNOWLEDGED',
46
+ ]);
47
+ export const OneRecordServerInformationSchema = z
48
+ .object({
49
+ '@context': JsonLdContextSchema,
50
+ '@id': safeIri(),
51
+ '@type': z.union([
52
+ z.literal('api:ServerInformation'),
53
+ z.literal('https://onerecord.iata.org/ns/api#ServerInformation'),
54
+ ]),
55
+ 'api:hasDataHolder': OneRecordReferenceSchema,
56
+ 'api:hasServerEndpoint': safeIri(),
57
+ 'api:hasSupportedApiVersion': nonEmptyArray(z.string().min(1)),
58
+ 'api:hasSupportedContentType': nonEmptyArray(z.string().min(1)),
59
+ 'api:hasSupportedLanguage': nonEmptyArray(z.string().min(1)),
60
+ 'api:hasSupportedOntology': nonEmptyArray(safeIri()),
61
+ 'api:hasSupportedOntologyVersion': nonEmptyArray(safeIri()),
62
+ 'api:hasSupportedEncoding': z.array(z.string().min(1)).optional(),
63
+ })
64
+ .strict()
65
+ .superRefine((value, ctx) => {
66
+ if (!value['api:hasSupportedContentType'].includes('application/ld+json')) {
67
+ ctx.addIssue({
68
+ code: 'custom',
69
+ path: ['api:hasSupportedContentType'],
70
+ message: 'ONE Record servers must support application/ld+json',
71
+ });
72
+ }
73
+ for (const ontology of value['api:hasSupportedOntology']) {
74
+ if (/\/\d+\.\d+(?:\.\d+)?$/.test(ontology)) {
75
+ ctx.addIssue({
76
+ code: 'custom',
77
+ path: ['api:hasSupportedOntology'],
78
+ message: 'Supported ontology identifiers must be non-versioned IRIs',
79
+ });
80
+ }
81
+ }
82
+ for (const ontology of value['api:hasSupportedOntologyVersion']) {
83
+ if (!/\/\d+\.\d+(?:\.\d+)?$/.test(ontology)) {
84
+ ctx.addIssue({
85
+ code: 'custom',
86
+ path: ['api:hasSupportedOntologyVersion'],
87
+ message: 'Supported ontology-version identifiers must be versioned IRIs',
88
+ });
89
+ }
90
+ }
91
+ });
92
+ const ActionRequestFields = {
93
+ '@context': JsonLdContextSchema,
94
+ '@id': safeIri(),
95
+ 'api:hasRequestStatus': OneRecordReferenceSchema,
96
+ 'api:isRequestedBy': OneRecordReferenceSchema,
97
+ 'api:isRequestedAt': OneRecordTypedValueSchema,
98
+ 'api:hasRequestStatusSince': OneRecordTypedValueSchema.optional(),
99
+ 'api:isRevokedBy': OneRecordReferenceSchema.optional(),
100
+ 'api:isRevokedAt': OneRecordTypedValueSchema.optional(),
101
+ 'api:hasError': z.array(z.record(z.string(), z.unknown())).optional(),
102
+ };
103
+ export const OneRecordChangeRequestSchema = z
104
+ .object({
105
+ ...ActionRequestFields,
106
+ '@type': z.literal('api:ChangeRequest'),
107
+ 'api:hasChange': z.union([OneRecordReferenceSchema, z.record(z.string(), z.unknown())]),
108
+ })
109
+ .strict();
110
+ export const OneRecordSubscriptionSchema = z
111
+ .object({
112
+ '@id': safeIri().optional(),
113
+ '@type': z.literal('api:Subscription'),
114
+ 'api:hasContentType': z.string().min(1).optional(),
115
+ 'api:hasSubscriber': OneRecordReferenceSchema,
116
+ 'api:hasTopicType': OneRecordReferenceSchema,
117
+ 'api:includeSubscriptionEventType': nonEmptyArray(OneRecordReferenceSchema),
118
+ 'api:hasTopic': z.union([safeIri(), OneRecordTypedValueSchema]),
119
+ 'api:expiresAt': OneRecordTypedValueSchema.optional(),
120
+ 'api:hasDescription': z.string().optional(),
121
+ 'api:notifyRequestStatusChange': z.boolean().optional(),
122
+ 'api:sendLogisticsObjectBody': z.boolean().optional(),
123
+ })
124
+ .strict();
125
+ export const OneRecordSubscriptionRequestSchema = z
126
+ .object({
127
+ ...ActionRequestFields,
128
+ '@type': z.literal('api:SubscriptionRequest'),
129
+ 'api:hasSubscription': OneRecordSubscriptionSchema,
130
+ })
131
+ .strict();
132
+ export const OneRecordAccessDelegationSchema = z
133
+ .object({
134
+ '@id': safeIri().optional(),
135
+ '@type': z.literal('api:AccessDelegation'),
136
+ 'api:hasDescription': z.string().optional(),
137
+ 'api:hasPermission': nonEmptyArray(OneRecordReferenceSchema),
138
+ 'api:isRequestedFor': nonEmptyArray(OneRecordReferenceSchema),
139
+ 'api:hasLogisticsObject': nonEmptyArray(OneRecordReferenceSchema),
140
+ 'api:notifyRequestStatusChange': z.boolean(),
141
+ })
142
+ .strict();
143
+ export const OneRecordAccessDelegationRequestSchema = z
144
+ .object({
145
+ ...ActionRequestFields,
146
+ '@type': z.literal('api:AccessDelegationRequest'),
147
+ 'api:hasAccessDelegation': OneRecordAccessDelegationSchema,
148
+ })
149
+ .strict();
150
+ export const OneRecordNotificationSchema = z
151
+ .object({
152
+ '@context': JsonLdContextSchema,
153
+ '@id': safeIri().optional(),
154
+ '@type': z.literal('api:Notification'),
155
+ 'api:hasEventType': OneRecordReferenceSchema,
156
+ 'api:hasLogisticsObject': OneRecordReferenceSchema.optional(),
157
+ 'api:hasLogisticsEvent': OneRecordReferenceSchema.optional(),
158
+ 'api:hasLogisticsObjectType': z.union([safeIri(), OneRecordTypedValueSchema]).optional(),
159
+ 'api:hasChangedProperty': z.array(z.union([safeIri(), OneRecordTypedValueSchema])).optional(),
160
+ 'api:hasTopic': z.union([safeIri(), OneRecordTypedValueSchema]).optional(),
161
+ 'api:isTriggeredBy': OneRecordReferenceSchema.optional(),
162
+ })
163
+ .strict();
164
+ export const OneRecordOidcProfileSchema = z
165
+ .object({
166
+ issuer: safeIri(),
167
+ token_endpoint: safeIri(),
168
+ jwks_uri: safeIri(),
169
+ grant_types_supported: z.array(z.literal('client_credentials')).min(1),
170
+ })
171
+ .strict();
172
+ /**
173
+ * Flaks Connect carries this standards-only peer metadata alongside its
174
+ * optimized application-specific channels. It contains no plaintext secret.
175
+ */
176
+ export const OneRecordPeerProfileSchema = z
177
+ .object({
178
+ server_endpoint: safeIri(),
179
+ server_information: safeIri(),
180
+ oidc_discovery: safeIri(),
181
+ jwks_uri: safeIri(),
182
+ data_holder: safeIri(),
183
+ api_version: z.literal(ONE_RECORD_API_VERSION),
184
+ cargo_ontology_version: z.literal(ONE_RECORD_CARGO_ONTOLOGY_VERSION),
185
+ })
186
+ .strict();
187
+ export function assertEndorsedServerInformation(value) {
188
+ const parsed = OneRecordServerInformationSchema.parse(value);
189
+ if (!parsed['api:hasSupportedApiVersion'].includes(ONE_RECORD_API_VERSION)) {
190
+ throw new Error(`Server does not advertise ONE Record API ${ONE_RECORD_API_VERSION}`);
191
+ }
192
+ if (!parsed['api:hasSupportedOntologyVersion'].some((ontology) => ontology === ONE_RECORD_CARGO_ONTOLOGY_VERSION_IRI)) {
193
+ throw new Error(`Server does not advertise cargo ontology ${ONE_RECORD_CARGO_ONTOLOGY_VERSION}`);
194
+ }
195
+ return parsed;
196
+ }
197
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Codec } from '../shared/codec.js';
2
+ import type { Composing, JsonLdComposing } from './schema.js';
3
+ export declare const ComposingCodec: Codec<Composing, JsonLdComposing, 'Composing'>;
4
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../src/classes/composing/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7D,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,CAM/D,CAAA"}