@riverbankcms/sdk 0.60.11 → 0.60.12

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 (34) hide show
  1. package/dist/_dts/api/src/accessAdmin.d.ts +102 -0
  2. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  3. package/dist/_dts/api/src/domains.d.ts +14 -13
  4. package/dist/_dts/api/src/endpoints.d.ts +32 -0
  5. package/dist/_dts/api/src/index.d.ts +2 -2
  6. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -1
  7. package/dist/_dts/core/src/participant-identity.d.ts +72 -0
  8. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +96 -60
  9. package/dist/_dts/db/src/schemas/forms.d.ts +135 -24
  10. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
  11. package/dist/_dts/sdk/src/version.d.ts +1 -1
  12. package/dist/cli/index.mjs +119 -1
  13. package/dist/client/bookings.mjs +62 -0
  14. package/dist/client/client.mjs +119 -1
  15. package/dist/client/hooks.mjs +119 -0
  16. package/dist/client/rendering/client.mjs +61 -0
  17. package/dist/client/rendering/islands.mjs +61 -0
  18. package/dist/client/rendering.mjs +118 -0
  19. package/dist/preview-next/before-render.mjs +57 -0
  20. package/dist/preview-next/client/runtime.mjs +120 -2
  21. package/dist/preview-next/middleware.mjs +57 -0
  22. package/dist/server/components.mjs +119 -0
  23. package/dist/server/config-validation.mjs +119 -0
  24. package/dist/server/config.mjs +119 -0
  25. package/dist/server/data.mjs +119 -0
  26. package/dist/server/index.mjs +120 -1
  27. package/dist/server/next.mjs +120 -1
  28. package/dist/server/page-converter.mjs +62 -0
  29. package/dist/server/prebuild.mjs +1 -1
  30. package/dist/server/rendering/server.mjs +119 -0
  31. package/dist/server/rendering.mjs +119 -0
  32. package/dist/server/routing.mjs +118 -0
  33. package/dist/server/server.mjs +120 -1
  34. package/package.json +1 -1
@@ -2084,6 +2084,63 @@ var ENDPOINT_DEFINITIONS = {
2084
2084
  auth: "user",
2085
2085
  responseKind: "json"
2086
2086
  },
2087
+ updateRegisteredDomainContact: {
2088
+ path: "/domains/{domainId}/registrar/contact",
2089
+ method: "POST",
2090
+ errors: [
2091
+ "validation:invalid_input",
2092
+ "resource:not_found",
2093
+ "auth:forbidden",
2094
+ "external:service_error",
2095
+ "external:registrar_orphaned_contact_profile",
2096
+ "server:internal_error"
2097
+ ],
2098
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2099
+ auth: "user",
2100
+ responseKind: "json"
2101
+ },
2102
+ setRegisteredDomainPrivacy: {
2103
+ path: "/domains/{domainId}/registrar/privacy",
2104
+ method: "POST",
2105
+ errors: [
2106
+ "validation:invalid_input",
2107
+ "resource:not_found",
2108
+ "auth:forbidden",
2109
+ "external:service_error",
2110
+ "server:internal_error"
2111
+ ],
2112
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2113
+ auth: "user",
2114
+ responseKind: "json"
2115
+ },
2116
+ setRegisteredDomainAutoRenew: {
2117
+ path: "/domains/{domainId}/registrar/auto-renew",
2118
+ method: "POST",
2119
+ errors: [
2120
+ "validation:invalid_input",
2121
+ "resource:not_found",
2122
+ "auth:forbidden",
2123
+ "external:service_error",
2124
+ "server:internal_error"
2125
+ ],
2126
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2127
+ auth: "user",
2128
+ responseKind: "json"
2129
+ },
2130
+ getRegisteredDomainRenewalPosture: {
2131
+ path: "/domains/{domainId}/registrar/renewal",
2132
+ method: "GET",
2133
+ errors: [
2134
+ "validation:invalid_input",
2135
+ "resource:not_found",
2136
+ "auth:forbidden",
2137
+ "external:service_error",
2138
+ "server:internal_error"
2139
+ ],
2140
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2141
+ auth: "user",
2142
+ responseKind: "json"
2143
+ },
2087
2144
  retryDomainVercel: {
2088
2145
  path: "/domains/{domainId}/vercel",
2089
2146
  method: "POST",
@@ -6229,7 +6286,7 @@ var SimpleCache = class {
6229
6286
  };
6230
6287
 
6231
6288
  // src/version.ts
6232
- var SDK_VERSION = "0.60.11";
6289
+ var SDK_VERSION = "0.60.12";
6233
6290
 
6234
6291
  // src/client/error.ts
6235
6292
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -8088,6 +8145,68 @@ import { z as z4 } from "zod";
8088
8145
  // ../blocks/src/system/manifest/schema.ts
8089
8146
  import { z as z3 } from "zod";
8090
8147
 
8148
+ // ../core/src/participant-identity.ts
8149
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
8150
+ participant_id: {
8151
+ field: "participant_id",
8152
+ role: "canonical_link",
8153
+ canonicalSource: "booking_participants.id",
8154
+ contractAction: "tighten_in_839",
8155
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
8156
+ },
8157
+ display_name: {
8158
+ field: "display_name",
8159
+ role: "contextual_snapshot",
8160
+ canonicalSource: "booking_participants.display_name for live identity",
8161
+ contractAction: "retain_as_snapshot",
8162
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
8163
+ },
8164
+ email: {
8165
+ field: "email",
8166
+ role: "contextual_snapshot",
8167
+ canonicalSource: "booking_participants.email_normalized for live email identity",
8168
+ contractAction: "retain_as_snapshot",
8169
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
8170
+ },
8171
+ email_normalized: {
8172
+ field: "email_normalized",
8173
+ role: "contextual_snapshot",
8174
+ canonicalSource: "booking_participants.email_normalized for live email identity",
8175
+ contractAction: "retain_as_snapshot",
8176
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
8177
+ },
8178
+ phone: {
8179
+ field: "phone",
8180
+ role: "contextual_snapshot",
8181
+ canonicalSource: "booking_participants.phone for live phone identity",
8182
+ contractAction: "retain_as_snapshot",
8183
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
8184
+ },
8185
+ identity_state: {
8186
+ field: "identity_state",
8187
+ role: "materialization_state",
8188
+ canonicalSource: "booking_participants.identity_state for subject state",
8189
+ contractAction: "review_for_later_contract_cleanup",
8190
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
8191
+ },
8192
+ event_attendee_guest_id: {
8193
+ field: "event_attendee_guest_id",
8194
+ role: "compatibility_projection",
8195
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
8196
+ contractAction: "retain_as_projection",
8197
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
8198
+ }
8199
+ };
8200
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
8201
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
8202
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
8203
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
8204
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
8205
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
8206
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
8207
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
8208
+ ];
8209
+
8091
8210
  // ../media-core/src/aspectTransforms.ts
