@oxyhq/crowdsource-contracts 0.1.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 (57) hide show
  1. package/README.md +129 -0
  2. package/dist/case-envelope.d.ts +1130 -0
  3. package/dist/case-envelope.d.ts.map +1 -0
  4. package/dist/case-envelope.js +383 -0
  5. package/dist/case-envelope.js.map +1 -0
  6. package/dist/decisions.d.ts +353 -0
  7. package/dist/decisions.d.ts.map +1 -0
  8. package/dist/decisions.js +198 -0
  9. package/dist/decisions.js.map +1 -0
  10. package/dist/index.d.ts +45 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +61 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/json-schema.d.ts +43 -0
  15. package/dist/json-schema.d.ts.map +1 -0
  16. package/dist/json-schema.js +83 -0
  17. package/dist/json-schema.js.map +1 -0
  18. package/dist/policies.d.ts +286 -0
  19. package/dist/policies.d.ts.map +1 -0
  20. package/dist/policies.js +178 -0
  21. package/dist/policies.js.map +1 -0
  22. package/dist/primitives.d.ts +185 -0
  23. package/dist/primitives.d.ts.map +1 -0
  24. package/dist/primitives.js +231 -0
  25. package/dist/primitives.js.map +1 -0
  26. package/dist/reputation-events.d.ts +349 -0
  27. package/dist/reputation-events.d.ts.map +1 -0
  28. package/dist/reputation-events.js +128 -0
  29. package/dist/reputation-events.js.map +1 -0
  30. package/dist/resources.d.ts +484 -0
  31. package/dist/resources.d.ts.map +1 -0
  32. package/dist/resources.js +436 -0
  33. package/dist/resources.js.map +1 -0
  34. package/dist/reviews.d.ts +276 -0
  35. package/dist/reviews.d.ts.map +1 -0
  36. package/dist/reviews.js +144 -0
  37. package/dist/reviews.js.map +1 -0
  38. package/dist/taxonomy.d.ts +266 -0
  39. package/dist/taxonomy.d.ts.map +1 -0
  40. package/dist/taxonomy.js +282 -0
  41. package/dist/taxonomy.js.map +1 -0
  42. package/dist/webhooks.d.ts +604 -0
  43. package/dist/webhooks.d.ts.map +1 -0
  44. package/dist/webhooks.js +192 -0
  45. package/dist/webhooks.js.map +1 -0
  46. package/package.json +56 -0
  47. package/src/case-envelope.ts +433 -0
  48. package/src/decisions.ts +216 -0
  49. package/src/index.ts +45 -0
  50. package/src/json-schema.ts +89 -0
  51. package/src/policies.ts +203 -0
  52. package/src/primitives.ts +283 -0
  53. package/src/reputation-events.ts +144 -0
  54. package/src/resources.ts +489 -0
  55. package/src/reviews.ts +159 -0
  56. package/src/taxonomy.ts +313 -0
  57. package/src/webhooks.ts +215 -0
