@nvisy/sdk 0.26.0 → 0.28.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.
@@ -4578,7 +4578,7 @@ interface paths {
4578
4578
  * here; labels are re-derived from the policy set on each
4579
4579
  * anonymize call.
4580
4580
  *
4581
- * No [`Default`] a well-formed audit must carry a real
4581
+ * No [`Default`]: a well-formed audit must carry a real
4582
4582
  * [`AuditContext`] with a real correlation id. Callers building
4583
4583
  * an audit outside the analyze path construct it explicitly.
4584
4584
  */
@@ -5226,7 +5226,9 @@ interface paths {
5226
5226
  /**
5227
5227
  * @description Request payload for updating an existing workspace policy.
5228
5228
  *
5229
- * Replacing the `definition` replaces the whole policy body.
5229
+ * Replacing the `definition` replaces the whole policy body. The policy's
5230
+ * template origin is server-owned and preserved across updates — it is not
5231
+ * settable here.
5230
5232
  */
5231
5233
  requestBody: {
5232
5234
  content: {
@@ -8113,29 +8115,51 @@ interface components {
8113
8115
  token: string;
8114
8116
  };
8115
8117
  /**
8116
- * @description Author-supplied rationale for a redaction: a policy name and an optional
8117
- * description.
8118
+ * @description Author-supplied rationale for a redaction: *under what authority* it was made.
8118
8119
  *
8119
8120
  * Where the matched selection rule answers *which rule fired*, an
8120
- * `Attribution` answers *under what authority* — a compliance clause, an
8121
+ * `Attribution` answers *why the policy demanded it* — a compliance clause, an
8121
8122
  * internal policy, a data-handling rule. A policy author attaches it to a
8122
- * selection rule (`Rule::because` in `elide-redaction`); the anonymizer
8123
- * records it on the entity's [`Redaction`] event so an audit can trace a
8124
- * change back to the policy that demanded it.
8125
- *
8126
- * The `name` is the author's label for that policy (`"gdpr-art-17"`,
8127
- * `"hipaa-safe-harbor"`, `"PII removal"`); an optional `description` adds
8128
- * human context. Any stable machine identity a policy layer needs (a rule
8129
- * UUID, a jurisdiction) is that layer's concern — it can encode it in the
8130
- * name or carry it separately.
8123
+ * selection rule (`Rule::because` in `elide-redaction`); the anonymizer records
8124
+ * it on the entity's [`Redaction`] event so an audit can trace a change back to
8125
+ * the policy that demanded it.
8126
+ *
8127
+ * The rationale takes one of two [`kind`](Attribution::kind)s, by how much
8128
+ * structure the author has ([`AttributionKind::Freeform`] /
8129
+ * [`AttributionKind::Cited`]). Orthogonal to that, an attribution may carry a
8130
+ * [`source_id`](Attribution::source_id): an opaque, caller-owned [`Uuid`] the
8131
+ * policy layer uses to link back to a source record (a rule, a request, a
8132
+ * document). elide-core stores and hashes it verbatim; it never resolves or
8133
+ * validates it.
8131
8134
  *
8132
8135
  * [`Redaction`]: crate::entity::audit::AuditKind::Redaction
8133
8136
  */
8134
8137
  Attribution: {
8138
+ /** @description The shape of the rationale: a freeform label or a formal citation. */
8139
+ kind: components["schemas"]["AttributionKind"];
8140
+ /**
8141
+ * Format: uuid
8142
+ * @description Opaque, caller-owned link to a source record, when given.
8143
+ */
8144
+ source_id?: string;
8145
+ };
8146
+ /** @description The shape of an [`Attribution`]'s rationale. */
8147
+ AttributionKind: {
8135
8148
  /** @description Human-readable description (e.g. `"right to erasure"`), when given. */
8136
8149
  description?: string;
8150
+ /** @constant */
8151
+ kind: "freeform";
8137
8152
  /** @description The policy's name (e.g. `"gdpr-art-17"`, `"hipaa-safe-harbor"`). */
8138
8153
  name: string;
8154
+ } | {
8155
+ /** @description The authority cited (e.g. `"GDPR"`, `"HIPAA"`, `"internal-policy"`). */
8156
+ authority: string;
8157
+ /** @description The citation within that authority (e.g. `"Art. 17(1)"`, `"§164.514"`). */
8158
+ citation: string;
8159
+ /** @constant */
8160
+ kind: "cited";
8161
+ /** @description Why the citation applies here (e.g. `"data subject requested erasure"`). */
8162
+ rationale: string;
8139
8163
  };
8140
8164
  /**
8141
8165
  * @description One node in an entity's audit DAG: a thing that happened, with its
@@ -8468,7 +8492,7 @@ interface components {
8468
8492
  * `Some(...)` overrides that rule for this specific entity
8469
8493
  * at apply time. Reviewer overrides take precedence over
8470
8494
  * every policy rule and inherit the authority of the
8471
- * [`Review::policy_id`] they name the audit event's
8495
+ * [`Review::policy_id`] they name: the audit event's
8472
8496
  * attribution stamps that policy so the trail names the
8473
8497
  * authority under which the override fired.
8474
8498
  */
@@ -8561,7 +8585,7 @@ interface components {
8561
8585
  * here; labels are re-derived from the policy set on each
8562
8586
  * anonymize call.
8563
8587
  *
8564
- * No [`Default`] a well-formed audit must carry a real
8588
+ * No [`Default`]: a well-formed audit must carry a real
8565
8589
  * [`AuditContext`] with a real correlation id. Callers building
8566
8590
  * an audit outside the analyze path construct it explicitly.
8567
8591
  */
@@ -8583,7 +8607,7 @@ interface components {
8583
8607
  * vocabulary analyze used without the caller re-passing an
8584
8608
  * `AnalyzerParams`.
8585
8609
  *
8586
- * Required on the wire a missing context on an incoming
8610
+ * Required on the wire: a missing context on an incoming
8587
8611
  * [`Audit`] rejects at deserialize time so the shape
8588
8612
  * mismatch surfaces at load, not at apply.
8589
8613
  *
@@ -8608,11 +8632,11 @@ interface components {
8608
8632
  * for `languages` and `countries` (typed, elide-native), a
8609
8633
  * [`metadata`] sub-struct for free-form classification strings
8610
8634
  * (`tags`, `purpose`, `audience`), and the analyze-time
8611
- * [`correlation_id`]. The label catalog is not on here
8635
+ * [`correlation_id`]. The label catalog is not on here -
8612
8636
  * labels are policy-owned, and anonymize re-derives them from
8613
8637
  * the policy set it was handed.
8614
8638
  *
8615
- * No [`Default`] `correlation_id` has no meaningful default
8639
+ * No [`Default`]: `correlation_id` has no meaningful default
8616
8640
  * (a nil UUID would silently collapse unrelated audits under
8617
8641
  * one bucket in downstream trace aggregators), so callers
8618
8642
  * supply one explicitly. Everything else defaults to empty.
@@ -8630,12 +8654,12 @@ interface components {
8630
8654
  * carried over so the anonymize path can link its own spans
8631
8655
  * to the same request. The anonymize call supplies a fresh
8632
8656
  * id from the passed [`Document`] as the anonymize-side
8633
- * correlation id this one stays as the analyze-side
8657
+ * correlation id: this one stays as the analyze-side
8634
8658
  * pointer.
8635
8659
  *
8636
8660
  * Required on the wire.
8637
8661
  *
8638
- * [`Document`]: nvisy_schema::file::Document
8662
+ * [`Document`]: elide_wire::file::Document
8639
8663
  */
8640
8664
  correlationId: string;
8641
8665
  /**
@@ -8660,15 +8684,15 @@ interface components {
8660
8684
  /**
8661
8685
  * @description OCR mode the analyze call decoded with. Recorded so the
8662
8686
  * anonymize call re-decodes the same document under the same
8663
- * codec configuration otherwise entity offsets stored in
8687
+ * codec configuration: otherwise entity offsets stored in
8664
8688
  * the audit wouldn't line up against a differently-rendered
8665
- * second decode. Defaults to [`OcrMode::Auto`] (the codec's
8689
+ * second decode. Defaults to [`RasterMode::Auto`] (the codec's
8666
8690
  * built-in behaviour) when omitted.
8667
8691
  * @default {
8668
8692
  * "kind": "auto"
8669
8693
  * }
8670
8694
  */
8671
- ocrMode: components["schemas"]["OcrMode"];
8695
+ rasterMode: components["schemas"]["RasterMode"];
8672
8696
  };
8673
8697
  /**
8674
8698
  * @description A 32-byte BLAKE3 digest.
@@ -8788,11 +8812,11 @@ interface components {
8788
8812
  * Three forms, deserialized untagged so callers can pick the
8789
8813
  * terser one for the case at hand:
8790
8814
  *
8791
- * - **Plain string** (`"90 or older"`) English-only shorthand.
8792
- * - **Localized map** (`{"en": "90 or older", "fr": "90 ou plus"}`)
8793
- * one entry per language the deployment ships; missing
8794
- * locales fall back to English at render time.
8795
- * - **Format template** (`{"format": "{n} or older"}`) the
8815
+ * - **Plain string** (`"90 or older"`): English-only shorthand.
8816
+ * - **Localized map** (`{"en": "90 or older", "fr": "90 ou plus"}`):
8817
+ * one entry per language the deployment ships; missing locales
8818
+ * fall back to English at render time.
8819
+ * - **Format template** (`{"format": "{n} or older"}`): the
8796
8820
  * engine substitutes `{n}` for the threshold, so a ceiling of
8797
8821
  * `90` renders `"90 or older"` without the caller repeating the
8798
8822
  * number. Same rendering in every language.
@@ -9177,12 +9201,12 @@ interface components {
9177
9201
  template: components["schemas"]["PolicyTemplate"];
9178
9202
  } | {
9179
9203
  /**
9180
- * @description The structured policy body.
9204
+ * @description The client-authored policy body.
9181
9205
  *
9182
9206
  * Boxed to keep the enum small: an inline body is much larger than a
9183
9207
  * template id, and most requests use a template.
9184
9208
  */
9185
- definition: components["schemas"]["PolicyDefinition"];
9209
+ definition: components["schemas"]["PolicyDraft"];
9186
9210
  /** @constant */
9187
9211
  source: "inline";
9188
9212
  });
@@ -9322,7 +9346,7 @@ interface components {
9322
9346
  *
9323
9347
  * Tagged by `modality` (snake_case) so deserialization picks the
9324
9348
  * right variant and the entity vec inside is statically typed
9325
- * per modality apply-time we hand each variant back to elide
9349
+ * per modality: apply-time we hand each variant back to elide
9326
9350
  * as a `Vec<Entity<M>>` for the appropriate `M`.
9327
9351
  *
9328
9352
  * [`Audit`]: crate::Audit
@@ -9476,35 +9500,12 @@ interface components {
9476
9500
  */
9477
9501
  serviceAccountPath: string;
9478
9502
  };
9479
- /**
9480
- * @description The GDPR Article 9 template config — treatment axis fused
9481
- * with sensitive-scope axis. Carried directly by
9482
- * [`crate::PolicyTemplate::GdprArticle9`].
9483
- */
9484
- GdprArticle9: {
9485
- /**
9486
- * @description Which sensitive-data labels to cover. Defaults to
9487
- * [`GdprSensitiveScope::Article9`] (nine Article 9(1)
9488
- * categories only). Pick
9489
- * [`GdprSensitiveScope::Article9WithReidHardening`] to add
9490
- * Recital 26 quasi-identifiers, or
9491
- * [`GdprSensitiveScope::Article9And10`] to also cover
9492
- * Article 10 criminal-justice data.
9493
- * @default article9
9494
- */
9495
- scope: components["schemas"]["GdprSensitiveScope"];
9496
- /**
9497
- * @description Which operator to apply to matches. See
9498
- * [`GdprArticle9Treatment`] for the tradeoff.
9499
- */
9500
- treatment: components["schemas"]["GdprArticle9Treatment"];
9501
- };
9502
9503
  /**
9503
9504
  * @description Which operator to apply to Article 9 special-category entities.
9504
9505
  *
9505
- * - [`Erase`](Self::Erase) the default no-lawful-basis posture.
9506
+ * - [`Erase`](Self::Erase): the default no-lawful-basis posture.
9506
9507
  * Every match is removed.
9507
- * - [`Pseudonymize`](Self::Pseudonymize) identity-preserving
9508
+ * - [`Pseudonymize`](Self::Pseudonymize): identity-preserving
9508
9509
  * surrogate. Suitable when an Article 9(2) carve-out
9509
9510
  * (explicit consent, employment law, public-health public
9510
9511
  * interest, ...) authorizes retention and downstream
@@ -9514,20 +9515,27 @@ interface components {
9514
9515
  */
9515
9516
  GdprArticle9Treatment: "erase" | "pseudonymize";
9516
9517
  /**
9517
- * @description Which sensitive-data labels the template's group covers.
9518
+ * @description Which sensitive-data labels the template's scope covers.
9518
9519
  *
9519
9520
  * Three tiers, each strictly widening the previous one so a
9520
9521
  * caller upgrading through the tiers never loses coverage:
9521
9522
  *
9522
- * - [`Article9`](Self::Article9) the nine Article 9(1)
9523
+ * - [`Article9`](Self::Article9): the nine Article 9(1)
9523
9524
  * special categories only. The default.
9524
- * - [`Article9WithReidHardening`](Self::Article9WithReidHardening)
9525
- * Article 9 plus `date_of_birth` and `postal_code`. The two
9526
- * quasi-identifiers Recital 26 highlights as re-identification
9527
- * vectors when combined with special-category data. Non-
9528
- * binding guidance, but reflects supervisory-authority
9529
- * expectations on pseudonymization robustness.
9530
- * - [`Article9And10`](Self::Article9And10) — Article 9 + Recital
9525
+ * - [`Article9WithReidHardening`](Self::Article9WithReidHardening) -
9526
+ * Article 9 plus the quasi-identifiers that carry the most join
9527
+ * risk against public datasets: `date_of_birth`, `postal_code`,
9528
+ * and `gender` (the combination that re-identifies most of a
9529
+ * population on its own), widened with `age`, `city`,
9530
+ * `nationality`, `citizenship`, and `occupation`.
9531
+ *
9532
+ * A product-defined tier, not a complete answer to Recital 26:
9533
+ * the Recital sets a reasonableness test over "all the means
9534
+ * reasonably likely to be used" to re-identify, judged against
9535
+ * the caller's own data and adversary, so no fixed label list
9536
+ * can satisfy it. Callers whose threat model reaches wider
9537
+ * extend the policy after building it.
9538
+ * - [`Article9And10`](Self::Article9And10): Article 9 + Recital
9531
9539
  * 26 hardening + Article 10's criminal-justice labels
9532
9540
  * (`criminal_record`, `criminal_charge`, `judicial_narrative`).
9533
9541
  * Article 10 governs "personal data relating to criminal
@@ -9564,7 +9572,7 @@ interface components {
9564
9572
  * The regulation names "account numbers" without enumerating
9565
9573
  * them; HHS OCR's 2012 guidance doesn't narrow it either. In
9566
9574
  * practice, covered entities and de-ID vendors treat bank
9567
- * accounts, IBANs, and payment cards as the core §(J) set
9575
+ * accounts, IBANs, and payment cards as the core §(J) set -
9568
9576
  * [`Standard`](Self::Standard). Cryptocurrency wallet addresses
9569
9577
  * are the newer case: they identify a specific holder's account
9570
9578
  * by function, and the §(R) catch-all pulls in "any other unique
@@ -9586,46 +9594,25 @@ interface components {
9586
9594
  *
9587
9595
  * The tradeoff is analytic yield vs. downstream constraint:
9588
9596
  *
9589
- * - [`SafeHarbor`](Self::SafeHarbor) strips all eighteen
9597
+ * - [`SafeHarbor`](Self::SafeHarbor): strips all eighteen
9590
9598
  * identifier categories. No Data Use Agreement or statistician
9591
9599
  * required, but dates, coarse geography, and ages ≥ 90 all
9592
9600
  * disappear or collapse.
9593
- * - [`LimitedDataSet`](Self::LimitedDataSet) narrower
9601
+ * - [`LimitedDataSet`](Self::LimitedDataSet): narrower
9594
9602
  * subtraction (§164.514(e)(2)) that keeps dates, town/city,
9595
9603
  * state, ZIP, and ages verbatim. Suitable for research and
9596
9604
  * public-health handoffs *only when* a Data Use Agreement
9597
9605
  * governs the recipient's use.
9598
- * - [`ExpertDetermination`](Self::ExpertDetermination)
9606
+ * - [`ExpertDetermination`](Self::ExpertDetermination) -
9599
9607
  * starting scaffold for §164.514(b)(1). Same label set as
9600
9608
  * Safe Harbor with pseudonymization as the default terminal
9601
9609
  * (identity-preserving across mentions). **Does not certify
9602
- * de-identification** a qualified statistician must
9610
+ * de-identification**: a qualified statistician must
9603
9611
  * document that re-identification risk is "very small" under
9604
9612
  * the applicable methodology before the output can be treated
9605
9613
  * as de-identified.
9606
9614
  */
9607
9615
  HipaaDeidMethod: "safe_harbor" | "limited_data_set" | "expert_determination";
9608
- /**
9609
- * @description The HIPAA §164.514 template config — method axis fused with
9610
- * account-identifier axis. Carried directly by
9611
- * [`crate::PolicyTemplate::HipaaDeidentification`].
9612
- */
9613
- HipaaDeidentification: {
9614
- /**
9615
- * @description Which §(J) account-identifier labels to remove. Defaults
9616
- * to [`HipaaAccountNumbers::Standard`] (bank account +
9617
- * IBAN + payment card). Pick
9618
- * [`HipaaAccountNumbers::Extended`] to add crypto wallet
9619
- * addresses under the §(R) catch-all reading.
9620
- * @default standard
9621
- */
9622
- accounts: components["schemas"]["HipaaAccountNumbers"];
9623
- /**
9624
- * @description Which §164.514 method to apply. See [`HipaaDeidMethod`]
9625
- * for the tradeoff.
9626
- */
9627
- method: components["schemas"]["HipaaDeidMethod"];
9628
- };
9629
9616
  /**
9630
9617
  * @description One node in an entity's audit DAG: a thing that happened, with its
9631
9618
  * effect on confidence and its tamper-evident links.
@@ -9955,7 +9942,7 @@ interface components {
9955
9942
  * `Some(...)` overrides that rule for this specific entity
9956
9943
  * at apply time. Reviewer overrides take precedence over
9957
9944
  * every policy rule and inherit the authority of the
9958
- * [`Review::policy_id`] they name the audit event's
9945
+ * [`Review::policy_id`] they name: the audit event's
9959
9946
  * attribution stamps that policy so the trail names the
9960
9947
  * authority under which the override fired.
9961
9948
  */
@@ -10258,64 +10245,6 @@ interface components {
10258
10245
  /** @description Label the entry matches on. */
10259
10246
  label: components["schemas"]["LabelRef"];
10260
10247
  };
10261
- /**
10262
- * @description Named cluster of [`LabelRef`]s a policy's rules can reference
10263
- * by name via [`Predicate::LabelInGroup`].
10264
- *
10265
- * Groups live on the [`PolicyDefinition`] that declares them
10266
- * and are visible only to that policy's own rules. Templates
10267
- * ship one group per canonical label list (`"hipaa_18"`,
10268
- * `"gdpr_article_9"`, `"pci_chd"`, `"pci_sad"`), and every
10269
- * rule that targets that list references the group by name
10270
- * instead of respelling the labels. When elide adds a new label
10271
- * to a category, extending the group covers every rule that
10272
- * referenced it — no rule edit.
10273
- *
10274
- * **Compilation**: at request time the engine synthesises a
10275
- * `group:<policy_id>:<name>` tag on every label listed in the
10276
- * group, then rewrites [`Predicate::LabelInGroup { group }`]
10277
- * into [`Predicate::TagOneOf { tags: ["group:<policy_id>:<name>"] }`].
10278
- * That routes through the same `Anonymizer::with_tag` fast
10279
- * path as any authored tag — no new engine machinery, no
10280
- * per-request walk over group membership. Scoping the tag by
10281
- * `policy_id` keeps two policies that both declare `hipaa_18`
10282
- * with different labelsets from stepping on each other.
10283
- *
10284
- * **Unknown group names error at request validation**, not at
10285
- * apply time. A typo doesn't silently underfire.
10286
- *
10287
- * [`PolicyDefinition`]: super::PolicyDefinition
10288
- * [`Predicate::LabelInGroup`]: super::predicate::Predicate::LabelInGroup
10289
- * [`Predicate::LabelInGroup { group }`]: super::predicate::Predicate::LabelInGroup
10290
- * [`Predicate::TagOneOf { tags: ["group:<policy_id>:<name>"] }`]: super::predicate::Predicate::TagOneOf
10291
- */
10292
- LabelGroup: {
10293
- /** @description Optional description for reviewers. */
10294
- description?: string;
10295
- /**
10296
- * @description Labels this group covers, by ref.
10297
- *
10298
- * A label that doesn't appear in the request's compiled
10299
- * [`LabelCatalog`] is silently skipped at tag-synthesis time
10300
- * — a group can safely list labels the current build
10301
- * doesn't emit (e.g. modality-gated ones); rules keyed off
10302
- * the group still fire on whatever labels *are* present.
10303
- *
10304
- * [`LabelCatalog`]: elide_core::entity::LabelCatalog
10305
- */
10306
- labels: components["schemas"]["LabelRef"][];
10307
- /**
10308
- * @description Stable name a [`Predicate::LabelInGroup`] references.
10309
- *
10310
- * Free-form; a policy layer picks the vocabulary. Recommend
10311
- * snake_case identifiers (`hipaa_18`, `gdpr_article_9`) —
10312
- * they compile to `group:hipaa_18` tags on the catalog and
10313
- * read cleanly in audit provenance.
10314
- *
10315
- * [`Predicate::LabelInGroup`]: super::predicate::Predicate::LabelInGroup
10316
- */
10317
- name: string;
10318
- };
10319
10248
  /**
10320
10249
  * @description A label's human-facing text in one language: a display name and an
10321
10250
  * optional fuller description.
@@ -10351,20 +10280,54 @@ interface components {
10351
10280
  */
10352
10281
  LabelRef: string;
10353
10282
  /**
10354
- * @description Per-policy label-catalog selection.
10283
+ * @description A named set of labels a [`PolicyDefinition`] detects.
10355
10284
  *
10356
- * Picks builtins by name + adds inline custom schemas.
10285
+ * Scopes live on the policy that declares them and are visible
10286
+ * only to that policy's own rules. Two policies that both declare
10287
+ * `hipaa_18` with different labelsets stay independent: nothing is
10288
+ * stamped onto the shared label catalog, so there is no request-
10289
+ * wide namespace one policy could use to reach into another's.
10290
+ *
10291
+ * Templates ship one scope per canonical label list
10292
+ * (`"hipaa_safe_harbor"`, `"gdpr_article_9"`, `"ccpa_personal_information"`).
10293
+ * A policy may declare several: the union is what it detects, and
10294
+ * a rule can target one by name.
10295
+ *
10296
+ * **Unknown scope names error at request validation**, not at
10297
+ * apply time. A typo doesn't silently underfire.
10298
+ *
10299
+ * [`PolicyDefinition`]: super::PolicyDefinition
10357
10300
  */
10358
- Labels: {
10301
+ LabelScope: {
10359
10302
  /**
10360
- * @description Builtin label names to enable.
10303
+ * @description Why this set exists: the authority that defines it.
10361
10304
  *
10362
- * E.g. `"email_address"`, `"phone_number"`. Unknown names
10363
- * log a warning and are skipped.
10305
+ * A scope usually maps to one regulatory category (HIPAA's
10306
+ * eighteen identifiers, GDPR Article 9(1)'s nine special
10307
+ * categories), so this is where that mapping is recorded as
10308
+ * data rather than prose.
10364
10309
  */
10365
- builtins?: components["schemas"]["LabelRef"][];
10366
- /** @description Custom labels defined inline by the caller. */
10367
- custom?: components["schemas"]["Label"][];
10310
+ attribution?: components["schemas"]["AttributionKind"];
10311
+ /** @description Optional description for reviewers. */
10312
+ description?: string;
10313
+ /**
10314
+ * @description The labels this scope covers, by ref.
10315
+ *
10316
+ * A label the current build doesn't emit (a modality-gated
10317
+ * one, say) is simply never detected; rules keyed off the
10318
+ * scope still fire on whatever labels *are* present.
10319
+ */
10320
+ labels: components["schemas"]["LabelRef"][];
10321
+ /**
10322
+ * @description Stable name a [`Predicate::LabelInScope`] references.
10323
+ *
10324
+ * Free-form; a policy layer picks the vocabulary. Recommend
10325
+ * snake_case identifiers (`hipaa_safe_harbor`,
10326
+ * `gdpr_article_9`): they read cleanly in audit provenance.
10327
+ *
10328
+ * [`Predicate::LabelInScope`]: crate::Predicate::LabelInScope
10329
+ */
10330
+ name: string;
10368
10331
  };
10369
10332
  /**
10370
10333
  * @description Single language detection result.
@@ -10777,33 +10740,6 @@ interface components {
10777
10740
  /** @description Whether to send email notifications. */
10778
10741
  notifyViaEmail: boolean;
10779
10742
  };
10780
- /**
10781
- * @description Policy for turning a document's pages into images for OCR.
10782
- *
10783
- * A born-digital PDF has a selectable text layer and needs no OCR; a
10784
- * scanned one is image-only and must be rendered to images first. [`Auto`]
10785
- * is the right default — extract text, render only what lacks it — but the
10786
- * text-layer parser that drives that decision is not in place yet, so today
10787
- * only [`Force`] actually renders.
10788
- *
10789
- * Serializes with an internal `kind` tag (`{"kind": "auto"}`,
10790
- * `{"kind": "force", "dpi": 300}`, `{"kind": "never"}`).
10791
- *
10792
- * [`Auto`]: OcrMode::Auto
10793
- * [`Force`]: OcrMode::Force
10794
- */
10795
- OcrMode: {
10796
- /** @constant */
10797
- kind: "auto";
10798
- } | {
10799
- /** @description Resolution to render pages at; [`Dpi::OCR`] (300) is typical. */
10800
- dpi: components["schemas"]["Dpi"];
10801
- /** @constant */
10802
- kind: "force";
10803
- } | {
10804
- /** @constant */
10805
- kind: "never";
10806
- };
10807
10743
  /**
10808
10744
  * @description How a workspace's documents are turned into images for OCR during detection.
10809
10745
  *
@@ -10851,12 +10787,12 @@ interface components {
10851
10787
  /**
10852
10788
  * @description Which PCI DSS subsection this template addresses.
10853
10789
  *
10854
- * - [`PanRender`](Self::PanRender) §3.5.1 render posture for
10790
+ * - [`PanRender`](Self::PanRender): §3.5.1 render posture for
10855
10791
  * stored Primary Account Numbers. Carries a [`PciPanRender`]
10856
10792
  * picking between the shipped render approaches.
10857
- * - [`SavErase`](Self::SavErase) §3.3.1 prohibition on
10793
+ * - [`SavErase`](Self::SavErase): §3.3.1 prohibition on
10858
10794
  * storing Sensitive Authentication Data (CVV/CVC, track data,
10859
- * PIN blocks) after authorization. No options SAV has one
10795
+ * PIN blocks) after authorization. No options: SAV has one
10860
10796
  * posture: erase.
10861
10797
  */
10862
10798
  PciDssPart: {
@@ -10893,7 +10829,7 @@ interface components {
10893
10829
  * Callers wanting more than one dispatched from one policy
10894
10830
  * compose multiple templates.
10895
10831
  *
10896
- * [`Engine::with_key_provider`]: https://docs.rs/nvisy-engine/latest/nvisy_engine/struct.Engine.html
10832
+ * [`Engine::with_key_provider`]: https://docs.rs/elide-pipeline/latest/elide_pipeline/struct.Engine.html
10897
10833
  */
10898
10834
  PciPanRender: "truncate" | "truncate_last_four" | "hmac_sha256" | "hmac_sha512";
10899
10835
  /** @description Pipeline response. */
@@ -11253,53 +11189,97 @@ interface components {
11253
11189
  * Identity is the UUID; `name` is display-only.
11254
11190
  */
11255
11191
  PolicyDefinition: {
11192
+ /**
11193
+ * @description Caller-authored label schemas this policy introduces.
11194
+ *
11195
+ * Only for labels elide does not ship. These join the
11196
+ * recognition vocabulary alongside [`scopes`], and a rule may
11197
+ * target them the same way.
11198
+ *
11199
+ * [`scopes`]: Self::scopes
11200
+ */
11201
+ custom?: components["schemas"]["Label"][];
11256
11202
  /** @description Optional description for reviewers. */
11257
11203
  description?: string;
11258
11204
  /**
11259
- * @description Per-policy catch-all. Fires when no rule in this policy
11260
- * matched. Presence halts the chain; absence falls through
11205
+ * @description Per-policy catch-all, applied to any detected entity in
11206
+ * the policy's vocabulary that no rule claimed. Fires when no
11207
+ * rule in this policy matched. Presence halts the chain; absence falls through
11261
11208
  * to the next policy. [`Option`] enforces "at most one
11262
11209
  * fallback per policy" at the type level.
11263
11210
  */
11264
11211
  fallback?: components["schemas"]["ModalityRedactions"];
11265
- /**
11266
- * @description Named clusters of [`LabelRef`]s this policy's rules may
11267
- * reference by name via [`Predicate::LabelInGroup`]. Scoped
11268
- * to this policy — a rule can only name a group its own
11269
- * policy declared; unknown references error at request
11270
- * validation. Two policies that both declare `hipaa_18` with
11271
- * different labelsets stay independent.
11272
- *
11273
- * [`LabelRef`]: elide_core::entity::LabelRef
11274
- * [`Predicate::LabelInGroup`]: predicate::Predicate::LabelInGroup
11275
- */
11276
- groups?: components["schemas"]["LabelGroup"][];
11277
11212
  /**
11278
11213
  * Format: uuid
11279
11214
  * @description Stable identifier. UUIDv7 recommended (time-ordered);
11280
11215
  * customer-supplied so re-submissions carry the same id.
11281
- * Engine stamps this into the redaction event's
11282
- * [`Attribution::name`] so reviewers can find this policy
11283
- * from any redaction it drove.
11284
- *
11285
- * [`Attribution::name`]: elide_core::entity::audit::Attribution::name
11286
11216
  */
11287
11217
  id: string;
11288
11218
  /**
11289
- * @description Vocabulary the policy operates over: builtins picked by
11290
- * name plus caller-authored custom label schemas. Engine
11291
- * unions every submitted policy's `labels` into a per-request
11292
- * [`LabelCatalog`] used to drive recognizer dispatch and
11293
- * tag-based [`Predicate::TagOneOf`] matching.
11219
+ * @description Human-readable name. Display-only. Does not key anything.
11294
11220
  *
11295
- * [`LabelCatalog`]: elide_core::entity::LabelCatalog
11296
- * [`Predicate::TagOneOf`]: predicate::Predicate::TagOneOf
11221
+ * Names the policy in a redaction event's [`Attribution`]
11222
+ * when a rule that fired carried no [`AttributionKind::Cited`]
11223
+ * attribution to render.
11224
+ *
11225
+ * [`Attribution`]: elide_core::entity::audit::Attribution
11226
+ * [`AttributionKind::Cited`]: elide_core::entity::audit::AttributionKind::Cited
11297
11227
  */
11298
- labels?: components["schemas"]["Labels"];
11299
- /** @description Human-readable name. Display-only. Does not key anything. */
11300
11228
  name: string;
11301
11229
  /** @description Ordered rules. First match wins within this policy. */
11302
11230
  rules?: components["schemas"]["PolicyRule"][];
11231
+ /**
11232
+ * @description What this policy detects: one or more named, attributed
11233
+ * label sets.
11234
+ *
11235
+ * The union of every scope, plus [`custom`], is the policy's
11236
+ * recognition vocabulary. A label no scope names is never
11237
+ * detected, so no rule can fire on it and the policy is inert
11238
+ * with respect to it.
11239
+ *
11240
+ * Detecting more than the rules act on is deliberate: scope a
11241
+ * whole regulatory category, write rules for the labels
11242
+ * needing special treatment, and let [`fallback`] sweep the
11243
+ * rest.
11244
+ *
11245
+ * [`custom`]: Self::custom
11246
+ * [`fallback`]: Self::fallback
11247
+ */
11248
+ scopes?: components["schemas"]["LabelScope"][];
11249
+ /**
11250
+ * @description The shipped template this policy was built from, when it
11251
+ * was.
11252
+ *
11253
+ * Provenance, not fidelity: callers are expected to mutate a
11254
+ * template's policy before submitting, so this records where
11255
+ * the policy came from and says nothing about whether it
11256
+ * still matches. `None` means hand-authored.
11257
+ */
11258
+ template?: components["schemas"]["TemplateOrigin"];
11259
+ };
11260
+ /**
11261
+ * @description A client-authored policy body: the parts of a policy definition a caller may
11262
+ * set, without the fields the server owns.
11263
+ *
11264
+ * The engine's `PolicyDefinition` also carries an `id` and a `template` origin.
11265
+ * Both are server-owned — the `id` is minted at creation and the `template`
11266
+ * records which built-in a policy was seeded from (provenance). Neither is
11267
+ * representable here, so a client cannot mint ids or forge provenance; the
11268
+ * server stamps them in [`into_definition`](PolicyDraft::into_definition).
11269
+ */
11270
+ PolicyDraft: {
11271
+ /** @description Caller-authored custom label schemas this policy introduces. */
11272
+ custom?: components["schemas"]["Label"][];
11273
+ /** @description Optional description for reviewers. */
11274
+ description?: string;
11275
+ /** @description Per-policy catch-all, fired when no rule matched. */
11276
+ fallback?: components["schemas"]["ModalityRedactions"];
11277
+ /** @description Human-readable name. Display-only. */
11278
+ name: string;
11279
+ /** @description Ordered rules. First match wins within this policy. */
11280
+ rules?: components["schemas"]["PolicyRule"][];
11281
+ /** @description What this policy detects: named, attributed label sets. */
11282
+ scopes?: components["schemas"]["LabelScope"][];
11303
11283
  };
11304
11284
  /**
11305
11285
  * @description Path parameters for policy operations.
@@ -11321,16 +11301,30 @@ interface components {
11321
11301
  * [`PolicyDefinition`]: super::PolicyDefinition
11322
11302
  */
11323
11303
  PolicyRule: {
11304
+ /**
11305
+ * @description Why this rule exists: the authority it answers to.
11306
+ *
11307
+ * The engine renders it into the redaction event's
11308
+ * [`Attribution`], so a reviewer sees the provision rather
11309
+ * than a bare UUID. `None` falls back to recording the
11310
+ * policy and rule ids alone.
11311
+ *
11312
+ * Optional so ad-hoc and hand-authored rules stay cheap to
11313
+ * write; the shipped templates set it on every rule.
11314
+ *
11315
+ * [`Attribution`]: elide_core::entity::audit::Attribution
11316
+ */
11317
+ attribution?: components["schemas"]["AttributionKind"];
11324
11318
  /** @description Optional description for reviewers. */
11325
11319
  description?: string;
11326
11320
  /**
11327
11321
  * Format: uuid
11328
11322
  * @description Stable identifier. UUIDv7 recommended. Engine stamps it
11329
- * into the redaction event's [`Attribution::description`] so
11323
+ * into the redaction event's [`Attribution::source_id`] so
11330
11324
  * reviewers can trace which rule fired. Every attachment a
11331
11325
  * [`RuleDispatch::Table`] expands into shares this UUID.
11332
11326
  *
11333
- * [`Attribution::description`]: elide_core::entity::audit::Attribution::description
11327
+ * [`Attribution::source_id`]: elide_core::entity::audit::Attribution::source_id
11334
11328
  */
11335
11329
  id: string;
11336
11330
  /** @description Human-readable name. Display-only. */
@@ -11343,7 +11337,7 @@ interface components {
11343
11337
  * policy in the chain).
11344
11338
  *
11345
11339
  * Boxed to keep [`RuleDispatch`]'s stack footprint
11346
- * small [`ModalityRedactions`] carries four optional
11340
+ * small: [`ModalityRedactions`] carries four optional
11347
11341
  * per-modality operator enums and dominates the variant
11348
11342
  * size. `Table`'s `Vec<LabelEntry>` already heap-allocates
11349
11343
  * its entries, so boxing here keeps the two variants
@@ -11422,13 +11416,43 @@ interface components {
11422
11416
  * operator options,
11423
11417
  * `{"kind": "pci_dss_pan", "render": "hmac_sha256"}`.
11424
11418
  */
11425
- PolicyTemplate: ({
11419
+ PolicyTemplate: {
11420
+ /**
11421
+ * @description Which §(J) account-identifier labels to remove. Defaults
11422
+ * to [`HipaaAccountNumbers::Standard`] (bank account +
11423
+ * IBAN + payment card). Pick
11424
+ * [`HipaaAccountNumbers::Extended`] to add crypto wallet
11425
+ * addresses under the §(R) catch-all reading.
11426
+ * @default standard
11427
+ */
11428
+ accounts: components["schemas"]["HipaaAccountNumbers"];
11426
11429
  /** @constant */
11427
11430
  kind: "hipaa_deidentification";
11428
- } & components["schemas"]["HipaaDeidentification"]) | ({
11431
+ /**
11432
+ * @description Which §164.514 method to apply. See [`HipaaDeidMethod`]
11433
+ * for the tradeoff.
11434
+ */
11435
+ method: components["schemas"]["HipaaDeidMethod"];
11436
+ } | {
11429
11437
  /** @constant */
11430
11438
  kind: "gdpr_article9";
11431
- } & components["schemas"]["GdprArticle9"]) | {
11439
+ /**
11440
+ * @description Which sensitive-data labels to cover. Defaults to
11441
+ * [`GdprSensitiveScope::Article9`] (nine Article 9(1)
11442
+ * categories only). Pick
11443
+ * [`GdprSensitiveScope::Article9WithReidHardening`] to add
11444
+ * the quasi-identifier set, or
11445
+ * [`GdprSensitiveScope::Article9And10`] to also cover
11446
+ * Article 10 criminal-justice data.
11447
+ * @default article9
11448
+ */
11449
+ scope: components["schemas"]["GdprSensitiveScope"];
11450
+ /**
11451
+ * @description Which operator to apply to matches. See
11452
+ * [`GdprArticle9Treatment`] for the tradeoff.
11453
+ */
11454
+ treatment: components["schemas"]["GdprArticle9Treatment"];
11455
+ } | {
11432
11456
  /** @constant */
11433
11457
  kind: "pci_dss";
11434
11458
  /**
@@ -11439,9 +11463,6 @@ interface components {
11439
11463
  } | {
11440
11464
  /** @constant */
11441
11465
  kind: "ccpa";
11442
- } | {
11443
- /** @constant */
11444
- kind: "soc2_secrets";
11445
11466
  };
11446
11467
  /**
11447
11468
  * @description Closed polygon, given by its ordered vertices.
@@ -11475,14 +11496,14 @@ interface components {
11475
11496
  /** @description Allowed tags. */
11476
11497
  tags: string[];
11477
11498
  } | {
11499
+ /** @constant */
11500
+ kind: "labelInScope";
11478
11501
  /**
11479
- * @description Name of the [`LabelGroup`] to match against.
11502
+ * @description Name of the [`LabelScope`] to match against.
11480
11503
  *
11481
- * [`LabelGroup`]: super::LabelGroup
11504
+ * [`LabelScope`]: super::LabelScope
11482
11505
  */
11483
- group: string;
11484
- /** @constant */
11485
- kind: "labelInGroup";
11506
+ scope: string;
11486
11507
  } | {
11487
11508
  /** @description Cluster id to match. */
11488
11509
  coref: string;
@@ -11529,6 +11550,33 @@ interface components {
11529
11550
  /** Format: uint */
11530
11551
  start: number;
11531
11552
  };
11553
+ /**
11554
+ * @description Policy for rendering a document's pages to images.
11555
+ *
11556
+ * [`Auto`] is the default: use the text layer where it exists (redact by
11557
+ * deleting glyphs) and render only where it is absent. [`Always`] renders
11558
+ * every page regardless of the text layer, for documents whose text is
11559
+ * missing, garbled, or a watermark. [`Never`] relies on the text layer only.
11560
+ *
11561
+ * Serializes with an internal `kind` tag (`{"kind": "auto"}`,
11562
+ * `{"kind": "always", "dpi": 300}`, `{"kind": "never"}`).
11563
+ *
11564
+ * [`Auto`]: RasterMode::Auto
11565
+ * [`Always`]: RasterMode::Always
11566
+ * [`Never`]: RasterMode::Never
11567
+ */
11568
+ RasterMode: {
11569
+ /** @constant */
11570
+ kind: "auto";
11571
+ } | {
11572
+ /** @description Resolution to render pages at; [`Dpi::OCR`] (300) is typical. */
11573
+ dpi: components["schemas"]["Dpi"];
11574
+ /** @constant */
11575
+ kind: "always";
11576
+ } | {
11577
+ /** @constant */
11578
+ kind: "never";
11579
+ };
11532
11580
  /** @description The engine's registered recognizers, grouped by kind. */
11533
11581
  RecognizerCatalog: {
11534
11582
  /** @description LLM recognizers. */
@@ -11547,20 +11595,28 @@ interface components {
11547
11595
  *
11548
11596
  * Owned rather than borrowing from the engine so callers can
11549
11597
  * carry the value past the borrow that produced it. Cloning is
11550
- * cheap [`HipStr`] shares the backing string via an `Arc`
11598
+ * cheap: [`HipStr`] shares the backing string via an `Arc`
11551
11599
  * header.
11552
11600
  */
11553
11601
  RegisteredRecognizer: {
11554
11602
  /** @description Optional human-readable description. */
11555
11603
  description?: string;
11556
11604
  /**
11557
- * @description Recognizer name the identifier a request's allowlist
11605
+ * @description Recognizer name: the identifier a request's allowlist
11558
11606
  * picks by.
11559
11607
  */
11560
11608
  name: string;
11561
11609
  /**
11562
11610
  * @description Provider slug. NER: `"bento"`, `"mock"`. LLM: `"openai"`,
11563
11611
  * `"anthropic"`, `"gemini"`, `"ollama"`, `"mock"`.
11612
+ *
11613
+ * Owned so the type deserializes from a runtime buffer: a
11614
+ * `&'static str` field would make the derive emit
11615
+ * `Deserialize<'static>` only, which compiles against string
11616
+ * literals but not against an owned `String` or a reader -
11617
+ * the shapes a host actually decodes from. Borrowing a
11618
+ * `&'static str` into a [`HipStr`] does not allocate, so
11619
+ * engine-side construction stays free.
11564
11620
  */
11565
11621
  provider: string;
11566
11622
  };
@@ -11641,7 +11697,7 @@ interface components {
11641
11697
  * @description A reviewer-supplied redaction override with the policy
11642
11698
  * authority it draws from.
11643
11699
  *
11644
- * The `policy_id` isn't just for audit it also picks which
11700
+ * The `policy_id` isn't just for audit: it also picks which
11645
11701
  * per-policy pseudonym vault and per-policy [`KeyProvider`] the
11646
11702
  * override's operator resolves against, so an override using
11647
11703
  * [`Pseudonymize`] or [`HmacHash`] stays consistent with the
@@ -11665,7 +11721,7 @@ interface components {
11665
11721
  * the anonymize request. The audit event stamps this UUID
11666
11722
  * as the attribution `name`.
11667
11723
  *
11668
- * [`PolicyDefinition`]: nvisy_schema::policy::PolicyDefinition
11724
+ * [`PolicyDefinition`]: elide_governance::PolicyDefinition
11669
11725
  */
11670
11726
  policyId: string;
11671
11727
  };
@@ -12336,7 +12392,7 @@ interface components {
12336
12392
  * `Some(...)` overrides that rule for this specific entity
12337
12393
  * at apply time. Reviewer overrides take precedence over
12338
12394
  * every policy rule and inherit the authority of the
12339
- * [`Review::policy_id`] they name the audit event's
12395
+ * [`Review::policy_id`] they name: the audit event's
12340
12396
  * attribution stamps that policy so the trail names the
12341
12397
  * authority under which the override fired.
12342
12398
  */
@@ -12429,6 +12485,39 @@ interface components {
12429
12485
  /** @constant */
12430
12486
  kind: "drop_column";
12431
12487
  };
12488
+ /**
12489
+ * @description The template a [`PolicyDefinition`] was built from.
12490
+ *
12491
+ * Records **provenance, not fidelity**. Templates are plain data
12492
+ * and callers are expected to mutate the returned policy before
12493
+ * submitting it (swapping an operator, widening a scope), so this
12494
+ * says "built from `hipaa_deid_safe_harbor` v1.0.0" and nothing
12495
+ * about whether the policy still matches what that template
12496
+ * ships. A reviewer who needs that rebuilds the template and
12497
+ * diffs.
12498
+ *
12499
+ * `None` on a policy means hand-authored, not "unknown template".
12500
+ *
12501
+ * Both fields are needed: a policy built from v1 of a template
12502
+ * can differ materially from one built from v2 (a widened label
12503
+ * set, a changed operator), and an audit that records only the id
12504
+ * cannot tell the two apart.
12505
+ *
12506
+ * [`PolicyDefinition`]: super::PolicyDefinition
12507
+ */
12508
+ TemplateOrigin: {
12509
+ /**
12510
+ * @description The template's machine key: `"hipaa_deid_safe_harbor"`,
12511
+ * `"pci_dss_pan_hmac_sha256"`. Stable across version bumps.
12512
+ */
12513
+ id: string;
12514
+ /**
12515
+ * @description The template's own semver version, distinct from the
12516
+ * crate's release version. A shipped template bumps this when
12517
+ * its labelset or operator dispatch changes.
12518
+ */
12519
+ version: string;
12520
+ };
12432
12521
  /**
12433
12522
  * @description Fallback operator that runs when a declinable primary
12434
12523
  * ([`TextRedaction::Clamp`], [`TextRedaction::GeneralizeDate`])
@@ -12442,7 +12531,7 @@ interface components {
12442
12531
  * or `→ Mask` / `→ Keep` on the rare occasion those fit.
12443
12532
  *
12444
12533
  * Absent from the primary's spec, elide's baked-in default is
12445
- * [`Erase`] a bare [`TextRedaction::Clamp`] without a `fallback`
12534
+ * [`Erase`]: a bare [`TextRedaction::Clamp`] without a `fallback`
12446
12535
  * erases values that aren't numeric.
12447
12536
  *
12448
12537
  * [`Erase`]: TerminalFallback::Erase
@@ -12812,7 +12901,7 @@ interface components {
12812
12901
  * `Some(...)` overrides that rule for this specific entity
12813
12902
  * at apply time. Reviewer overrides take precedence over
12814
12903
  * every policy rule and inherit the authority of the
12815
- * [`Review::policy_id`] they name the audit event's
12904
+ * [`Review::policy_id`] they name: the audit event's
12816
12905
  * attribution stamps that policy so the trail names the
12817
12906
  * authority under which the override fired.
12818
12907
  */
@@ -13165,11 +13254,13 @@ interface components {
13165
13254
  /**
13166
13255
  * @description Request payload for updating an existing workspace policy.
13167
13256
  *
13168
- * Replacing the `definition` replaces the whole policy body.
13257
+ * Replacing the `definition` replaces the whole policy body. The policy's
13258
+ * template origin is server-owned and preserved across updates — it is not
13259
+ * settable here.
13169
13260
  */
13170
13261
  UpdatePolicy: {
13171
13262
  /** @description New policy body (replaces the stored definition). */
13172
- definition?: components["schemas"]["PolicyDefinition"];
13263
+ definition?: components["schemas"]["PolicyDraft"];
13173
13264
  /** @description Policy description. */
13174
13265
  description?: string;
13175
13266
  /** @description Human-readable policy display name. */
@@ -13546,6 +13637,7 @@ interface components {
13546
13637
  //#endregion
13547
13638
  //#region src/datatypes/account.d.ts
13548
13639
  type Schemas$19 = components["schemas"];
13640
+ type Handle = Schemas$19["Handle"];
13549
13641
  type Account = Schemas$19["Account"];
13550
13642
  type PublicAccount = Schemas$19["PublicAccount"];
13551
13643
  type UpdateAccount = Schemas$19["UpdateAccount"];
@@ -13581,10 +13673,11 @@ type Schemas$16 = components["schemas"];
13581
13673
  type EntityGroup = Schemas$16["EntityGroup"];
13582
13674
  type AuditContext = Schemas$16["AuditContext"];
13583
13675
  type EntityCoRef = Schemas$16["EntityCoRef"];
13584
- type OcrMode = Schemas$16["OcrMode"];
13676
+ type RasterMode = Schemas$16["RasterMode"];
13585
13677
  type Dpi = Schemas$16["Dpi"];
13586
13678
  type Review = Schemas$16["Review"];
13587
13679
  type Attribution = Schemas$16["Attribution"];
13680
+ type AttributionKind = Schemas$16["AttributionKind"];
13588
13681
  type LeakProfile = Schemas$16["LeakProfile"];
13589
13682
  type RuleMatch = Schemas$16["RuleMatch"];
13590
13683
  type ModelEvent = Schemas$16["ModelEvent"];
@@ -13647,6 +13740,7 @@ type RegisteredRecognizer = Schemas$14["RegisteredRecognizer"];
13647
13740
  //#endregion
13648
13741
  //#region src/datatypes/connection.d.ts
13649
13742
  type Schemas$13 = components["schemas"];
13743
+ type ConnectionId = Schemas$13["ConnectionId"];
13650
13744
  type Connection = Schemas$13["Connection"];
13651
13745
  type CreateConnection = Schemas$13["CreateConnection"];
13652
13746
  type UpdateConnection = Schemas$13["UpdateConnection"];
@@ -13759,14 +13853,14 @@ type Policy = Schemas$4["Policy"];
13759
13853
  type PolicySummary = Schemas$4["PolicySummary"];
13760
13854
  type PolicySummaryPage = Schemas$4["PolicySummaryPage"];
13761
13855
  type PolicyDefinition = Schemas$4["PolicyDefinition"];
13856
+ type PolicyDraft = Schemas$4["PolicyDraft"];
13762
13857
  type CreatePolicy = Schemas$4["CreatePolicy"];
13763
13858
  type UpdatePolicy = Schemas$4["UpdatePolicy"];
13764
13859
  type PolicyRule = Schemas$4["PolicyRule"];
13765
13860
  type PolicyTemplate = Schemas$4["PolicyTemplate"];
13766
- type HipaaDeidentification = Schemas$4["HipaaDeidentification"];
13861
+ type TemplateOrigin = Schemas$4["TemplateOrigin"];
13767
13862
  type HipaaDeidMethod = Schemas$4["HipaaDeidMethod"];
13768
13863
  type HipaaAccountNumbers = Schemas$4["HipaaAccountNumbers"];
13769
- type GdprArticle9 = Schemas$4["GdprArticle9"];
13770
13864
  type GdprArticle9Treatment = Schemas$4["GdprArticle9Treatment"];
13771
13865
  type GdprSensitiveScope = Schemas$4["GdprSensitiveScope"];
13772
13866
  type PciDssPart = Schemas$4["PciDssPart"];
@@ -13777,11 +13871,11 @@ type TextRedaction = Schemas$4["TextRedaction"];
13777
13871
  type ImageRedaction = Schemas$4["ImageRedaction"];
13778
13872
  type AudioRedaction = Schemas$4["AudioRedaction"];
13779
13873
  type TabularRedaction = Schemas$4["TabularRedaction"];
13780
- type Labels = Schemas$4["Labels"];
13781
- type LabelGroup = Schemas$4["LabelGroup"];
13874
+ type LabelScope = Schemas$4["LabelScope"];
13782
13875
  type LabelEntry = Schemas$4["LabelEntry"];
13783
13876
  type LabelLocale = Schemas$4["LabelLocale"];
13784
13877
  type Label = Schemas$4["Label"];
13878
+ type LabelRef = Schemas$4["LabelRef"];
13785
13879
  type LocalizedText = Schemas$4["LocalizedText"];
13786
13880
  type Color = Schemas$4["Color"];
13787
13881
  type Waveform = Schemas$4["Waveform"];
@@ -13795,6 +13889,7 @@ type TerminalFallback = Schemas$4["TerminalFallback"];
13795
13889
  //#endregion
13796
13890
  //#region src/datatypes/run.d.ts
13797
13891
  type Schemas$3 = components["schemas"];
13892
+ type RunId = Schemas$3["RunId"];
13798
13893
  type PipelineRun = Schemas$3["PipelineRun"];
13799
13894
  type RunMetadata = Schemas$3["RunMetadata"];
13800
13895
  type CreatePipelineRun = Schemas$3["CreatePipelineRun"];
@@ -13817,6 +13912,7 @@ type Confidence = Schemas$2["Confidence"];
13817
13912
  //#endregion
13818
13913
  //#region src/datatypes/webhook.d.ts
13819
13914
  type Schemas$1 = components["schemas"];
13915
+ type WebhookId = Schemas$1["WebhookId"];
13820
13916
  type Webhook = Schemas$1["Webhook"];
13821
13917
  type WebhookCreated = Schemas$1["WebhookCreated"];
13822
13918
  type CreateWebhook = Schemas$1["CreateWebhook"];
@@ -13840,5 +13936,5 @@ type Retention = Schemas["Retention"];
13840
13936
  type RetentionSettings = Schemas["RetentionSettings"];
13841
13937
  type RetentionOverride = Schemas["RetentionOverride"];
13842
13938
  //#endregion
13843
- export { LabelLocale as $, AudioAuditEvent as $n, CreateApiToken as $r, GenerateInviteCode as $t, PipelineRun as A, ConnectionVerification as An, RangeOfUint as Ar, ConnectionSyncFailedParams as At, CreatePolicy as B, SyncMode as Bn, TextAuditEvent as Br, PipelineRunCompletedParams as Bt, LanguageProvenance as C, AnthropicCredentials as Cn, LeakProfile as Cr, PipelineStatus as Ct, ScopeParams as D, ConnectionPage as Dn, PatternEvent as Dr, UpdatePipeline as Dt, ScopeMetadata as E, ConnectionConfig as En, OperatorId as Er, PipelineTriggerType as Et, RunStatusEvent as F, OpenAiCredentials as Fn, TabularAuditLog as Fr, NotificationEvent as Ft, GdprSensitiveScope as G, UpdateConnection as Gn, TextEntityRecord as Gr, UnreadStatus as Gt, DateStyle as H, SyncScheduleInput as Hn, TextAuditLog as Hr, SystemAnnouncementParams as Ht, AudioRedaction as I, S3Credentials as In, TabularEntity as Ir, NotificationPage as It, HipaaDeidentification as J, RegisteredRecognizer as Jn, TimeSpan as Jr, Member as Jt, HipaaAccountNumbers as K, LabelCatalog as Kn, TextHint as Kr, UpdateNotificationSettings as Kt, ClampBucket as L, StorageConfig as Ln, TabularEntityRecord as Lr, NotificationPayload as Lt, PipelineRunStatus as M, CreateConnection as Mn, RuleMatch as Mr, MemberInvitedParams as Mt, PipelineRunsQuery as N, GcsCredentials as Nn, TabularAuditEvent as Nr, MemberJoinedParams as Nt, Audit as O, ConnectionSync as On, Point as Or, CursorPagination as Ot, RunMetadata as P, LlmConfig as Pn, TabularAuditKind as Pr, Notification as Pt, LabelGroup as Q, Attribution as Qn, ApiTokenWithJWT as Qr, CreateInvite as Qt, Color as R, SyncConnection as Rn, TabularHint as Rr, NotificationSettings as Rt, Language as S, ValidationErrorDetail as Sn, ImageLocation as Sr, PipelineFilter as St, Languages as T, Connection as Tn, OcrMode as Tr, PipelineSummaryPage as Tt, GdprArticle9 as U, SyncStatus as Un, TextData as Ur, SystemReportParams as Ut, DateGranularity as V, SyncSchedule as Vn, TextAuditKind as Vr, PipelineRunFailedParams as Vt, GdprArticle9Treatment as W, SyncTriggerType as Wn, TextEntity as Wr, UnreadCountEvent as Wt, Label as X, Login as Xn, ApiTokenPage as Xr, MemberSortField as Xt, ImageRedaction as Y, AuthToken as Yn, ApiToken as Yr, MemberPage as Yt, LabelEntry as Z, Signup as Zn, ApiTokenType as Zr, UpdateMember as Zt, WebhookPage as _, UpdateAccount as _i, FormatToken as _n, ImageAuditLog as _r, UpdatePolicy as _t, RetentionSettings as a, ConnectionActivityParams as ai, InviteSent as an, AudioHint as ar, PciPanRender as at, Confidence as b, UpdateFile as bn, ImageEntityRecord as br, Pipeline as bt, WorkspacePage as c, MemberActivityParams as ci, ListInvites as cn, AuditHash as cr, PolicyRule as ct, CreateWebhook as d, PolicyActivityParams as di, ComponentHealth as dn, Dimensions as dr, PolicyTemplate as dt, TokenExpiration as ei, Invite as en, AudioAuditKind as er, Labels as et, TestWebhook as f, WebhookActivityParams as fi, Health as fn, Dpi as fr, Predicate as ft, WebhookEvent as g, PublicAccount as gi, FilePage as gn, ImageAuditKind as gr, TextRedaction as gt, WebhookCreated as h, AccountRef as hi, FileKind as hn, ImageAuditEvent as hr, TerminalFallback as ht, RetentionOverride as i, ActivityPayload as ii, InvitePreview as in, AudioEntityRecord as ir, PciDssPart as it, PipelineRunPage as j, ConnectionsQuery as jn, Review as jr, MarkedReadStatus as jt, CreatePipelineRun as k, ConnectionSyncPage as kn, Polygon as kr, ConnectionSyncCompletedParams as kt, WorkspaceRole as l, PipelineActivityParams as li, ReplyInvite as ln, BoundingBox as lr, PolicySummary as lt, Webhook as m, Account as mi, File as mn, EntityGroup as mr, TabularRedaction as mt, OcrPolicy as n, Activity as ni, InviteExpiration as nn, AudioData as nr, LocalizedText as nt, UpdateWorkspace as o, FileActivityParams as oi, InviteSortField as on, AudioLocation as or, Policy as ot, UpdateWebhook as p, WorkspaceActivityParams as pi, HealthStatus as pn, EntityCoRef as pr, Sha2Algorithm as pt, HipaaDeidMethod as q, RecognizerCatalog as qn, TextLocation as qr, ListMembers as qt, Retention as r, ActivityPage as ri, InvitePage as rn, AudioEntity as rr, ModalityRedactions as rt, Workspace as s, InviteActivityParams as si, InviteStatus as sn, AuditContext as sr, PolicyDefinition as st, CreateWorkspace as t, UpdateApiToken as ti, InviteCode as tn, AudioAuditLog as tr, LanguageTag as tt, WorkspaceSettings as u, PipelineRunActivityParams as ui, SortOrder as un, Category as ur, PolicySummaryPage as ut, WebhookResult as v, paths as vi, ListFiles as vn, ImageData as vr, Waveform as vt, LanguageSpan as w, AzureCredentials as wn, ModelEvent as wr, PipelineSummary as wt, CountryCode as x, ErrorResponse as xn, ImageHint as xr, PipelineDefinition as xt, WebhookStatus as y, ModalityToken as yn, ImageEntity as yr, CreatePipeline as yt, ConfidenceThreshold as z, SyncDeletionPolicy as zn, TabularLocation as zr, PipelineRunAnalyzedParams as zt };
13844
- //# sourceMappingURL=index-Zd5G8h44.d.ts.map
13939
+ export { LabelRef as $, Login as $n, ApiToken as $r, UpdateMember as $t, CreatePipelineRun as A, ConnectionPage as An, PatternEvent as Ar, CursorPagination as At, Color as B, StorageConfig as Bn, TabularEntity as Br, NotificationSettings as Bt, Language as C, paths as Ci, ErrorResponse as Cn, ImageEntity as Cr, PipelineDefinition as Ct, ScopeMetadata as D, Connection as Dn, LeakProfile as Dr, PipelineSummaryPage as Dt, Languages as E, AzureCredentials as En, ImageLocation as Er, PipelineSummary as Et, RunId as F, CreateConnection as Fn, Review as Fr, MemberJoinedParams as Ft, GdprArticle9Treatment as G, SyncScheduleInput as Gn, TextAuditKind as Gr, SystemReportParams as Gt, CreatePolicy as H, SyncDeletionPolicy as Hn, TabularHint as Hr, PipelineRunCompletedParams as Ht, RunMetadata as I, GcsCredentials as In, RuleMatch as Ir, Notification as It, HipaaDeidMethod as J, UpdateConnection as Jn, TextEntity as Jr, UpdateNotificationSettings as Jt, GdprSensitiveScope as K, SyncStatus as Kn, TextAuditLog as Kr, UnreadCountEvent as Kt, RunStatusEvent as L, LlmConfig as Ln, TabularAuditEvent as Lr, NotificationEvent as Lt, PipelineRunPage as M, ConnectionSyncPage as Mn, Polygon as Mr, ConnectionSyncFailedParams as Mt, PipelineRunStatus as N, ConnectionVerification as Nn, RangeOfUint as Nr, MarkedReadStatus as Nt, ScopeParams as O, ConnectionConfig as On, ModelEvent as Or, PipelineTriggerType as Ot, PipelineRunsQuery as P, ConnectionsQuery as Pn, RasterMode as Pr, MemberInvitedParams as Pt, LabelLocale as Q, AuthToken as Qn, TimeSpan as Qr, MemberSortField as Qt, AudioRedaction as R, OpenAiCredentials as Rn, TabularAuditKind as Rr, NotificationPage as Rt, CountryCode as S, UpdateAccount as Si, UpdateFile as Sn, ImageData as Sr, Pipeline as St, LanguageSpan as T, AnthropicCredentials as Tn, ImageHint as Tr, PipelineStatus as Tt, DateGranularity as U, SyncMode as Un, TabularLocation as Ur, PipelineRunFailedParams as Ut, ConfidenceThreshold as V, SyncConnection as Vn, TabularEntityRecord as Vr, PipelineRunAnalyzedParams as Vt, DateStyle as W, SyncSchedule as Wn, TextAuditEvent as Wr, SystemAnnouncementParams as Wt, Label as X, RecognizerCatalog as Xn, TextHint as Xr, Member as Xt, ImageRedaction as Y, LabelCatalog as Yn, TextEntityRecord as Yr, ListMembers as Yt, LabelEntry as Z, RegisteredRecognizer as Zn, TextLocation as Zr, MemberPage as Zt, WebhookId as _, WorkspaceActivityParams as _i, FileKind as _n, EntityCoRef as _r, TerminalFallback as _t, RetentionSettings as a, UpdateApiToken as ai, InvitePage as an, AudioAuditLog as ar, PciPanRender as at, WebhookStatus as b, Handle as bi, ListFiles as bn, ImageAuditKind as br, Waveform as bt, WorkspacePage as c, ActivityPayload as ci, InviteSortField as cn, AudioEntityRecord as cr, PolicyDraft as ct, CreateWebhook as d, InviteActivityParams as di, ReplyInvite as dn, AuditContext as dr, PolicySummaryPage as dt, ApiTokenPage as ei, CreateInvite as en, Signup as er, LabelScope as et, TestWebhook as f, MemberActivityParams as fi, SortOrder as fn, AuditHash as fr, PolicyTemplate as ft, WebhookEvent as g, WebhookActivityParams as gi, File as gn, Dpi as gr, TemplateOrigin as gt, WebhookCreated as h, PolicyActivityParams as hi, HealthStatus as hn, Dimensions as hr, TabularRedaction as ht, RetentionOverride as i, TokenExpiration as ii, InviteExpiration as in, AudioAuditKind as ir, PciDssPart as it, PipelineRun as j, ConnectionSync as jn, Point as jr, ConnectionSyncCompletedParams as jt, Audit as k, ConnectionId as kn, OperatorId as kr, UpdatePipeline as kt, WorkspaceRole as l, ConnectionActivityParams as li, InviteStatus as ln, AudioHint as lr, PolicyRule as lt, Webhook as m, PipelineRunActivityParams as mi, Health as mn, Category as mr, Sha2Algorithm as mt, OcrPolicy as n, ApiTokenWithJWT as ni, Invite as nn, AttributionKind as nr, LocalizedText as nt, UpdateWorkspace as o, Activity as oi, InvitePreview as on, AudioData as or, Policy as ot, UpdateWebhook as p, PipelineActivityParams as pi, ComponentHealth as pn, BoundingBox as pr, Predicate as pt, HipaaAccountNumbers as q, SyncTriggerType as qn, TextData as qr, UnreadStatus as qt, Retention as r, CreateApiToken as ri, InviteCode as rn, AudioAuditEvent as rr, ModalityRedactions as rt, Workspace as s, ActivityPage as si, InviteSent as sn, AudioEntity as sr, PolicyDefinition as st, CreateWorkspace as t, ApiTokenType as ti, GenerateInviteCode as tn, Attribution as tr, LanguageTag as tt, WorkspaceSettings as u, FileActivityParams as ui, ListInvites as un, AudioLocation as ur, PolicySummary as ut, WebhookPage as v, Account as vi, FilePage as vn, EntityGroup as vr, TextRedaction as vt, LanguageProvenance as w, ValidationErrorDetail as wn, ImageEntityRecord as wr, PipelineFilter as wt, Confidence as x, PublicAccount as xi, ModalityToken as xn, ImageAuditLog as xr, CreatePipeline as xt, WebhookResult as y, AccountRef as yi, FormatToken as yn, ImageAuditEvent as yr, UpdatePolicy as yt, ClampBucket as z, S3Credentials as zn, TabularAuditLog as zr, NotificationPayload as zt };
13940
+ //# sourceMappingURL=index-CEbvQONt.d.ts.map