8092
8211
  function parseAspectRatioValue(value) {
8093
8212
  if (typeof value === "number") {
@@ -2095,6 +2095,63 @@ var ENDPOINT_DEFINITIONS = {
2095
2095
  auth: "user",
2096
2096
  responseKind: "json"
2097
2097
  },
2098
+ updateRegisteredDomainContact: {
2099
+ path: "/domains/{domainId}/registrar/contact",
2100
+ method: "POST",
2101
+ errors: [
2102
+ "validation:invalid_input",
2103
+ "resource:not_found",
2104
+ "auth:forbidden",
2105
+ "external:service_error",
2106
+ "external:registrar_orphaned_contact_profile",
2107
+ "server:internal_error"
2108
+ ],
2109
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2110
+ auth: "user",
2111
+ responseKind: "json"
2112
+ },
2113
+ setRegisteredDomainPrivacy: {
2114
+ path: "/domains/{domainId}/registrar/privacy",
2115
+ method: "POST",
2116
+ errors: [
2117
+ "validation:invalid_input",
2118
+ "resource:not_found",
2119
+ "auth:forbidden",
2120
+ "external:service_error",
2121
+ "server:internal_error"
2122
+ ],
2123
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2124
+ auth: "user",
2125
+ responseKind: "json"
2126
+ },
2127
+ setRegisteredDomainAutoRenew: {
2128
+ path: "/domains/{domainId}/registrar/auto-renew",
2129
+ method: "POST",
2130
+ errors: [
2131
+ "validation:invalid_input",
2132
+ "resource:not_found",
2133
+ "auth:forbidden",
2134
+ "external:service_error",
2135
+ "server:internal_error"
2136
+ ],
2137
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2138
+ auth: "user",
2139
+ responseKind: "json"
2140
+ },
2141
+ getRegisteredDomainRenewalPosture: {
2142
+ path: "/domains/{domainId}/registrar/renewal",
2143
+ method: "GET",
2144
+ errors: [
2145
+ "validation:invalid_input",
2146
+ "resource:not_found",
2147
+ "auth:forbidden",
2148
+ "external:service_error",
2149
+ "server:internal_error"
2150
+ ],
2151
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2152
+ auth: "user",
2153
+ responseKind: "json"
2154
+ },
2098
2155
  retryDomainVercel: {
2099
2156
  path: "/domains/{domainId}/vercel",
2100
2157
  method: "POST",
@@ -6037,6 +6094,68 @@ function toLocationCoordinates(value) {
6037
6094
  };
6038
6095
  }
6039
6096
 
6097
+ // ../core/src/participant-identity.ts
6098
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
6099
+ participant_id: {
6100
+ field: "participant_id",
6101
+ role: "canonical_link",
6102
+ canonicalSource: "booking_participants.id",
6103
+ contractAction: "tighten_in_839",
6104
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
6105
+ },
6106
+ display_name: {
6107
+ field: "display_name",
6108
+ role: "contextual_snapshot",
6109
+ canonicalSource: "booking_participants.display_name for live identity",
6110
+ contractAction: "retain_as_snapshot",
6111
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
6112
+ },
6113
+ email: {
6114
+ field: "email",
6115
+ role: "contextual_snapshot",
6116
+ canonicalSource: "booking_participants.email_normalized for live email identity",
6117
+ contractAction: "retain_as_snapshot",
6118
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
6119
+ },
6120
+ email_normalized: {
6121
+ field: "email_normalized",
6122
+ role: "contextual_snapshot",
6123
+ canonicalSource: "booking_participants.email_normalized for live email identity",
6124
+ contractAction: "retain_as_snapshot",
6125
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
6126
+ },
6127
+ phone: {
6128
+ field: "phone",
6129
+ role: "contextual_snapshot",
6130
+ canonicalSource: "booking_participants.phone for live phone identity",
6131
+ contractAction: "retain_as_snapshot",
6132
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
6133
+ },
6134
+ identity_state: {
6135
+ field: "identity_state",
6136
+ role: "materialization_state",
6137
+ canonicalSource: "booking_participants.identity_state for subject state",
6138
+ contractAction: "review_for_later_contract_cleanup",
6139
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
6140
+ },
6141
+ event_attendee_guest_id: {
6142
+ field: "event_attendee_guest_id",
6143
+ role: "compatibility_projection",
6144
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
6145
+ contractAction: "retain_as_projection",
6146
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
6147
+ }
6148
+ };
6149
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
6150
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
6151
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
6152
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
6153
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
6154
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
6155
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
6156
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
6157
+ ];
6158
+
6040
6159
  // ../media-core/src/typeGuards.ts
