@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.
- package/CHANGELOG.md +45 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/{client-CIL-TsfC.d.ts → client-DC7qTMxC.d.ts} +2 -2
- package/dist/{client-CIL-TsfC.d.ts.map → client-DC7qTMxC.d.ts.map} +1 -1
- package/dist/datatypes/index.d.ts +2 -2
- package/dist/{errors-BOCjsE9G.d.ts → errors-Czui86CH.d.ts} +2 -2
- package/dist/{errors-BOCjsE9G.d.ts.map → errors-Czui86CH.d.ts.map} +1 -1
- package/dist/{index-Zd5G8h44.d.ts → index-CEbvQONt.d.ts} +345 -249
- package/dist/index-CEbvQONt.d.ts.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/services/index.d.ts +1 -1
- package/dist/webhooks/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/index-Zd5G8h44.d.ts.map +0 -1
|
@@ -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`]
|
|
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:
|
|
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 *
|
|
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
|
-
*
|
|
8124
|
-
*
|
|
8125
|
-
*
|
|
8126
|
-
* The
|
|
8127
|
-
*
|
|
8128
|
-
*
|
|
8129
|
-
*
|
|
8130
|
-
*
|
|
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
|
|
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`]
|
|
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
|
|
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`]
|
|
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
|
|
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`]:
|
|
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
|
|
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 [`
|
|
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
|
-
|
|
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"`)
|
|
8792
|
-
* - **Localized map** (`{"en": "90 or older", "fr": "90 ou plus"}`)
|
|
8793
|
-
*
|
|
8794
|
-
*
|
|
8795
|
-
* - **Format template** (`{"format": "{n} or older"}`)
|
|
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
|
|
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"]["
|
|
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
|
|
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)
|
|
9506
|
+
* - [`Erase`](Self::Erase): the default no-lawful-basis posture.
|
|
9506
9507
|
* Every match is removed.
|
|
9507
|
-
* - [`Pseudonymize`](Self::Pseudonymize)
|
|
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
|
|
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)
|
|
9523
|
+
* - [`Article9`](Self::Article9): the nine Article 9(1)
|
|
9523
9524
|
* special categories only. The default.
|
|
9524
|
-
* - [`Article9WithReidHardening`](Self::Article9WithReidHardening)
|
|
9525
|
-
* Article 9 plus
|
|
9526
|
-
*
|
|
9527
|
-
*
|
|
9528
|
-
*
|
|
9529
|
-
*
|
|
9530
|
-
*
|
|
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)
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
10283
|
+
* @description A named set of labels a [`PolicyDefinition`] detects.
|
|
10355
10284
|
*
|
|
10356
|
-
*
|
|
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
|
-
|
|
10301
|
+
LabelScope: {
|
|
10359
10302
|
/**
|
|
10360
|
-
* @description
|
|
10303
|
+
* @description Why this set exists: the authority that defines it.
|
|
10361
10304
|
*
|
|
10362
|
-
*
|
|
10363
|
-
*
|
|
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
|
-
|
|
10366
|
-
/** @description
|
|
10367
|
-
|
|
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)
|
|
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)
|
|
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
|
|
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/
|
|
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
|
|
11260
|
-
*
|
|
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
|
|
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
|
-
* [`
|
|
11296
|
-
* [`
|
|
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::
|
|
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::
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 [`
|
|
11502
|
+
* @description Name of the [`LabelScope`] to match against.
|
|
11480
11503
|
*
|
|
11481
|
-
* [`
|
|
11504
|
+
* [`LabelScope`]: super::LabelScope
|
|
11482
11505
|
*/
|
|
11483
|
-
|
|
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
|
|
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
|
|
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
|
|
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`]:
|
|
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
|
|
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`]
|
|
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
|
|
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"]["
|
|
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
|
|
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
|
|
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
|
|
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 {
|
|
13844
|
-
//# sourceMappingURL=index-
|
|
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
|