@@ -0,0 +1,1130 @@
1
+ /**
2
+ * The Case Envelope (§5.1) — the universal content contract.
3
+ *
4
+ * §5 opens by naming the mistake this contract exists to avoid: designing
5
+ * moderation around `post`, `comment`, `room` or `product`. Nothing below knows
6
+ * what a post is. An envelope is resources, relations, pseudonymous principals,
7
+ * allegations, a policy reference and privacy terms; what the material happens
8
+ * to be called in the application that sent it lives in `subject.type`, which
9
+ * is a namespaced label, not a branch in this file.
10
+ *
11
+ * Two rules govern the whole module.
12
+ *
13
+ * **Everything inbound is strict.** An unknown key on an envelope is either a
14
+ * typo — in which case the application believes it sent context that the jury
15
+ * will never see — or a field somebody hopes will reach the reviewer's screen.
16
+ * Both are rejected loudly. §10.11's "unknown fields must not break clients"
17
+ * governs what CrowdSource SENDS; see `decisions.ts` and `webhooks.ts` for the
18
+ * other half of that rule.
19
+ *
20
+ * **References resolve inside the envelope.** §5.5 requires the backend to
21
+ * check that every referenced id exists. That check lives here, in the schema,
22
+ * because it is a property of the document and nothing downstream can restate
23
+ * it as reliably. It is extended past `relations` to every in-envelope
24
+ * reference — `subject.primaryResourceId`, `allegation.resourceIds`,
25
+ * `authorPrincipalRef`, conversation members, listing media and seller, profile
26
+ * avatar — since a dangling id is the same defect wherever it appears.
27
+ */
28
+ import { z } from 'zod';
29
+ /**
30
+ * The contract version carried inside the payload.
31
+ *
32
+ * §10.11 keeps this separate from the `/v1` route version on purpose: the HTTP
33
+ * surface and the document shape evolve at different speeds, and an additive
34
+ * change to either bumps neither.
35
+ */
36
+ export declare const CASE_ENVELOPE_SCHEMA_VERSION = "crowdsource.case.v1";
37
+ export declare const CaseEnvelopeSchemaVersionSchema: z.ZodLiteral<"crowdsource.case.v1">;
38
+ /** §5.4 namespaced subject types. */
39
+ export declare const STANDARD_SUBJECT_TYPES: readonly ["social.post", "social.comment", "chat.message", "chat.conversation", "identity.profile", "commerce.listing", "commerce.review", "forum.thread", "video.live_segment", "document.file", "gaming.username"];
40
+ /**
41
+ * A subject type: one of §5.4's standard types, or an application's own
42
+ * `custom.<organization>.<object_type>`.
43
+ *
44
+ * The custom branch is a pattern rather than an open string so a tenant's
45
+ * private vocabulary is always visibly namespaced and can never collide with a
46
+ * standard type or be mistaken for one.
47
+ */
48
+ export declare const SubjectTypeSchema: z.ZodUnion<readonly [z.ZodEnum<{
49
+ "social.post": "social.post";
50
+ "social.comment": "social.comment";
51
+ "chat.message": "chat.message";
52
+ "chat.conversation": "chat.conversation";
53
+ "identity.profile": "identity.profile";
54
+ "commerce.listing": "commerce.listing";
55
+ "commerce.review": "commerce.review";
56
+ "forum.thread": "forum.thread";
57
+ "video.live_segment": "video.live_segment";
58
+ "document.file": "document.file";
59
+ "gaming.username": "gaming.username";
60
+ }>, z.ZodString]>;
61
+ export type SubjectType = z.infer<typeof SubjectTypeSchema>;
62
+ /** §5.1 / Appendix A `subject`. */
63
+ export declare const CaseSubjectSchema: z.ZodObject<{
64
+ externalId: z.ZodString;
65
+ type: z.ZodUnion<readonly [z.ZodEnum<{
66
+ "social.post": "social.post";
67
+ "social.comment": "social.comment";
68
+ "chat.message": "chat.message";
69
+ "chat.conversation": "chat.conversation";
70
+ "identity.profile": "identity.profile";
71
+ "commerce.listing": "commerce.listing";
72
+ "commerce.review": "commerce.review";
73
+ "forum.thread": "forum.thread";
74
+ "video.live_segment": "video.live_segment";
75
+ "document.file": "document.file";
76
+ "gaming.username": "gaming.username";
77
+ }>, z.ZodString]>;
78
+ primaryResourceId: z.ZodString;
79
+ permalink: z.ZodOptional<z.ZodURL>;
80
+ }, z.core.$strict>;
81
+ export type CaseSubject = z.infer<typeof CaseSubjectSchema>;
82
+ /**
83
+ * §3 principal kinds.
84
+ *
85
+ * The plan defines a principal in prose — "an Oxy user, a local user, an
86
+ * organization, a bot or a federated actor" — and only ever writes `oxy_user`
87
+ * in an example. These are those five in the plan's own order; the tokens are
88
+ * this contract's, the concepts are the plan's.
89
+ */
90
+ export declare const PRINCIPAL_TYPES: readonly ["oxy_user", "local_user", "organization", "bot", "federated_actor"];
91
+ export declare const PrincipalTypeSchema: z.ZodEnum<{
92
+ oxy_user: "oxy_user";
93
+ local_user: "local_user";
94
+ organization: "organization";
95
+ bot: "bot";
96
+ federated_actor: "federated_actor";
97
+ }>;
98
+ export type PrincipalType = z.infer<typeof PrincipalTypeSchema>;
99
+ /**
100
+ * §5.1 `principalBindings` — proof that a pseudonymous ref corresponds to a
101
+ * verifiable identity.
102
+ *
103
+ * `bindingProofId` is REQUIRED for `oxy_user` and optional for every other
104
+ * principal type. That is the "no binding proof, no Oxy Trust effect" invariant
105
+ * made structural at the earliest possible point: an Oxy identity asserted
106
+ * without a proof cannot be expressed. The other four types can never move Oxy
107
+ * reputation anyway — they have no Oxy identity to move — and requiring a proof
108
+ * from them would lock out every tenant whose users are not Oxy users, which is
109
+ * the multi-tenant case this whole product exists for.
110
+ */
111
+ export declare const PrincipalBindingSchema: z.ZodObject<{
112
+ principalRef: z.ZodString;
113
+ type: z.ZodEnum<{
114
+ oxy_user: "oxy_user";
115
+ local_user: "local_user";
116
+ organization: "organization";
117
+ bot: "bot";
118
+ federated_actor: "federated_actor";
119
+ }>;
120
+ externalPrincipalId: z.ZodOptional<z.ZodString>;
121
+ bindingProofId: z.ZodOptional<z.ZodString>;
122
+ boundAt: z.ZodOptional<z.ZodISODateTime>;
123
+ }, z.core.$strict>;
124
+ export type PrincipalBinding = z.infer<typeof PrincipalBindingSchema>;
125
+ /**
126
+ * §5.1 `allegations` — what the reporter claims, not what is true.
127
+ *
128
+ * §9.1 requires the jury to see this as an unverified allegation, and §6.2
129
+ * shows the allegation and the finding diverging as the normal case. Only
130
+ * `code` is required: §5.8's example carries nothing else.
131
+ */
132
+ export declare const AllegationSchema: z.ZodObject<{
133
+ code: z.ZodEnum<{
134
+ "integrity.spam": "integrity.spam";
135
+ "integrity.scam": "integrity.scam";
136
+ "integrity.fraud": "integrity.fraud";
137
+ "integrity.impersonation": "integrity.impersonation";
138
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
139
+ "harassment.insult": "harassment.insult";
140
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
141
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
142
+ "harassment.doxxing": "harassment.doxxing";
143
+ "harassment.credible_threat": "harassment.credible_threat";
144
+ "hate.dehumanization": "hate.dehumanization";
145
+ "hate.slur": "hate.slur";
146
+ "hate.incitement": "hate.incitement";
147
+ "hate.protected_targeting": "hate.protected_targeting";
148
+ "violence.graphic": "violence.graphic";
149
+ "violence.threat": "violence.threat";
150
+ "violence.instruction": "violence.instruction";
151
+ "violence.celebration": "violence.celebration";
152
+ "sexual_content.nudity": "sexual_content.nudity";
153
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
154
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
155
+ "sexual_content.exploitation": "sexual_content.exploitation";
156
+ "child_safety.sexualization": "child_safety.sexualization";
157
+ "child_safety.grooming": "child_safety.grooming";
158
+ "child_safety.exploitation": "child_safety.exploitation";
159
+ "self_harm.promotion": "self_harm.promotion";
160
+ "self_harm.instruction": "self_harm.instruction";
161
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
162
+ "privacy.personal_information": "privacy.personal_information";
163
+ "privacy.intimate_media": "privacy.intimate_media";
164
+ "privacy.location_exposure": "privacy.location_exposure";
165
+ "commerce.prohibited_item": "commerce.prohibited_item";
166
+ "commerce.counterfeit": "commerce.counterfeit";
167
+ "commerce.misleading_listing": "commerce.misleading_listing";
168
+ "commerce.unsafe_product": "commerce.unsafe_product";
169
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
170
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
171
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
172
+ "other.policy_specific": "other.policy_specific";
173
+ "other.unclassifiable": "other.unclassifiable";
174
+ }>;
175
+ resourceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
176
+ reporterPrincipalRef: z.ZodOptional<z.ZodString>;
177
+ details: z.ZodOptional<z.ZodString>;
178
+ }, z.core.$strict>;
179
+ export type Allegation = z.infer<typeof AllegationSchema>;
180
+ /**
181
+ * The environment the report came from, as the APPLICATION sees it.
182
+ *
183
+ * `staging` is deliberately absent. The plan's §12.4 three-environment model is
184
+ * not what this ecosystem runs — CrowdSource has one deployment, and
185
+ * tenant-facing sandboxing is an application-trust state inside it. A report
186
+ * from a tenant's own pre-production is a sandbox report or it is a real one.
187
+ */
188
+ export declare const SOURCE_ENVIRONMENTS: readonly ["production", "sandbox"];
189
+ export declare const SourceEnvironmentSchema: z.ZodEnum<{
190
+ production: "production";
191
+ sandbox: "sandbox";
192
+ }>;
193
+ /** Appendix A `source`. */
194
+ export declare const CaseSourceSchema: z.ZodObject<{
195
+ environment: z.ZodEnum<{
196
+ production: "production";
197
+ sandbox: "sandbox";
198
+ }>;
199
+ submittedAt: z.ZodISODateTime;
200
+ }, z.core.$strict>;
201
+ export type CaseSource = z.infer<typeof CaseSourceSchema>;
202
+ /** §5.1 / Appendix A `privacy`. */
203
+ export declare const CasePrivacySchema: z.ZodObject<{
204
+ retentionDays: z.ZodNumber;
205
+ allowCommunityReview: z.ZodBoolean;
206
+ containsPersonalData: z.ZodOptional<z.ZodBoolean>;
207
+ sensitivityHint: z.ZodOptional<z.ZodString>;
208
+ }, z.core.$strict>;
209
+ export type CasePrivacy = z.infer<typeof CasePrivacySchema>;
210
+ /**
211
+ * §5.1 / Appendix A `urgency` — an input to triage, never to a verdict.
212
+ *
213
+ * `hint` stays an open lowercase token for the same reason as
214
+ * `sensitivityHint`: the plan names exactly one value (`normal`) and §7.4 makes
215
+ * clear the authoritative priority is computed server-side from several
216
+ * signals, of which this is one. Closing the list is a product decision that
217
+ * has not been made.
218
+ */
219
+ export declare const CaseUrgencySchema: z.ZodObject<{
220
+ hint: z.ZodString;
221
+ reach: z.ZodOptional<z.ZodNumber>;
222
+ activeDistribution: z.ZodOptional<z.ZodBoolean>;
223
+ }, z.core.$strict>;
224
+ export type CaseUrgency = z.infer<typeof CaseUrgencySchema>;
225
+ /**
226
+ * The Case Envelope.
227
+ *
228
+ * `principalBindings`, `resources`, `relations` and `allegations` are all
229
+ * required keys, matching §5.1's declared root structure and both worked
230
+ * examples; `resources` and `allegations` additionally require at least one
231
+ * entry, because an envelope with nothing to look at or no claim to evaluate is
232
+ * not a case. `source`, `urgency` and `metadata` are optional — §5.8 omits all
233
+ * three, Appendix A carries all three.
234
+ */
235
+ export declare const CaseEnvelopeSchema: z.ZodObject<{
236
+ schemaVersion: z.ZodLiteral<"crowdsource.case.v1">;
237
+ applicationId: z.ZodString;
238
+ externalReportId: z.ZodString;
239
+ source: z.ZodOptional<z.ZodObject<{
240
+ environment: z.ZodEnum<{
241
+ production: "production";
242
+ sandbox: "sandbox";
243
+ }>;
244
+ submittedAt: z.ZodISODateTime;
245
+ }, z.core.$strict>>;
246
+ subject: z.ZodObject<{
247
+ externalId: z.ZodString;
248
+ type: z.ZodUnion<readonly [z.ZodEnum<{
249
+ "social.post": "social.post";
250
+ "social.comment": "social.comment";
251
+ "chat.message": "chat.message";
252
+ "chat.conversation": "chat.conversation";
253
+ "identity.profile": "identity.profile";
254
+ "commerce.listing": "commerce.listing";
255
+ "commerce.review": "commerce.review";
256
+ "forum.thread": "forum.thread";
257
+ "video.live_segment": "video.live_segment";
258
+ "document.file": "document.file";
259
+ "gaming.username": "gaming.username";
260
+ }>, z.ZodString]>;
261
+ primaryResourceId: z.ZodString;
262
+ permalink: z.ZodOptional<z.ZodURL>;
263
+ }, z.core.$strict>;
264
+ principalBindings: z.ZodArray<z.ZodObject<{
265
+ principalRef: z.ZodString;
266
+ type: z.ZodEnum<{
267
+ oxy_user: "oxy_user";
268
+ local_user: "local_user";
269
+ organization: "organization";
270
+ bot: "bot";
271
+ federated_actor: "federated_actor";
272
+ }>;
273
+ externalPrincipalId: z.ZodOptional<z.ZodString>;
274
+ bindingProofId: z.ZodOptional<z.ZodString>;
275
+ boundAt: z.ZodOptional<z.ZodISODateTime>;
276
+ }, z.core.$strict>>;
277
+ resources: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
278
+ type: z.ZodLiteral<"text">;
279
+ data: z.ZodObject<{
280
+ text: z.ZodString;
281
+ formatting: z.ZodOptional<z.ZodEnum<{
282
+ plain: "plain";
283
+ markdown_subset: "markdown_subset";
284
+ }>>;
285
+ }, z.core.$strict>;
286
+ sha256: z.ZodString;
287
+ id: z.ZodString;
288
+ role: z.ZodEnum<{
289
+ metadata: "metadata";
290
+ subject: "subject";
291
+ attachment: "attachment";
292
+ context: "context";
293
+ parent: "parent";
294
+ quoted: "quoted";
295
+ evidence: "evidence";
296
+ policy_context: "policy_context";
297
+ }>;
298
+ language: z.ZodOptional<z.ZodString>;
299
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
300
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
301
+ sensitivity: z.ZodOptional<z.ZodString>;
302
+ }, z.core.$strict>, z.ZodObject<{
303
+ type: z.ZodLiteral<"image">;
304
+ asset: z.ZodObject<{
305
+ uploadId: z.ZodOptional<z.ZodString>;
306
+ url: z.ZodOptional<z.ZodURL>;
307
+ mimeType: z.ZodString;
308
+ sha256: z.ZodString;
309
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
310
+ width: z.ZodOptional<z.ZodNumber>;
311
+ height: z.ZodOptional<z.ZodNumber>;
312
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
313
+ }, z.core.$strict>;
314
+ sha256: z.ZodOptional<z.ZodString>;
315
+ id: z.ZodString;
316
+ role: z.ZodEnum<{
317
+ metadata: "metadata";
318
+ subject: "subject";
319
+ attachment: "attachment";
320
+ context: "context";
321
+ parent: "parent";
322
+ quoted: "quoted";
323
+ evidence: "evidence";
324
+ policy_context: "policy_context";
325
+ }>;
326
+ language: z.ZodOptional<z.ZodString>;
327
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
328
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
329
+ sensitivity: z.ZodOptional<z.ZodString>;
330
+ }, z.core.$strict>, z.ZodObject<{
331
+ type: z.ZodLiteral<"video">;
332
+ asset: z.ZodObject<{
333
+ uploadId: z.ZodOptional<z.ZodString>;
334
+ url: z.ZodOptional<z.ZodURL>;
335
+ mimeType: z.ZodString;
336
+ sha256: z.ZodString;
337
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
338
+ width: z.ZodOptional<z.ZodNumber>;
339
+ height: z.ZodOptional<z.ZodNumber>;
340
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
341
+ }, z.core.$strict>;
342
+ data: z.ZodOptional<z.ZodObject<{
343
+ timeRange: z.ZodOptional<z.ZodObject<{
344
+ startSeconds: z.ZodNumber;
345
+ endSeconds: z.ZodNumber;
346
+ }, z.core.$strict>>;
347
+ }, z.core.$strict>>;
348
+ sha256: z.ZodOptional<z.ZodString>;
349
+ id: z.ZodString;
350
+ role: z.ZodEnum<{
351
+ metadata: "metadata";
352
+ subject: "subject";
353
+ attachment: "attachment";
354
+ context: "context";
355
+ parent: "parent";
356
+ quoted: "quoted";
357
+ evidence: "evidence";
358
+ policy_context: "policy_context";
359
+ }>;
360
+ language: z.ZodOptional<z.ZodString>;
361
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
362
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
363
+ sensitivity: z.ZodOptional<z.ZodString>;
364
+ }, z.core.$strict>, z.ZodObject<{
365
+ type: z.ZodLiteral<"audio">;
366
+ asset: z.ZodObject<{
367
+ uploadId: z.ZodOptional<z.ZodString>;
368
+ url: z.ZodOptional<z.ZodURL>;
369
+ mimeType: z.ZodString;
370
+ sha256: z.ZodString;
371
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
372
+ width: z.ZodOptional<z.ZodNumber>;
373
+ height: z.ZodOptional<z.ZodNumber>;
374
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
375
+ }, z.core.$strict>;
376
+ data: z.ZodOptional<z.ZodObject<{
377
+ transcript: z.ZodOptional<z.ZodString>;
378
+ }, z.core.$strict>>;
379
+ sha256: z.ZodOptional<z.ZodString>;
380
+ id: z.ZodString;
381
+ role: z.ZodEnum<{
382
+ metadata: "metadata";
383
+ subject: "subject";
384
+ attachment: "attachment";
385
+ context: "context";
386
+ parent: "parent";
387
+ quoted: "quoted";
388
+ evidence: "evidence";
389
+ policy_context: "policy_context";
390
+ }>;
391
+ language: z.ZodOptional<z.ZodString>;
392
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
393
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
394
+ sensitivity: z.ZodOptional<z.ZodString>;
395
+ }, z.core.$strict>, z.ZodObject<{
396
+ type: z.ZodLiteral<"document">;
397
+ asset: z.ZodObject<{
398
+ uploadId: z.ZodOptional<z.ZodString>;
399
+ url: z.ZodOptional<z.ZodURL>;
400
+ mimeType: z.ZodString;
401
+ sha256: z.ZodString;
402
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
403
+ width: z.ZodOptional<z.ZodNumber>;
404
+ height: z.ZodOptional<z.ZodNumber>;
405
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
406
+ }, z.core.$strict>;
407
+ data: z.ZodObject<{
408
+ title: z.ZodString;
409
+ extractedText: z.ZodOptional<z.ZodString>;
410
+ }, z.core.$strict>;
411
+ sha256: z.ZodOptional<z.ZodString>;
412
+ id: z.ZodString;
413
+ role: z.ZodEnum<{
414
+ metadata: "metadata";
415
+ subject: "subject";
416
+ attachment: "attachment";
417
+ context: "context";
418
+ parent: "parent";
419
+ quoted: "quoted";
420
+ evidence: "evidence";
421
+ policy_context: "policy_context";
422
+ }>;
423
+ language: z.ZodOptional<z.ZodString>;
424
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
425
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
426
+ sensitivity: z.ZodOptional<z.ZodString>;
427
+ }, z.core.$strict>, z.ZodObject<{
428
+ type: z.ZodLiteral<"link">;
429
+ data: z.ZodObject<{
430
+ url: z.ZodURL;
431
+ title: z.ZodOptional<z.ZodString>;
432
+ resolvedHost: z.ZodOptional<z.ZodString>;
433
+ snapshot: z.ZodOptional<z.ZodString>;
434
+ }, z.core.$strict>;
435
+ sha256: z.ZodString;
436
+ id: z.ZodString;
437
+ role: z.ZodEnum<{
438
+ metadata: "metadata";
439
+ subject: "subject";
440
+ attachment: "attachment";
441
+ context: "context";
442
+ parent: "parent";
443
+ quoted: "quoted";
444
+ evidence: "evidence";
445
+ policy_context: "policy_context";
446
+ }>;
447
+ language: z.ZodOptional<z.ZodString>;
448
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
449
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
450
+ sensitivity: z.ZodOptional<z.ZodString>;
451
+ }, z.core.$strict>, z.ZodObject<{
452
+ type: z.ZodLiteral<"profile">;
453
+ data: z.ZodObject<{
454
+ displayName: z.ZodOptional<z.ZodString>;
455
+ bio: z.ZodOptional<z.ZodString>;
456
+ avatarRef: z.ZodOptional<z.ZodString>;
457
+ claims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
458
+ }, z.core.$strict>;
459
+ sha256: z.ZodString;
460
+ id: z.ZodString;
461
+ role: z.ZodEnum<{
462
+ metadata: "metadata";
463
+ subject: "subject";
464
+ attachment: "attachment";
465
+ context: "context";
466
+ parent: "parent";
467
+ quoted: "quoted";
468
+ evidence: "evidence";
469
+ policy_context: "policy_context";
470
+ }>;
471
+ language: z.ZodOptional<z.ZodString>;
472
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
473
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
474
+ sensitivity: z.ZodOptional<z.ZodString>;
475
+ }, z.core.$strict>, z.ZodObject<{
476
+ type: z.ZodLiteral<"conversation">;
477
+ data: z.ZodObject<{
478
+ messageResourceIds: z.ZodArray<z.ZodString>;
479
+ }, z.core.$strict>;
480
+ sha256: z.ZodString;
481
+ id: z.ZodString;
482
+ role: z.ZodEnum<{
483
+ metadata: "metadata";
484
+ subject: "subject";
485
+ attachment: "attachment";
486
+ context: "context";
487
+ parent: "parent";
488
+ quoted: "quoted";
489
+ evidence: "evidence";
490
+ policy_context: "policy_context";
491
+ }>;
492
+ language: z.ZodOptional<z.ZodString>;
493
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
494
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
495
+ sensitivity: z.ZodOptional<z.ZodString>;
496
+ }, z.core.$strict>, z.ZodObject<{
497
+ type: z.ZodLiteral<"listing">;
498
+ data: z.ZodObject<{
499
+ title: z.ZodString;
500
+ description: z.ZodOptional<z.ZodString>;
501
+ price: z.ZodOptional<z.ZodNumber>;
502
+ currency: z.ZodOptional<z.ZodString>;
503
+ sellerRef: z.ZodOptional<z.ZodString>;
504
+ mediaRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
505
+ }, z.core.$strict>;
506
+ sha256: z.ZodString;
507
+ id: z.ZodString;
508
+ role: z.ZodEnum<{
509
+ metadata: "metadata";
510
+ subject: "subject";
511
+ attachment: "attachment";
512
+ context: "context";
513
+ parent: "parent";
514
+ quoted: "quoted";
515
+ evidence: "evidence";
516
+ policy_context: "policy_context";
517
+ }>;
518
+ language: z.ZodOptional<z.ZodString>;
519
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
520
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
521
+ sensitivity: z.ZodOptional<z.ZodString>;
522
+ }, z.core.$strict>, z.ZodObject<{
523
+ type: z.ZodLiteral<"location">;
524
+ data: z.ZodObject<{
525
+ label: z.ZodOptional<z.ZodString>;
526
+ latitude: z.ZodOptional<z.ZodNumber>;
527
+ longitude: z.ZodOptional<z.ZodNumber>;
528
+ }, z.core.$strict>;
529
+ sha256: z.ZodString;
530
+ id: z.ZodString;
531
+ role: z.ZodEnum<{
532
+ metadata: "metadata";
533
+ subject: "subject";
534
+ attachment: "attachment";
535
+ context: "context";
536
+ parent: "parent";
537
+ quoted: "quoted";
538
+ evidence: "evidence";
539
+ policy_context: "policy_context";
540
+ }>;
541
+ language: z.ZodOptional<z.ZodString>;
542
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
543
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
544
+ sensitivity: z.ZodOptional<z.ZodString>;
545
+ }, z.core.$strict>, z.ZodObject<{
546
+ type: z.ZodLiteral<"metadata">;
547
+ data: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>;
548
+ sha256: z.ZodString;
549
+ id: z.ZodString;
550
+ role: z.ZodEnum<{
551
+ metadata: "metadata";
552
+ subject: "subject";
553
+ attachment: "attachment";
554
+ context: "context";
555
+ parent: "parent";
556
+ quoted: "quoted";
557
+ evidence: "evidence";
558
+ policy_context: "policy_context";
559
+ }>;
560
+ language: z.ZodOptional<z.ZodString>;
561
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
562
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
563
+ sensitivity: z.ZodOptional<z.ZodString>;
564
+ }, z.core.$strict>, z.ZodObject<{
565
+ type: z.ZodLiteral<"custom">;
566
+ schemaId: z.ZodString;
567
+ payload: z.ZodRecord<z.ZodString, z.ZodType<import("./primitives").CustomPayloadValue, unknown, z.core.$ZodTypeInternals<import("./primitives").CustomPayloadValue, unknown>>>;
568
+ sha256: z.ZodString;
569
+ id: z.ZodString;
570
+ role: z.ZodEnum<{
571
+ metadata: "metadata";
572
+ subject: "subject";
573
+ attachment: "attachment";
574
+ context: "context";
575
+ parent: "parent";
576
+ quoted: "quoted";
577
+ evidence: "evidence";
578
+ policy_context: "policy_context";
579
+ }>;
580
+ language: z.ZodOptional<z.ZodString>;
581
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
582
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
583
+ sensitivity: z.ZodOptional<z.ZodString>;
584
+ }, z.core.$strict>], "type">>;
585
+ relations: z.ZodArray<z.ZodObject<{
586
+ from: z.ZodString;
587
+ type: z.ZodEnum<{
588
+ has_attachment: "has_attachment";
589
+ replies_to: "replies_to";
590
+ quotes: "quotes";
591
+ authored_by: "authored_by";
592
+ contextualizes: "contextualizes";
593
+ previous_version: "previous_version";
594
+ contains: "contains";
595
+ refers_to: "refers_to";
596
+ }>;
597
+ to: z.ZodString;
598
+ }, z.core.$strict>>;
599
+ allegations: z.ZodArray<z.ZodObject<{
600
+ code: z.ZodEnum<{
601
+ "integrity.spam": "integrity.spam";
602
+ "integrity.scam": "integrity.scam";
603
+ "integrity.fraud": "integrity.fraud";
604
+ "integrity.impersonation": "integrity.impersonation";
605
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
606
+ "harassment.insult": "harassment.insult";
607
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
608
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
609
+ "harassment.doxxing": "harassment.doxxing";
610
+ "harassment.credible_threat": "harassment.credible_threat";
611
+ "hate.dehumanization": "hate.dehumanization";
612
+ "hate.slur": "hate.slur";
613
+ "hate.incitement": "hate.incitement";
614
+ "hate.protected_targeting": "hate.protected_targeting";
615
+ "violence.graphic": "violence.graphic";
616
+ "violence.threat": "violence.threat";
617
+ "violence.instruction": "violence.instruction";
618
+ "violence.celebration": "violence.celebration";
619
+ "sexual_content.nudity": "sexual_content.nudity";
620
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
621
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
622
+ "sexual_content.exploitation": "sexual_content.exploitation";
623
+ "child_safety.sexualization": "child_safety.sexualization";
624
+ "child_safety.grooming": "child_safety.grooming";
625
+ "child_safety.exploitation": "child_safety.exploitation";
626
+ "self_harm.promotion": "self_harm.promotion";
627
+ "self_harm.instruction": "self_harm.instruction";
628
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
629
+ "privacy.personal_information": "privacy.personal_information";
630
+ "privacy.intimate_media": "privacy.intimate_media";
631
+ "privacy.location_exposure": "privacy.location_exposure";
632
+ "commerce.prohibited_item": "commerce.prohibited_item";
633
+ "commerce.counterfeit": "commerce.counterfeit";
634
+ "commerce.misleading_listing": "commerce.misleading_listing";
635
+ "commerce.unsafe_product": "commerce.unsafe_product";
636
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
637
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
638
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
639
+ "other.policy_specific": "other.policy_specific";
640
+ "other.unclassifiable": "other.unclassifiable";
641
+ }>;
642
+ resourceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
643
+ reporterPrincipalRef: z.ZodOptional<z.ZodString>;
644
+ details: z.ZodOptional<z.ZodString>;
645
+ }, z.core.$strict>>;
646
+ policy: z.ZodObject<{
647
+ policySetId: z.ZodString;
648
+ version: z.ZodString;
649
+ locale: z.ZodOptional<z.ZodString>;
650
+ }, z.core.$strict>;
651
+ privacy: z.ZodObject<{
652
+ retentionDays: z.ZodNumber;
653
+ allowCommunityReview: z.ZodBoolean;
654
+ containsPersonalData: z.ZodOptional<z.ZodBoolean>;
655
+ sensitivityHint: z.ZodOptional<z.ZodString>;
656
+ }, z.core.$strict>;
657
+ urgency: z.ZodOptional<z.ZodObject<{
658
+ hint: z.ZodString;
659
+ reach: z.ZodOptional<z.ZodNumber>;
660
+ activeDistribution: z.ZodOptional<z.ZodBoolean>;
661
+ }, z.core.$strict>>;
662
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
663
+ }, z.core.$strict>;
664
+ export type CaseEnvelope = z.infer<typeof CaseEnvelopeSchema>;
665
+ /** §3.2 report states. */
666
+ export declare const REPORT_STATUSES: readonly ["received", "merged", "invalid", "withdrawn", "closed"];
667
+ export declare const ReportStatusSchema: z.ZodEnum<{
668
+ received: "received";
669
+ merged: "merged";
670
+ invalid: "invalid";
671
+ withdrawn: "withdrawn";
672
+ closed: "closed";
673
+ }>;
674
+ export type ReportStatus = z.infer<typeof ReportStatusSchema>;
675
+ /**
676
+ * `POST /v1/reports` (§10.4).
677
+ *
678
+ * The request repeats `externalReportId` outside the envelope, so the two must
679
+ * agree — a mismatch means the idempotency key and the document disagree about
680
+ * which report this is, and §12.7's `application_id + external_report_id`
681
+ * uniqueness would then be enforced against the wrong value.
682
+ */
683
+ export declare const CreateReportRequestSchema: z.ZodObject<{
684
+ externalReportId: z.ZodString;
685
+ envelope: z.ZodObject<{
686
+ schemaVersion: z.ZodLiteral<"crowdsource.case.v1">;
687
+ applicationId: z.ZodString;
688
+ externalReportId: z.ZodString;
689
+ source: z.ZodOptional<z.ZodObject<{
690
+ environment: z.ZodEnum<{
691
+ production: "production";
692
+ sandbox: "sandbox";
693
+ }>;
694
+ submittedAt: z.ZodISODateTime;
695
+ }, z.core.$strict>>;
696
+ subject: z.ZodObject<{
697
+ externalId: z.ZodString;
698
+ type: z.ZodUnion<readonly [z.ZodEnum<{
699
+ "social.post": "social.post";
700
+ "social.comment": "social.comment";
701
+ "chat.message": "chat.message";
702
+ "chat.conversation": "chat.conversation";
703
+ "identity.profile": "identity.profile";
704
+ "commerce.listing": "commerce.listing";
705
+ "commerce.review": "commerce.review";
706
+ "forum.thread": "forum.thread";
707
+ "video.live_segment": "video.live_segment";
708
+ "document.file": "document.file";
709
+ "gaming.username": "gaming.username";
710
+ }>, z.ZodString]>;
711
+ primaryResourceId: z.ZodString;
712
+ permalink: z.ZodOptional<z.ZodURL>;
713
+ }, z.core.$strict>;
714
+ principalBindings: z.ZodArray<z.ZodObject<{
715
+ principalRef: z.ZodString;
716
+ type: z.ZodEnum<{
717
+ oxy_user: "oxy_user";
718
+ local_user: "local_user";
719
+ organization: "organization";
720
+ bot: "bot";
721
+ federated_actor: "federated_actor";
722
+ }>;
723
+ externalPrincipalId: z.ZodOptional<z.ZodString>;
724
+ bindingProofId: z.ZodOptional<z.ZodString>;
725
+ boundAt: z.ZodOptional<z.ZodISODateTime>;
726
+ }, z.core.$strict>>;
727
+ resources: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
728
+ type: z.ZodLiteral<"text">;
729
+ data: z.ZodObject<{
730
+ text: z.ZodString;
731
+ formatting: z.ZodOptional<z.ZodEnum<{
732
+ plain: "plain";
733
+ markdown_subset: "markdown_subset";
734
+ }>>;
735
+ }, z.core.$strict>;
736
+ sha256: z.ZodString;
737
+ id: z.ZodString;
738
+ role: z.ZodEnum<{
739
+ metadata: "metadata";
740
+ subject: "subject";
741
+ attachment: "attachment";
742
+ context: "context";
743
+ parent: "parent";
744
+ quoted: "quoted";
745
+ evidence: "evidence";
746
+ policy_context: "policy_context";
747
+ }>;
748
+ language: z.ZodOptional<z.ZodString>;
749
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
750
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
751
+ sensitivity: z.ZodOptional<z.ZodString>;
752
+ }, z.core.$strict>, z.ZodObject<{
753
+ type: z.ZodLiteral<"image">;
754
+ asset: z.ZodObject<{
755
+ uploadId: z.ZodOptional<z.ZodString>;
756
+ url: z.ZodOptional<z.ZodURL>;
757
+ mimeType: z.ZodString;
758
+ sha256: z.ZodString;
759
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
760
+ width: z.ZodOptional<z.ZodNumber>;
761
+ height: z.ZodOptional<z.ZodNumber>;
762
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
763
+ }, z.core.$strict>;
764
+ sha256: z.ZodOptional<z.ZodString>;
765
+ id: z.ZodString;
766
+ role: z.ZodEnum<{
767
+ metadata: "metadata";
768
+ subject: "subject";
769
+ attachment: "attachment";
770
+ context: "context";
771
+ parent: "parent";
772
+ quoted: "quoted";
773
+ evidence: "evidence";
774
+ policy_context: "policy_context";
775
+ }>;
776
+ language: z.ZodOptional<z.ZodString>;
777
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
778
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
779
+ sensitivity: z.ZodOptional<z.ZodString>;
780
+ }, z.core.$strict>, z.ZodObject<{
781
+ type: z.ZodLiteral<"video">;
782
+ asset: z.ZodObject<{
783
+ uploadId: z.ZodOptional<z.ZodString>;
784
+ url: z.ZodOptional<z.ZodURL>;
785
+ mimeType: z.ZodString;
786
+ sha256: z.ZodString;
787
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
788
+ width: z.ZodOptional<z.ZodNumber>;
789
+ height: z.ZodOptional<z.ZodNumber>;
790
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
791
+ }, z.core.$strict>;
792
+ data: z.ZodOptional<z.ZodObject<{
793
+ timeRange: z.ZodOptional<z.ZodObject<{
794
+ startSeconds: z.ZodNumber;
795
+ endSeconds: z.ZodNumber;
796
+ }, z.core.$strict>>;
797
+ }, z.core.$strict>>;
798
+ sha256: z.ZodOptional<z.ZodString>;
799
+ id: z.ZodString;
800
+ role: z.ZodEnum<{
801
+ metadata: "metadata";
802
+ subject: "subject";
803
+ attachment: "attachment";
804
+ context: "context";
805
+ parent: "parent";
806
+ quoted: "quoted";
807
+ evidence: "evidence";
808
+ policy_context: "policy_context";
809
+ }>;
810
+ language: z.ZodOptional<z.ZodString>;
811
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
812
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
813
+ sensitivity: z.ZodOptional<z.ZodString>;
814
+ }, z.core.$strict>, z.ZodObject<{
815
+ type: z.ZodLiteral<"audio">;
816
+ asset: z.ZodObject<{
817
+ uploadId: z.ZodOptional<z.ZodString>;
818
+ url: z.ZodOptional<z.ZodURL>;
819
+ mimeType: z.ZodString;
820
+ sha256: z.ZodString;
821
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
822
+ width: z.ZodOptional<z.ZodNumber>;
823
+ height: z.ZodOptional<z.ZodNumber>;
824
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
825
+ }, z.core.$strict>;
826
+ data: z.ZodOptional<z.ZodObject<{
827
+ transcript: z.ZodOptional<z.ZodString>;
828
+ }, z.core.$strict>>;
829
+ sha256: z.ZodOptional<z.ZodString>;
830
+ id: z.ZodString;
831
+ role: z.ZodEnum<{
832
+ metadata: "metadata";
833
+ subject: "subject";
834
+ attachment: "attachment";
835
+ context: "context";
836
+ parent: "parent";
837
+ quoted: "quoted";
838
+ evidence: "evidence";
839
+ policy_context: "policy_context";
840
+ }>;
841
+ language: z.ZodOptional<z.ZodString>;
842
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
843
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
844
+ sensitivity: z.ZodOptional<z.ZodString>;
845
+ }, z.core.$strict>, z.ZodObject<{
846
+ type: z.ZodLiteral<"document">;
847
+ asset: z.ZodObject<{
848
+ uploadId: z.ZodOptional<z.ZodString>;
849
+ url: z.ZodOptional<z.ZodURL>;
850
+ mimeType: z.ZodString;
851
+ sha256: z.ZodString;
852
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
853
+ width: z.ZodOptional<z.ZodNumber>;
854
+ height: z.ZodOptional<z.ZodNumber>;
855
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
856
+ }, z.core.$strict>;
857
+ data: z.ZodObject<{
858
+ title: z.ZodString;
859
+ extractedText: z.ZodOptional<z.ZodString>;
860
+ }, z.core.$strict>;
861
+ sha256: z.ZodOptional<z.ZodString>;
862
+ id: z.ZodString;
863
+ role: z.ZodEnum<{
864
+ metadata: "metadata";
865
+ subject: "subject";
866
+ attachment: "attachment";
867
+ context: "context";
868
+ parent: "parent";
869
+ quoted: "quoted";
870
+ evidence: "evidence";
871
+ policy_context: "policy_context";
872
+ }>;
873
+ language: z.ZodOptional<z.ZodString>;
874
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
875
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
876
+ sensitivity: z.ZodOptional<z.ZodString>;
877
+ }, z.core.$strict>, z.ZodObject<{
878
+ type: z.ZodLiteral<"link">;
879
+ data: z.ZodObject<{
880
+ url: z.ZodURL;
881
+ title: z.ZodOptional<z.ZodString>;
882
+ resolvedHost: z.ZodOptional<z.ZodString>;
883
+ snapshot: z.ZodOptional<z.ZodString>;
884
+ }, z.core.$strict>;
885
+ sha256: z.ZodString;
886
+ id: z.ZodString;
887
+ role: z.ZodEnum<{
888
+ metadata: "metadata";
889
+ subject: "subject";
890
+ attachment: "attachment";
891
+ context: "context";
892
+ parent: "parent";
893
+ quoted: "quoted";
894
+ evidence: "evidence";
895
+ policy_context: "policy_context";
896
+ }>;
897
+ language: z.ZodOptional<z.ZodString>;
898
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
899
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
900
+ sensitivity: z.ZodOptional<z.ZodString>;
901
+ }, z.core.$strict>, z.ZodObject<{
902
+ type: z.ZodLiteral<"profile">;
903
+ data: z.ZodObject<{
904
+ displayName: z.ZodOptional<z.ZodString>;
905
+ bio: z.ZodOptional<z.ZodString>;
906
+ avatarRef: z.ZodOptional<z.ZodString>;
907
+ claims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
908
+ }, z.core.$strict>;
909
+ sha256: z.ZodString;
910
+ id: z.ZodString;
911
+ role: z.ZodEnum<{
912
+ metadata: "metadata";
913
+ subject: "subject";
914
+ attachment: "attachment";
915
+ context: "context";
916
+ parent: "parent";
917
+ quoted: "quoted";
918
+ evidence: "evidence";
919
+ policy_context: "policy_context";
920
+ }>;
921
+ language: z.ZodOptional<z.ZodString>;
922
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
923
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
924
+ sensitivity: z.ZodOptional<z.ZodString>;
925
+ }, z.core.$strict>, z.ZodObject<{
926
+ type: z.ZodLiteral<"conversation">;
927
+ data: z.ZodObject<{
928
+ messageResourceIds: z.ZodArray<z.ZodString>;
929
+ }, z.core.$strict>;
930
+ sha256: z.ZodString;
931
+ id: z.ZodString;
932
+ role: z.ZodEnum<{
933
+ metadata: "metadata";
934
+ subject: "subject";
935
+ attachment: "attachment";
936
+ context: "context";
937
+ parent: "parent";
938
+ quoted: "quoted";
939
+ evidence: "evidence";
940
+ policy_context: "policy_context";
941
+ }>;
942
+ language: z.ZodOptional<z.ZodString>;
943
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
944
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
945
+ sensitivity: z.ZodOptional<z.ZodString>;
946
+ }, z.core.$strict>, z.ZodObject<{
947
+ type: z.ZodLiteral<"listing">;
948
+ data: z.ZodObject<{
949
+ title: z.ZodString;
950
+ description: z.ZodOptional<z.ZodString>;
951
+ price: z.ZodOptional<z.ZodNumber>;
952
+ currency: z.ZodOptional<z.ZodString>;
953
+ sellerRef: z.ZodOptional<z.ZodString>;
954
+ mediaRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
955
+ }, z.core.$strict>;
956
+ sha256: z.ZodString;
957
+ id: z.ZodString;
958
+ role: z.ZodEnum<{
959
+ metadata: "metadata";
960
+ subject: "subject";
961
+ attachment: "attachment";
962
+ context: "context";
963
+ parent: "parent";
964
+ quoted: "quoted";
965
+ evidence: "evidence";
966
+ policy_context: "policy_context";
967
+ }>;
968
+ language: z.ZodOptional<z.ZodString>;
969
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
970
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
971
+ sensitivity: z.ZodOptional<z.ZodString>;
972
+ }, z.core.$strict>, z.ZodObject<{
973
+ type: z.ZodLiteral<"location">;
974
+ data: z.ZodObject<{
975
+ label: z.ZodOptional<z.ZodString>;
976
+ latitude: z.ZodOptional<z.ZodNumber>;
977
+ longitude: z.ZodOptional<z.ZodNumber>;
978
+ }, z.core.$strict>;
979
+ sha256: z.ZodString;
980
+ id: z.ZodString;
981
+ role: z.ZodEnum<{
982
+ metadata: "metadata";
983
+ subject: "subject";
984
+ attachment: "attachment";
985
+ context: "context";
986
+ parent: "parent";
987
+ quoted: "quoted";
988
+ evidence: "evidence";
989
+ policy_context: "policy_context";
990
+ }>;
991
+ language: z.ZodOptional<z.ZodString>;
992
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
993
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
994
+ sensitivity: z.ZodOptional<z.ZodString>;
995
+ }, z.core.$strict>, z.ZodObject<{
996
+ type: z.ZodLiteral<"metadata">;
997
+ data: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>;
998
+ sha256: z.ZodString;
999
+ id: z.ZodString;
1000
+ role: z.ZodEnum<{
1001
+ metadata: "metadata";
1002
+ subject: "subject";
1003
+ attachment: "attachment";
1004
+ context: "context";
1005
+ parent: "parent";
1006
+ quoted: "quoted";
1007
+ evidence: "evidence";
1008
+ policy_context: "policy_context";
1009
+ }>;
1010
+ language: z.ZodOptional<z.ZodString>;
1011
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1012
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1013
+ sensitivity: z.ZodOptional<z.ZodString>;
1014
+ }, z.core.$strict>, z.ZodObject<{
1015
+ type: z.ZodLiteral<"custom">;
1016
+ schemaId: z.ZodString;
1017
+ payload: z.ZodRecord<z.ZodString, z.ZodType<import("./primitives").CustomPayloadValue, unknown, z.core.$ZodTypeInternals<import("./primitives").CustomPayloadValue, unknown>>>;
1018
+ sha256: z.ZodString;
1019
+ id: z.ZodString;
1020
+ role: z.ZodEnum<{
1021
+ metadata: "metadata";
1022
+ subject: "subject";
1023
+ attachment: "attachment";
1024
+ context: "context";
1025
+ parent: "parent";
1026
+ quoted: "quoted";
1027
+ evidence: "evidence";
1028
+ policy_context: "policy_context";
1029
+ }>;
1030
+ language: z.ZodOptional<z.ZodString>;
1031
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1032
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1033
+ sensitivity: z.ZodOptional<z.ZodString>;
1034
+ }, z.core.$strict>], "type">>;
1035
+ relations: z.ZodArray<z.ZodObject<{
1036
+ from: z.ZodString;
1037
+ type: z.ZodEnum<{
1038
+ has_attachment: "has_attachment";
1039
+ replies_to: "replies_to";
1040
+ quotes: "quotes";
1041
+ authored_by: "authored_by";
1042
+ contextualizes: "contextualizes";
1043
+ previous_version: "previous_version";
1044
+ contains: "contains";
1045
+ refers_to: "refers_to";
1046
+ }>;
1047
+ to: z.ZodString;
1048
+ }, z.core.$strict>>;
1049
+ allegations: z.ZodArray<z.ZodObject<{
1050
+ code: z.ZodEnum<{
1051
+ "integrity.spam": "integrity.spam";
1052
+ "integrity.scam": "integrity.scam";
1053
+ "integrity.fraud": "integrity.fraud";
1054
+ "integrity.impersonation": "integrity.impersonation";
1055
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
1056
+ "harassment.insult": "harassment.insult";
1057
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
1058
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
1059
+ "harassment.doxxing": "harassment.doxxing";
1060
+ "harassment.credible_threat": "harassment.credible_threat";
1061
+ "hate.dehumanization": "hate.dehumanization";
1062
+ "hate.slur": "hate.slur";
1063
+ "hate.incitement": "hate.incitement";
1064
+ "hate.protected_targeting": "hate.protected_targeting";
1065
+ "violence.graphic": "violence.graphic";
1066
+ "violence.threat": "violence.threat";
1067
+ "violence.instruction": "violence.instruction";
1068
+ "violence.celebration": "violence.celebration";
1069
+ "sexual_content.nudity": "sexual_content.nudity";
1070
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
1071
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
1072
+ "sexual_content.exploitation": "sexual_content.exploitation";
1073
+ "child_safety.sexualization": "child_safety.sexualization";
1074
+ "child_safety.grooming": "child_safety.grooming";
1075
+ "child_safety.exploitation": "child_safety.exploitation";
1076
+ "self_harm.promotion": "self_harm.promotion";
1077
+ "self_harm.instruction": "self_harm.instruction";
1078
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
1079
+ "privacy.personal_information": "privacy.personal_information";
1080
+ "privacy.intimate_media": "privacy.intimate_media";
1081
+ "privacy.location_exposure": "privacy.location_exposure";
1082
+ "commerce.prohibited_item": "commerce.prohibited_item";
1083
+ "commerce.counterfeit": "commerce.counterfeit";
1084
+ "commerce.misleading_listing": "commerce.misleading_listing";
1085
+ "commerce.unsafe_product": "commerce.unsafe_product";
1086
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
1087
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
1088
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
1089
+ "other.policy_specific": "other.policy_specific";
1090
+ "other.unclassifiable": "other.unclassifiable";
1091
+ }>;
1092
+ resourceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1093
+ reporterPrincipalRef: z.ZodOptional<z.ZodString>;
1094
+ details: z.ZodOptional<z.ZodString>;
1095
+ }, z.core.$strict>>;
1096
+ policy: z.ZodObject<{
1097
+ policySetId: z.ZodString;
1098
+ version: z.ZodString;
1099
+ locale: z.ZodOptional<z.ZodString>;
1100
+ }, z.core.$strict>;
1101
+ privacy: z.ZodObject<{
1102
+ retentionDays: z.ZodNumber;
1103
+ allowCommunityReview: z.ZodBoolean;
1104
+ containsPersonalData: z.ZodOptional<z.ZodBoolean>;
1105
+ sensitivityHint: z.ZodOptional<z.ZodString>;
1106
+ }, z.core.$strict>;
1107
+ urgency: z.ZodOptional<z.ZodObject<{
1108
+ hint: z.ZodString;
1109
+ reach: z.ZodOptional<z.ZodNumber>;
1110
+ activeDistribution: z.ZodOptional<z.ZodBoolean>;
1111
+ }, z.core.$strict>>;
1112
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
1113
+ }, z.core.$strict>;
1114
+ }, z.core.$strict>;
1115
+ export type CreateReportRequest = z.infer<typeof CreateReportRequestSchema>;
1116
+ /** The `202 Accepted` body of §10.4. Loose: it travels outbound (§10.11). */
1117
+ export declare const CreateReportResponseSchema: z.ZodObject<{
1118
+ reportId: z.ZodString;
1119
+ caseId: z.ZodString;
1120
+ status: z.ZodEnum<{
1121
+ received: "received";
1122
+ merged: "merged";
1123
+ invalid: "invalid";
1124
+ withdrawn: "withdrawn";
1125
+ closed: "closed";
1126
+ }>;
1127
+ merged: z.ZodBoolean;
1128
+ }, z.core.$loose>;
1129
+ export type CreateReportResponse = z.infer<typeof CreateReportResponseSchema>;
1130
+ //# sourceMappingURL=case-envelope.d.ts.map