6041
6160
  function isRecord(value) {
6042
6161
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
@@ -53889,7 +54008,7 @@ var SimpleCache = class {
53889
54008
  };
53890
54009
 
53891
54010
  // src/version.ts
53892
- var SDK_VERSION = "0.60.11";
54011
+ var SDK_VERSION = "0.60.12";
53893
54012
 
53894
54013
  // src/client/error.ts
53895
54014
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -69,6 +69,68 @@ function toLocationCoordinates(value) {
69
69
  };
70
70
  }
71
71
 
72
+ // ../core/src/participant-identity.ts
73
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
74
+ participant_id: {
75
+ field: "participant_id",
76
+ role: "canonical_link",
77
+ canonicalSource: "booking_participants.id",
78
+ contractAction: "tighten_in_839",
79
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
80
+ },
81
+ display_name: {
82
+ field: "display_name",
83
+ role: "contextual_snapshot",
84
+ canonicalSource: "booking_participants.display_name for live identity",
85
+ contractAction: "retain_as_snapshot",
86
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
87
+ },
88
+ email: {
89
+ field: "email",
90
+ role: "contextual_snapshot",
91
+ canonicalSource: "booking_participants.email_normalized for live email identity",
92
+ contractAction: "retain_as_snapshot",
93
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
94
+ },
95
+ email_normalized: {
96
+ field: "email_normalized",
97
+ role: "contextual_snapshot",
98
+ canonicalSource: "booking_participants.email_normalized for live email identity",
99
+ contractAction: "retain_as_snapshot",
100
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
101
+ },
102
+ phone: {
103
+ field: "phone",
104
+ role: "contextual_snapshot",
105
+ canonicalSource: "booking_participants.phone for live phone identity",
106
+ contractAction: "retain_as_snapshot",
107
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
108
+ },
109
+ identity_state: {
110
+ field: "identity_state",
111
+ role: "materialization_state",
112
+ canonicalSource: "booking_participants.identity_state for subject state",
113
+ contractAction: "review_for_later_contract_cleanup",
114
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
115
+ },
116
+ event_attendee_guest_id: {
117
+ field: "event_attendee_guest_id",
118
+ role: "compatibility_projection",
119
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
120
+ contractAction: "retain_as_projection",
121
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
122
+ }
123
+ };
124
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
125
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
126
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
127
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
128
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
129
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
130
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
131
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
132
+ ];
133
+
72
134
  // ../media-core/src/aspectTransforms.ts
73
135
  function parseAspectRatioValue(value) {
74
136
  if (typeof value === "number") {
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.60.11";
7
+ var SDK_VERSION = "0.60.12";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;
@@ -368,6 +368,68 @@ function toLocationCoordinates(value) {
368
368
  };
369
369
  }
370
370
 
371
+ // ../core/src/participant-identity.ts
372
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
373
+ participant_id: {
374
+ field: "participant_id",
375
+ role: "canonical_link",
376
+ canonicalSource: "booking_participants.id",
377
+ contractAction: "tighten_in_839",
378
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
379
+ },
380
+ display_name: {
381
+ field: "display_name",
382
+ role: "contextual_snapshot",
383
+ canonicalSource: "booking_participants.display_name for live identity",
384
+ contractAction: "retain_as_snapshot",
385
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
386
+ },
387
+ email: {
388
+ field: "email",
389
+ role: "contextual_snapshot",
390
+ canonicalSource: "booking_participants.email_normalized for live email identity",
391
+ contractAction: "retain_as_snapshot",
392
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
393
+ },
394
+ email_normalized: {
395
+ field: "email_normalized",
396
+ role: "contextual_snapshot",
397
+ canonicalSource: "booking_participants.email_normalized for live email identity",
398
+ contractAction: "retain_as_snapshot",
399
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
400
+ },
401
+ phone: {
402
+ field: "phone",
403
+ role: "contextual_snapshot",
404
+ canonicalSource: "booking_participants.phone for live phone identity",
405
+ contractAction: "retain_as_snapshot",
406
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
407
+ },
408
+ identity_state: {
409
+ field: "identity_state",
410
+ role: "materialization_state",
411
+ canonicalSource: "booking_participants.identity_state for subject state",
412
+ contractAction: "review_for_later_contract_cleanup",
413
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
414
+ },
415
+ event_attendee_guest_id: {
416
+ field: "event_attendee_guest_id",
417
+ role: "compatibility_projection",
418
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
419
+ contractAction: "retain_as_projection",
420
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
421
+ }
422
+ };
423
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
424
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
425
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
426
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
427
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
428
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
429
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
430
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
431
+ ];
432
+
371
433
  // ../media-core/src/typeGuards.ts
372
434
  function isRecord(value) {
373
435
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
@@ -49034,6 +49096,63 @@ var ENDPOINT_DEFINITIONS = {
49034
49096
  auth: "user",
49035
49097
  responseKind: "json"
49036
49098
  },
49099
+ updateRegisteredDomainContact: {
49100
+ path: "/domains/{domainId}/registrar/contact",
49101
+ method: "POST",
49102
+ errors: [
49103
+ "validation:invalid_input",
49104
+ "resource:not_found",
49105
+ "auth:forbidden",
49106
+ "external:service_error",
49107
+ "external:registrar_orphaned_contact_profile",
49108
+ "server:internal_error"
49109
+ ],
49110
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49111
+ auth: "user",
49112
+ responseKind: "json"
49113
+ },
49114
+ setRegisteredDomainPrivacy: {
49115
+ path: "/domains/{domainId}/registrar/privacy",
49116
+ method: "POST",
49117
+ errors: [
49118
+ "validation:invalid_input",
49119
+ "resource:not_found",
49120
+ "auth:forbidden",
49121
+ "external:service_error",
49122
+ "server:internal_error"
49123
+ ],
49124
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49125
+ auth: "user",
49126
+ responseKind: "json"
49127
+ },
49128
+ setRegisteredDomainAutoRenew: {
49129
+ path: "/domains/{domainId}/registrar/auto-renew",
49130
+ method: "POST",
49131
+ errors: [
49132
+ "validation:invalid_input",
49133
+ "resource:not_found",
49134
+ "auth:forbidden",
49135
+ "external:service_error",
49136
+ "server:internal_error"
49137
+ ],
49138
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49139
+ auth: "user",
49140
+ responseKind: "json"
49141
+ },
49142
+ getRegisteredDomainRenewalPosture: {
49143
+ path: "/domains/{domainId}/registrar/renewal",
49144
+ method: "GET",
49145
+ errors: [
49146
+ "validation:invalid_input",
49147
+ "resource:not_found",
49148
+ "auth:forbidden",
49149
+ "external:service_error",
49150
+ "server:internal_error"
49151
+ ],
49152
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49153
+ auth: "user",
49154
+ responseKind: "json"
49155
+ },
49037
49156
  retryDomainVercel: {
49038
49157
  path: "/domains/{domainId}/vercel",
49039
49158
  method: "POST",
@@ -371,6 +371,68 @@ function toLocationCoordinates(value) {
371
371
  };
372
372
  }
373
373
 
374
+ // ../core/src/participant-identity.ts
375
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
376
+ participant_id: {
377
+ field: "participant_id",
378
+ role: "canonical_link",
379
+ canonicalSource: "booking_participants.id",
380
+ contractAction: "tighten_in_839",
381
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
382
+ },
383
+ display_name: {
384
+ field: "display_name",
385
+ role: "contextual_snapshot",
386
+ canonicalSource: "booking_participants.display_name for live identity",
387
+ contractAction: "retain_as_snapshot",
388
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
389
+ },
390
+ email: {
391
+ field: "email",
392
+ role: "contextual_snapshot",
393
+ canonicalSource: "booking_participants.email_normalized for live email identity",
394
+ contractAction: "retain_as_snapshot",
395
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
396
+ },
397
+ email_normalized: {
398
+ field: "email_normalized",
399
+ role: "contextual_snapshot",
400
+ canonicalSource: "booking_participants.email_normalized for live email identity",
401
+ contractAction: "retain_as_snapshot",
402
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
403
+ },
404
+ phone: {
405
+ field: "phone",
406
+ role: "contextual_snapshot",
407
+ canonicalSource: "booking_participants.phone for live phone identity",
408
+ contractAction: "retain_as_snapshot",
409
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
410
+ },
411
+ identity_state: {
412
+ field: "identity_state",
413
+ role: "materialization_state",
414
+ canonicalSource: "booking_participants.identity_state for subject state",
415
+ contractAction: "review_for_later_contract_cleanup",
416
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
417
+ },
418
+ event_attendee_guest_id: {
419
+ field: "event_attendee_guest_id",
420
+ role: "compatibility_projection",
421
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
422
+ contractAction: "retain_as_projection",
423
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
424
+ }
425
+ };
426
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
427
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
428
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
429
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
430
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
431
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
432
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
433
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
434
+ ];
435
+
374
436
  // ../media-core/src/typeGuards.ts
375
437
  function isRecord(value) {
376
438
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
@@ -49056,6 +49118,63 @@ var ENDPOINT_DEFINITIONS = {
49056
49118
  auth: "user",
49057
49119
  responseKind: "json"
49058
49120
  },
49121
+ updateRegisteredDomainContact: {
49122
+ path: "/domains/{domainId}/registrar/contact",
49123
+ method: "POST",
49124
+ errors: [
49125
+ "validation:invalid_input",
49126
+ "resource:not_found",
49127
+ "auth:forbidden",
49128
+ "external:service_error",
49129
+ "external:registrar_orphaned_contact_profile",
49130
+ "server:internal_error"
49131
+ ],
49132
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49133
+ auth: "user",
49134
+ responseKind: "json"
49135
+ },
49136
+ setRegisteredDomainPrivacy: {
49137
+ path: "/domains/{domainId}/registrar/privacy",
49138
+ method: "POST",
49139
+ errors: [
49140
+ "validation:invalid_input",
49141
+ "resource:not_found",
49142
+ "auth:forbidden",
49143
+ "external:service_error",
49144
+ "server:internal_error"
49145
+ ],
49146
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49147
+ auth: "user",
49148
+ responseKind: "json"
49149
+ },
49150
+ setRegisteredDomainAutoRenew: {
49151
+ path: "/domains/{domainId}/registrar/auto-renew",
49152
+ method: "POST",
49153
+ errors: [
49154
+ "validation:invalid_input",
49155
+ "resource:not_found",
49156
+ "auth:forbidden",
49157
+ "external:service_error",
49158
+ "server:internal_error"
49159
+ ],
49160
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49161
+ auth: "user",
49162
+ responseKind: "json"
49163
+ },
49164
+ getRegisteredDomainRenewalPosture: {
49165
+ path: "/domains/{domainId}/registrar/renewal",
49166
+ method: "GET",
49167
+ errors: [
49168
+ "validation:invalid_input",
49169
+ "resource:not_found",
49170
+ "auth:forbidden",
49171
+ "external:service_error",
49172
+ "server:internal_error"
49173
+ ],
49174
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49175
+ auth: "user",
49176
+ responseKind: "json"
49177
+ },
49059
49178
  retryDomainVercel: {
49060
49179
  path: "/domains/{domainId}/vercel",
49061
49180
  method: "POST",