@nvisy/sdk 0.26.0 → 0.27.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 +24 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/{client-CIL-TsfC.d.ts → client-Dhdf1wiy.d.ts} +2 -2
- package/dist/{client-CIL-TsfC.d.ts.map → client-Dhdf1wiy.d.ts.map} +1 -1
- package/dist/datatypes/index.d.ts +2 -2
- package/dist/{errors-BOCjsE9G.d.ts → errors-CU_tuovi.d.ts} +2 -2
- package/dist/{errors-BOCjsE9G.d.ts.map → errors-CU_tuovi.d.ts.map} +1 -1
- package/dist/{index-Zd5G8h44.d.ts → index-D7O7ZJNs.d.ts} +294 -176
- package/dist/index-D7O7ZJNs.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
|
|
@@ -9519,15 +9520,22 @@ interface components {
|
|
|
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
|
*/
|
|
@@ -10269,27 +10256,32 @@ interface components {
|
|
|
10269
10256
|
* rule that targets that list references the group by name
|
|
10270
10257
|
* instead of respelling the labels. When elide adds a new label
|
|
10271
10258
|
* to a category, extending the group covers every rule that
|
|
10272
|
-
* referenced it
|
|
10273
|
-
*
|
|
10274
|
-
* **Compilation**:
|
|
10275
|
-
* `group
|
|
10276
|
-
* group
|
|
10277
|
-
*
|
|
10278
|
-
*
|
|
10279
|
-
*
|
|
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.
|
|
10259
|
+
* referenced it: no rule edit.
|
|
10260
|
+
*
|
|
10261
|
+
* **Compilation**: groups stay on the policy. Evaluating a
|
|
10262
|
+
* [`Predicate::LabelInGroup { group }`] looks the name up in
|
|
10263
|
+
* the policy's own group table and tests the entity's label for
|
|
10264
|
+
* membership. Nothing is stamped onto the label catalog, so two
|
|
10265
|
+
* policies that both declare `hipaa_18` with different labelsets
|
|
10266
|
+
* cannot step on each other.
|
|
10283
10267
|
*
|
|
10284
10268
|
* **Unknown group names error at request validation**, not at
|
|
10285
10269
|
* apply time. A typo doesn't silently underfire.
|
|
10286
10270
|
*
|
|
10287
10271
|
* [`PolicyDefinition`]: super::PolicyDefinition
|
|
10288
|
-
* [`Predicate::LabelInGroup`]:
|
|
10289
|
-
* [`Predicate::LabelInGroup { group }`]:
|
|
10290
|
-
* [`Predicate::TagOneOf { tags: ["group:<policy_id>:<name>"] }`]: super::predicate::Predicate::TagOneOf
|
|
10272
|
+
* [`Predicate::LabelInGroup`]: crate::Predicate::LabelInGroup
|
|
10273
|
+
* [`Predicate::LabelInGroup { group }`]: crate::Predicate::LabelInGroup
|
|
10291
10274
|
*/
|
|
10292
10275
|
LabelGroup: {
|
|
10276
|
+
/**
|
|
10277
|
+
* @description Why this cluster exists: the authority that defines it.
|
|
10278
|
+
*
|
|
10279
|
+
* A group usually maps to one regulatory category (HIPAA's
|
|
10280
|
+
* eighteen identifiers, GDPR Article 9(1)'s nine special
|
|
10281
|
+
* categories), so this is where that mapping is recorded as
|
|
10282
|
+
* data rather than prose.
|
|
10283
|
+
*/
|
|
10284
|
+
attribution?: components["schemas"]["AttributionKind"];
|
|
10293
10285
|
/** @description Optional description for reviewers. */
|
|
10294
10286
|
description?: string;
|
|
10295
10287
|
/**
|
|
@@ -10297,7 +10289,7 @@ interface components {
|
|
|
10297
10289
|
*
|
|
10298
10290
|
* A label that doesn't appear in the request's compiled
|
|
10299
10291
|
* [`LabelCatalog`] is silently skipped at tag-synthesis time
|
|
10300
|
-
*
|
|
10292
|
+
* : a group can safely list labels the current build
|
|
10301
10293
|
* doesn't emit (e.g. modality-gated ones); rules keyed off
|
|
10302
10294
|
* the group still fire on whatever labels *are* present.
|
|
10303
10295
|
*
|
|
@@ -10308,11 +10300,10 @@ interface components {
|
|
|
10308
10300
|
* @description Stable name a [`Predicate::LabelInGroup`] references.
|
|
10309
10301
|
*
|
|
10310
10302
|
* Free-form; a policy layer picks the vocabulary. Recommend
|
|
10311
|
-
* snake_case identifiers (`hipaa_18`, `gdpr_article_9`)
|
|
10312
|
-
* they
|
|
10313
|
-
* read cleanly in audit provenance.
|
|
10303
|
+
* snake_case identifiers (`hipaa_18`, `gdpr_article_9`) -
|
|
10304
|
+
* they read cleanly in audit provenance.
|
|
10314
10305
|
*
|
|
10315
|
-
* [`Predicate::LabelInGroup`]:
|
|
10306
|
+
* [`Predicate::LabelInGroup`]: crate::Predicate::LabelInGroup
|
|
10316
10307
|
*/
|
|
10317
10308
|
name: string;
|
|
10318
10309
|
};
|
|
@@ -10359,8 +10350,9 @@ interface components {
|
|
|
10359
10350
|
/**
|
|
10360
10351
|
* @description Builtin label names to enable.
|
|
10361
10352
|
*
|
|
10362
|
-
* E.g. `"email_address"`, `"phone_number"`.
|
|
10363
|
-
*
|
|
10353
|
+
* E.g. `"email_address"`, `"phone_number"`. An unknown name
|
|
10354
|
+
* is rejected at request compile time: a typo fails loudly
|
|
10355
|
+
* rather than quietly dropping the label from the policy.
|
|
10364
10356
|
*/
|
|
10365
10357
|
builtins?: components["schemas"]["LabelRef"][];
|
|
10366
10358
|
/** @description Custom labels defined inline by the caller. */
|
|
@@ -10777,33 +10769,6 @@ interface components {
|
|
|
10777
10769
|
/** @description Whether to send email notifications. */
|
|
10778
10770
|
notifyViaEmail: boolean;
|
|
10779
10771
|
};
|
|
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
10772
|
/**
|
|
10808
10773
|
* @description How a workspace's documents are turned into images for OCR during detection.
|
|
10809
10774
|
*
|
|
@@ -10851,12 +10816,12 @@ interface components {
|
|
|
10851
10816
|
/**
|
|
10852
10817
|
* @description Which PCI DSS subsection this template addresses.
|
|
10853
10818
|
*
|
|
10854
|
-
* - [`PanRender`](Self::PanRender)
|
|
10819
|
+
* - [`PanRender`](Self::PanRender): §3.5.1 render posture for
|
|
10855
10820
|
* stored Primary Account Numbers. Carries a [`PciPanRender`]
|
|
10856
10821
|
* picking between the shipped render approaches.
|
|
10857
|
-
* - [`SavErase`](Self::SavErase)
|
|
10822
|
+
* - [`SavErase`](Self::SavErase): §3.3.1 prohibition on
|
|
10858
10823
|
* storing Sensitive Authentication Data (CVV/CVC, track data,
|
|
10859
|
-
* PIN blocks) after authorization. No options
|
|
10824
|
+
* PIN blocks) after authorization. No options: SAV has one
|
|
10860
10825
|
* posture: erase.
|
|
10861
10826
|
*/
|
|
10862
10827
|
PciDssPart: {
|
|
@@ -10893,7 +10858,7 @@ interface components {
|
|
|
10893
10858
|
* Callers wanting more than one dispatched from one policy
|
|
10894
10859
|
* compose multiple templates.
|
|
10895
10860
|
*
|
|
10896
|
-
* [`Engine::with_key_provider`]: https://docs.rs/
|
|
10861
|
+
* [`Engine::with_key_provider`]: https://docs.rs/elide-pipeline/latest/elide_pipeline/struct.Engine.html
|
|
10897
10862
|
*/
|
|
10898
10863
|
PciPanRender: "truncate" | "truncate_last_four" | "hmac_sha256" | "hmac_sha512";
|
|
10899
10864
|
/** @description Pipeline response. */
|
|
@@ -11265,24 +11230,19 @@ interface components {
|
|
|
11265
11230
|
/**
|
|
11266
11231
|
* @description Named clusters of [`LabelRef`]s this policy's rules may
|
|
11267
11232
|
* reference by name via [`Predicate::LabelInGroup`]. Scoped
|
|
11268
|
-
* to this policy
|
|
11233
|
+
* to this policy: a rule can only name a group its own
|
|
11269
11234
|
* policy declared; unknown references error at request
|
|
11270
11235
|
* validation. Two policies that both declare `hipaa_18` with
|
|
11271
11236
|
* different labelsets stay independent.
|
|
11272
11237
|
*
|
|
11273
11238
|
* [`LabelRef`]: elide_core::entity::LabelRef
|
|
11274
|
-
* [`Predicate::LabelInGroup`]:
|
|
11239
|
+
* [`Predicate::LabelInGroup`]: crate::Predicate::LabelInGroup
|
|
11275
11240
|
*/
|
|
11276
11241
|
groups?: components["schemas"]["LabelGroup"][];
|
|
11277
11242
|
/**
|
|
11278
11243
|
* Format: uuid
|
|
11279
11244
|
* @description Stable identifier. UUIDv7 recommended (time-ordered);
|
|
11280
11245
|
* 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
11246
|
*/
|
|
11287
11247
|
id: string;
|
|
11288
11248
|
/**
|
|
@@ -11293,10 +11253,56 @@ interface components {
|
|
|
11293
11253
|
* tag-based [`Predicate::TagOneOf`] matching.
|
|
11294
11254
|
*
|
|
11295
11255
|
* [`LabelCatalog`]: elide_core::entity::LabelCatalog
|
|
11296
|
-
* [`Predicate::TagOneOf`]:
|
|
11256
|
+
* [`Predicate::TagOneOf`]: crate::Predicate::TagOneOf
|
|
11257
|
+
*/
|
|
11258
|
+
labels?: components["schemas"]["Labels"];
|
|
11259
|
+
/**
|
|
11260
|
+
* @description Human-readable name. Display-only. Does not key anything.
|
|
11261
|
+
*
|
|
11262
|
+
* Names the policy in a redaction event's [`Attribution`]
|
|
11263
|
+
* when a rule that fired carried no [`AttributionKind::Cited`]
|
|
11264
|
+
* attribution to render.
|
|
11265
|
+
*
|
|
11266
|
+
* [`Attribution`]: elide_core::entity::audit::Attribution
|
|
11267
|
+
* [`AttributionKind::Cited`]: elide_core::entity::audit::AttributionKind::Cited
|
|
11268
|
+
*/
|
|
11269
|
+
name: string;
|
|
11270
|
+
/** @description Ordered rules. First match wins within this policy. */
|
|
11271
|
+
rules?: components["schemas"]["PolicyRule"][];
|
|
11272
|
+
/**
|
|
11273
|
+
* @description The shipped template this policy was built from, when it
|
|
11274
|
+
* was.
|
|
11275
|
+
*
|
|
11276
|
+
* Provenance, not fidelity: callers are expected to mutate a
|
|
11277
|
+
* template's policy before submitting, so this records where
|
|
11278
|
+
* the policy came from and says nothing about whether it
|
|
11279
|
+
* still matches. `None` means hand-authored.
|
|
11280
|
+
*/
|
|
11281
|
+
template?: components["schemas"]["TemplateOrigin"];
|
|
11282
|
+
};
|
|
11283
|
+
/**
|
|
11284
|
+
* @description A client-authored policy body: the parts of a policy definition a caller may
|
|
11285
|
+
* set, without the fields the server owns.
|
|
11286
|
+
*
|
|
11287
|
+
* The engine's `PolicyDefinition` also carries an `id` and a `template` origin.
|
|
11288
|
+
* Both are server-owned — the `id` is minted at creation and the `template`
|
|
11289
|
+
* records which built-in a policy was seeded from (provenance). Neither is
|
|
11290
|
+
* representable here, so a client cannot mint ids or forge provenance; the
|
|
11291
|
+
* server stamps them in [`into_definition`](PolicyDraft::into_definition).
|
|
11292
|
+
*/
|
|
11293
|
+
PolicyDraft: {
|
|
11294
|
+
/** @description Optional description for reviewers. */
|
|
11295
|
+
description?: string;
|
|
11296
|
+
/** @description Per-policy catch-all, fired when no rule matched. */
|
|
11297
|
+
fallback?: components["schemas"]["ModalityRedactions"];
|
|
11298
|
+
/** @description Named clusters of labels this policy's rules may reference by name. */
|
|
11299
|
+
groups?: components["schemas"]["LabelGroup"][];
|
|
11300
|
+
/**
|
|
11301
|
+
* @description Vocabulary the policy operates over: builtins picked by name plus
|
|
11302
|
+
* caller-authored custom label schemas.
|
|
11297
11303
|
*/
|
|
11298
11304
|
labels?: components["schemas"]["Labels"];
|
|
11299
|
-
/** @description Human-readable name. Display-only.
|
|
11305
|
+
/** @description Human-readable name. Display-only. */
|
|
11300
11306
|
name: string;
|
|
11301
11307
|
/** @description Ordered rules. First match wins within this policy. */
|
|
11302
11308
|
rules?: components["schemas"]["PolicyRule"][];
|
|
@@ -11321,16 +11327,30 @@ interface components {
|
|
|
11321
11327
|
* [`PolicyDefinition`]: super::PolicyDefinition
|
|
11322
11328
|
*/
|
|
11323
11329
|
PolicyRule: {
|
|
11330
|
+
/**
|
|
11331
|
+
* @description Why this rule exists: the authority it answers to.
|
|
11332
|
+
*
|
|
11333
|
+
* The engine renders it into the redaction event's
|
|
11334
|
+
* [`Attribution`], so a reviewer sees the provision rather
|
|
11335
|
+
* than a bare UUID. `None` falls back to recording the
|
|
11336
|
+
* policy and rule ids alone.
|
|
11337
|
+
*
|
|
11338
|
+
* Optional so ad-hoc and hand-authored rules stay cheap to
|
|
11339
|
+
* write; the shipped templates set it on every rule.
|
|
11340
|
+
*
|
|
11341
|
+
* [`Attribution`]: elide_core::entity::audit::Attribution
|
|
11342
|
+
*/
|
|
11343
|
+
attribution?: components["schemas"]["AttributionKind"];
|
|
11324
11344
|
/** @description Optional description for reviewers. */
|
|
11325
11345
|
description?: string;
|
|
11326
11346
|
/**
|
|
11327
11347
|
* Format: uuid
|
|
11328
11348
|
* @description Stable identifier. UUIDv7 recommended. Engine stamps it
|
|
11329
|
-
* into the redaction event's [`Attribution::
|
|
11349
|
+
* into the redaction event's [`Attribution::source_id`] so
|
|
11330
11350
|
* reviewers can trace which rule fired. Every attachment a
|
|
11331
11351
|
* [`RuleDispatch::Table`] expands into shares this UUID.
|
|
11332
11352
|
*
|
|
11333
|
-
* [`Attribution::
|
|
11353
|
+
* [`Attribution::source_id`]: elide_core::entity::audit::Attribution::source_id
|
|
11334
11354
|
*/
|
|
11335
11355
|
id: string;
|
|
11336
11356
|
/** @description Human-readable name. Display-only. */
|
|
@@ -11343,7 +11363,7 @@ interface components {
|
|
|
11343
11363
|
* policy in the chain).
|
|
11344
11364
|
*
|
|
11345
11365
|
* Boxed to keep [`RuleDispatch`]'s stack footprint
|
|
11346
|
-
* small
|
|
11366
|
+
* small: [`ModalityRedactions`] carries four optional
|
|
11347
11367
|
* per-modality operator enums and dominates the variant
|
|
11348
11368
|
* size. `Table`'s `Vec<LabelEntry>` already heap-allocates
|
|
11349
11369
|
* its entries, so boxing here keeps the two variants
|
|
@@ -11422,13 +11442,43 @@ interface components {
|
|
|
11422
11442
|
* operator options,
|
|
11423
11443
|
* `{"kind": "pci_dss_pan", "render": "hmac_sha256"}`.
|
|
11424
11444
|
*/
|
|
11425
|
-
PolicyTemplate:
|
|
11445
|
+
PolicyTemplate: {
|
|
11446
|
+
/**
|
|
11447
|
+
* @description Which §(J) account-identifier labels to remove. Defaults
|
|
11448
|
+
* to [`HipaaAccountNumbers::Standard`] (bank account +
|
|
11449
|
+
* IBAN + payment card). Pick
|
|
11450
|
+
* [`HipaaAccountNumbers::Extended`] to add crypto wallet
|
|
11451
|
+
* addresses under the §(R) catch-all reading.
|
|
11452
|
+
* @default standard
|
|
11453
|
+
*/
|
|
11454
|
+
accounts: components["schemas"]["HipaaAccountNumbers"];
|
|
11426
11455
|
/** @constant */
|
|
11427
11456
|
kind: "hipaa_deidentification";
|
|
11428
|
-
|
|
11457
|
+
/**
|
|
11458
|
+
* @description Which §164.514 method to apply. See [`HipaaDeidMethod`]
|
|
11459
|
+
* for the tradeoff.
|
|
11460
|
+
*/
|
|
11461
|
+
method: components["schemas"]["HipaaDeidMethod"];
|
|
11462
|
+
} | {
|
|
11429
11463
|
/** @constant */
|
|
11430
11464
|
kind: "gdpr_article9";
|
|
11431
|
-
|
|
11465
|
+
/**
|
|
11466
|
+
* @description Which sensitive-data labels to cover. Defaults to
|
|
11467
|
+
* [`GdprSensitiveScope::Article9`] (nine Article 9(1)
|
|
11468
|
+
* categories only). Pick
|
|
11469
|
+
* [`GdprSensitiveScope::Article9WithReidHardening`] to add
|
|
11470
|
+
* the quasi-identifier set, or
|
|
11471
|
+
* [`GdprSensitiveScope::Article9And10`] to also cover
|
|
11472
|
+
* Article 10 criminal-justice data.
|
|
11473
|
+
* @default article9
|
|
11474
|
+
*/
|
|
11475
|
+
scope: components["schemas"]["GdprSensitiveScope"];
|
|
11476
|
+
/**
|
|
11477
|
+
* @description Which operator to apply to matches. See
|
|
11478
|
+
* [`GdprArticle9Treatment`] for the tradeoff.
|
|
11479
|
+
*/
|
|
11480
|
+
treatment: components["schemas"]["GdprArticle9Treatment"];
|
|
11481
|
+
} | {
|
|
11432
11482
|
/** @constant */
|
|
11433
11483
|
kind: "pci_dss";
|
|
11434
11484
|
/**
|
|
@@ -11439,9 +11489,6 @@ interface components {
|
|
|
11439
11489
|
} | {
|
|
11440
11490
|
/** @constant */
|
|
11441
11491
|
kind: "ccpa";
|
|
11442
|
-
} | {
|
|
11443
|
-
/** @constant */
|
|
11444
|
-
kind: "soc2_secrets";
|
|
11445
11492
|
};
|
|
11446
11493
|
/**
|
|
11447
11494
|
* @description Closed polygon, given by its ordered vertices.
|
|
@@ -11529,6 +11576,33 @@ interface components {
|
|
|
11529
11576
|
/** Format: uint */
|
|
11530
11577
|
start: number;
|
|
11531
11578
|
};
|
|
11579
|
+
/**
|
|
11580
|
+
* @description Policy for rendering a document's pages to images.
|
|
11581
|
+
*
|
|
11582
|
+
* [`Auto`] is the default: use the text layer where it exists (redact by
|
|
11583
|
+
* deleting glyphs) and render only where it is absent. [`Always`] renders
|
|
11584
|
+
* every page regardless of the text layer, for documents whose text is
|
|
11585
|
+
* missing, garbled, or a watermark. [`Never`] relies on the text layer only.
|
|
11586
|
+
*
|
|
11587
|
+
* Serializes with an internal `kind` tag (`{"kind": "auto"}`,
|
|
11588
|
+
* `{"kind": "always", "dpi": 300}`, `{"kind": "never"}`).
|
|
11589
|
+
*
|
|
11590
|
+
* [`Auto`]: RasterMode::Auto
|
|
11591
|
+
* [`Always`]: RasterMode::Always
|
|
11592
|
+
* [`Never`]: RasterMode::Never
|
|
11593
|
+
*/
|
|
11594
|
+
RasterMode: {
|
|
11595
|
+
/** @constant */
|
|
11596
|
+
kind: "auto";
|
|
11597
|
+
} | {
|
|
11598
|
+
/** @description Resolution to render pages at; [`Dpi::OCR`] (300) is typical. */
|
|
11599
|
+
dpi: components["schemas"]["Dpi"];
|
|
11600
|
+
/** @constant */
|
|
11601
|
+
kind: "always";
|
|
11602
|
+
} | {
|
|
11603
|
+
/** @constant */
|
|
11604
|
+
kind: "never";
|
|
11605
|
+
};
|
|
11532
11606
|
/** @description The engine's registered recognizers, grouped by kind. */
|
|
11533
11607
|
RecognizerCatalog: {
|
|
11534
11608
|
/** @description LLM recognizers. */
|
|
@@ -11547,20 +11621,28 @@ interface components {
|
|
|
11547
11621
|
*
|
|
11548
11622
|
* Owned rather than borrowing from the engine so callers can
|
|
11549
11623
|
* carry the value past the borrow that produced it. Cloning is
|
|
11550
|
-
* cheap
|
|
11624
|
+
* cheap: [`HipStr`] shares the backing string via an `Arc`
|
|
11551
11625
|
* header.
|
|
11552
11626
|
*/
|
|
11553
11627
|
RegisteredRecognizer: {
|
|
11554
11628
|
/** @description Optional human-readable description. */
|
|
11555
11629
|
description?: string;
|
|
11556
11630
|
/**
|
|
11557
|
-
* @description Recognizer name
|
|
11631
|
+
* @description Recognizer name: the identifier a request's allowlist
|
|
11558
11632
|
* picks by.
|
|
11559
11633
|
*/
|
|
11560
11634
|
name: string;
|
|
11561
11635
|
/**
|
|
11562
11636
|
* @description Provider slug. NER: `"bento"`, `"mock"`. LLM: `"openai"`,
|
|
11563
11637
|
* `"anthropic"`, `"gemini"`, `"ollama"`, `"mock"`.
|
|
11638
|
+
*
|
|
11639
|
+
* Owned so the type deserializes from a runtime buffer: a
|
|
11640
|
+
* `&'static str` field would make the derive emit
|
|
11641
|
+
* `Deserialize<'static>` only, which compiles against string
|
|
11642
|
+
* literals but not against an owned `String` or a reader -
|
|
11643
|
+
* the shapes a host actually decodes from. Borrowing a
|
|
11644
|
+
* `&'static str` into a [`HipStr`] does not allocate, so
|
|
11645
|
+
* engine-side construction stays free.
|
|
11564
11646
|
*/
|
|
11565
11647
|
provider: string;
|
|
11566
11648
|
};
|
|
@@ -11641,7 +11723,7 @@ interface components {
|
|
|
11641
11723
|
* @description A reviewer-supplied redaction override with the policy
|
|
11642
11724
|
* authority it draws from.
|
|
11643
11725
|
*
|
|
11644
|
-
* The `policy_id` isn't just for audit
|
|
11726
|
+
* The `policy_id` isn't just for audit: it also picks which
|
|
11645
11727
|
* per-policy pseudonym vault and per-policy [`KeyProvider`] the
|
|
11646
11728
|
* override's operator resolves against, so an override using
|
|
11647
11729
|
* [`Pseudonymize`] or [`HmacHash`] stays consistent with the
|
|
@@ -11665,7 +11747,7 @@ interface components {
|
|
|
11665
11747
|
* the anonymize request. The audit event stamps this UUID
|
|
11666
11748
|
* as the attribution `name`.
|
|
11667
11749
|
*
|
|
11668
|
-
* [`PolicyDefinition`]:
|
|
11750
|
+
* [`PolicyDefinition`]: elide_governance::PolicyDefinition
|
|
11669
11751
|
*/
|
|
11670
11752
|
policyId: string;
|
|
11671
11753
|
};
|
|
@@ -12336,7 +12418,7 @@ interface components {
|
|
|
12336
12418
|
* `Some(...)` overrides that rule for this specific entity
|
|
12337
12419
|
* at apply time. Reviewer overrides take precedence over
|
|
12338
12420
|
* every policy rule and inherit the authority of the
|
|
12339
|
-
* [`Review::policy_id`] they name
|
|
12421
|
+
* [`Review::policy_id`] they name: the audit event's
|
|
12340
12422
|
* attribution stamps that policy so the trail names the
|
|
12341
12423
|
* authority under which the override fired.
|
|
12342
12424
|
*/
|
|
@@ -12429,6 +12511,39 @@ interface components {
|
|
|
12429
12511
|
/** @constant */
|
|
12430
12512
|
kind: "drop_column";
|
|
12431
12513
|
};
|
|
12514
|
+
/**
|
|
12515
|
+
* @description The template a [`PolicyDefinition`] was built from.
|
|
12516
|
+
*
|
|
12517
|
+
* Records **provenance, not fidelity**. Templates are plain data
|
|
12518
|
+
* and callers are expected to mutate the returned policy before
|
|
12519
|
+
* submitting it (swapping an operator, widening a group), so this
|
|
12520
|
+
* says "built from `hipaa_deid_safe_harbor` v1.0.0" and nothing
|
|
12521
|
+
* about whether the policy still matches what that template
|
|
12522
|
+
* ships. A reviewer who needs that rebuilds the template and
|
|
12523
|
+
* diffs.
|
|
12524
|
+
*
|
|
12525
|
+
* `None` on a policy means hand-authored, not "unknown template".
|
|
12526
|
+
*
|
|
12527
|
+
* Both fields are needed: a policy built from v1 of a template
|
|
12528
|
+
* can differ materially from one built from v2 (a widened label
|
|
12529
|
+
* set, a changed operator), and an audit that records only the id
|
|
12530
|
+
* cannot tell the two apart.
|
|
12531
|
+
*
|
|
12532
|
+
* [`PolicyDefinition`]: super::PolicyDefinition
|
|
12533
|
+
*/
|
|
12534
|
+
TemplateOrigin: {
|
|
12535
|
+
/**
|
|
12536
|
+
* @description The template's machine key: `"hipaa_deid_safe_harbor"`,
|
|
12537
|
+
* `"pci_dss_pan_hmac_sha256"`. Stable across version bumps.
|
|
12538
|
+
*/
|
|
12539
|
+
id: string;
|
|
12540
|
+
/**
|
|
12541
|
+
* @description The template's own semver version, distinct from the
|
|
12542
|
+
* crate's release version. A shipped template bumps this when
|
|
12543
|
+
* its labelset or operator dispatch changes.
|
|
12544
|
+
*/
|
|
12545
|
+
version: string;
|
|
12546
|
+
};
|
|
12432
12547
|
/**
|
|
12433
12548
|
* @description Fallback operator that runs when a declinable primary
|
|
12434
12549
|
* ([`TextRedaction::Clamp`], [`TextRedaction::GeneralizeDate`])
|
|
@@ -12442,7 +12557,7 @@ interface components {
|
|
|
12442
12557
|
* or `→ Mask` / `→ Keep` on the rare occasion those fit.
|
|
12443
12558
|
*
|
|
12444
12559
|
* Absent from the primary's spec, elide's baked-in default is
|
|
12445
|
-
* [`Erase`]
|
|
12560
|
+
* [`Erase`]: a bare [`TextRedaction::Clamp`] without a `fallback`
|
|
12446
12561
|
* erases values that aren't numeric.
|
|
12447
12562
|
*
|
|
12448
12563
|
* [`Erase`]: TerminalFallback::Erase
|
|
@@ -12812,7 +12927,7 @@ interface components {
|
|
|
12812
12927
|
* `Some(...)` overrides that rule for this specific entity
|
|
12813
12928
|
* at apply time. Reviewer overrides take precedence over
|
|
12814
12929
|
* every policy rule and inherit the authority of the
|
|
12815
|
-
* [`Review::policy_id`] they name
|
|
12930
|
+
* [`Review::policy_id`] they name: the audit event's
|
|
12816
12931
|
* attribution stamps that policy so the trail names the
|
|
12817
12932
|
* authority under which the override fired.
|
|
12818
12933
|
*/
|
|
@@ -13165,11 +13280,13 @@ interface components {
|
|
|
13165
13280
|
/**
|
|
13166
13281
|
* @description Request payload for updating an existing workspace policy.
|
|
13167
13282
|
*
|
|
13168
|
-
* Replacing the `definition` replaces the whole policy body.
|
|
13283
|
+
* Replacing the `definition` replaces the whole policy body. The policy's
|
|
13284
|
+
* template origin is server-owned and preserved across updates — it is not
|
|
13285
|
+
* settable here.
|
|
13169
13286
|
*/
|
|
13170
13287
|
UpdatePolicy: {
|
|
13171
13288
|
/** @description New policy body (replaces the stored definition). */
|
|
13172
|
-
definition?: components["schemas"]["
|
|
13289
|
+
definition?: components["schemas"]["PolicyDraft"];
|
|
13173
13290
|
/** @description Policy description. */
|
|
13174
13291
|
description?: string;
|
|
13175
13292
|
/** @description Human-readable policy display name. */
|
|
@@ -13581,10 +13698,11 @@ type Schemas$16 = components["schemas"];
|
|
|
13581
13698
|
type EntityGroup = Schemas$16["EntityGroup"];
|
|
13582
13699
|
type AuditContext = Schemas$16["AuditContext"];
|
|
13583
13700
|
type EntityCoRef = Schemas$16["EntityCoRef"];
|
|
13584
|
-
type
|
|
13701
|
+
type RasterMode = Schemas$16["RasterMode"];
|
|
13585
13702
|
type Dpi = Schemas$16["Dpi"];
|
|
13586
13703
|
type Review = Schemas$16["Review"];
|
|
13587
13704
|
type Attribution = Schemas$16["Attribution"];
|
|
13705
|
+
type AttributionKind = Schemas$16["AttributionKind"];
|
|
13588
13706
|
type LeakProfile = Schemas$16["LeakProfile"];
|
|
13589
13707
|
type RuleMatch = Schemas$16["RuleMatch"];
|
|
13590
13708
|
type ModelEvent = Schemas$16["ModelEvent"];
|
|
@@ -13759,14 +13877,14 @@ type Policy = Schemas$4["Policy"];
|
|
|
13759
13877
|
type PolicySummary = Schemas$4["PolicySummary"];
|
|
13760
13878
|
type PolicySummaryPage = Schemas$4["PolicySummaryPage"];
|
|
13761
13879
|
type PolicyDefinition = Schemas$4["PolicyDefinition"];
|
|
13880
|
+
type PolicyDraft = Schemas$4["PolicyDraft"];
|
|
13762
13881
|
type CreatePolicy = Schemas$4["CreatePolicy"];
|
|
13763
13882
|
type UpdatePolicy = Schemas$4["UpdatePolicy"];
|
|
13764
13883
|
type PolicyRule = Schemas$4["PolicyRule"];
|
|
13765
13884
|
type PolicyTemplate = Schemas$4["PolicyTemplate"];
|
|
13766
|
-
type
|
|
13885
|
+
type TemplateOrigin = Schemas$4["TemplateOrigin"];
|
|
13767
13886
|
type HipaaDeidMethod = Schemas$4["HipaaDeidMethod"];
|
|
13768
13887
|
type HipaaAccountNumbers = Schemas$4["HipaaAccountNumbers"];
|
|
13769
|
-
type GdprArticle9 = Schemas$4["GdprArticle9"];
|
|
13770
13888
|
type GdprArticle9Treatment = Schemas$4["GdprArticle9Treatment"];
|
|
13771
13889
|
type GdprSensitiveScope = Schemas$4["GdprSensitiveScope"];
|
|
13772
13890
|
type PciDssPart = Schemas$4["PciDssPart"];
|
|
@@ -13840,5 +13958,5 @@ type Retention = Schemas["Retention"];
|
|
|
13840
13958
|
type RetentionSettings = Schemas["RetentionSettings"];
|
|
13841
13959
|
type RetentionOverride = Schemas["RetentionOverride"];
|
|
13842
13960
|
//#endregion
|
|
13843
|
-
export {
|
|
13844
|
-
//# sourceMappingURL=index-
|
|
13961
|
+
export { LanguageTag as $, AttributionKind as $n, ApiTokenWithJWT as $r, GenerateInviteCode as $t, PipelineRun as A, ConnectionVerification as An, RangeOfUint as Ar, ConnectionSyncFailedParams as At, CreatePolicy as B, SyncMode as Bn, TabularLocation as Br, PipelineRunCompletedParams as Bt, LanguageProvenance as C, AnthropicCredentials as Cn, ImageLocation 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, TabularAuditKind as Fr, NotificationEvent as Ft, HipaaAccountNumbers as G, UpdateConnection as Gn, TextEntity as Gr, UnreadStatus as Gt, DateStyle as H, SyncScheduleInput as Hn, TextAuditKind as Hr, SystemAnnouncementParams as Ht, AudioRedaction as I, S3Credentials as In, TabularAuditLog as Ir, NotificationPage as It, Label as J, RegisteredRecognizer as Jn, TextLocation as Jr, Member as Jt, HipaaDeidMethod as K, LabelCatalog as Kn, TextEntityRecord as Kr, UpdateNotificationSettings as Kt, ClampBucket as L, StorageConfig as Ln, TabularEntity as Lr, NotificationPayload as Lt, PipelineRunStatus as M, CreateConnection as Mn, Review as Mr, MemberInvitedParams as Mt, PipelineRunsQuery as N, GcsCredentials as Nn, RuleMatch as Nr, MemberJoinedParams as Nt, Audit as O, ConnectionSync as On, Point as Or, CursorPagination as Ot, RunMetadata as P, LlmConfig as Pn, TabularAuditEvent as Pr, Notification as Pt, Labels as Q, Attribution as Qn, ApiTokenType as Qr, CreateInvite as Qt, Color as R, SyncConnection as Rn, TabularEntityRecord as Rr, NotificationSettings as Rt, Language as S, ValidationErrorDetail as Sn, ImageHint as Sr, PipelineFilter as St, Languages as T, Connection as Tn, ModelEvent as Tr, PipelineSummaryPage as Tt, GdprArticle9Treatment as U, SyncStatus as Un, TextAuditLog as Ur, SystemReportParams as Ut, DateGranularity as V, SyncSchedule as Vn, TextAuditEvent as Vr, PipelineRunFailedParams as Vt, GdprSensitiveScope as W, SyncTriggerType as Wn, TextData as Wr, UnreadCountEvent as Wt, LabelGroup as X, Login as Xn, ApiToken as Xr, MemberSortField as Xt, LabelEntry as Y, AuthToken as Yn, TimeSpan as Yr, MemberPage as Yt, LabelLocale as Z, Signup as Zn, ApiTokenPage as Zr, UpdateMember as Zt, WebhookPage as _, PublicAccount as _i, FormatToken as _n, ImageAuditKind as _r, UpdatePolicy as _t, RetentionSettings as a, ActivityPayload as ai, InviteSent as an, AudioEntityRecord as ar, PolicyDefinition as at, Confidence as b, UpdateFile as bn, ImageEntity as br, Pipeline as bt, WorkspacePage as c, InviteActivityParams as ci, ListInvites as cn, AuditContext as cr, PolicySummary as ct, CreateWebhook as d, PipelineRunActivityParams as di, ComponentHealth as dn, Category as dr, Predicate as dt, CreateApiToken as ei, Invite as en, AudioAuditEvent as er, LocalizedText as et, TestWebhook as f, PolicyActivityParams as fi, Health as fn, Dimensions as fr, Sha2Algorithm as ft, WebhookEvent as g, AccountRef as gi, FilePage as gn, ImageAuditEvent as gr, TextRedaction as gt, WebhookCreated as h, Account as hi, FileKind as hn, EntityGroup as hr, TerminalFallback as ht, RetentionOverride as i, ActivityPage as ii, InvitePreview as in, AudioEntity as ir, Policy as it, PipelineRunPage as j, ConnectionsQuery as jn, RasterMode as jr, MarkedReadStatus as jt, CreatePipelineRun as k, ConnectionSyncPage as kn, Polygon as kr, ConnectionSyncCompletedParams as kt, WorkspaceRole as l, MemberActivityParams as li, ReplyInvite as ln, AuditHash as lr, PolicySummaryPage as lt, Webhook as m, WorkspaceActivityParams as mi, File as mn, EntityCoRef as mr, TemplateOrigin as mt, OcrPolicy as n, UpdateApiToken as ni, InviteExpiration as nn, AudioAuditLog as nr, PciDssPart as nt, UpdateWorkspace as o, ConnectionActivityParams as oi, InviteSortField as on, AudioHint as or, PolicyDraft as ot, UpdateWebhook as p, WebhookActivityParams as pi, HealthStatus as pn, Dpi as pr, TabularRedaction as pt, ImageRedaction as q, RecognizerCatalog as qn, TextHint as qr, ListMembers as qt, Retention as r, Activity as ri, InvitePage as rn, AudioData as rr, PciPanRender as rt, Workspace as s, FileActivityParams as si, InviteStatus as sn, AudioLocation as sr, PolicyRule as st, CreateWorkspace as t, TokenExpiration as ti, InviteCode as tn, AudioAuditKind as tr, ModalityRedactions as tt, WorkspaceSettings as u, PipelineActivityParams as ui, SortOrder as un, BoundingBox as ur, PolicyTemplate as ut, WebhookResult as v, UpdateAccount as vi, ListFiles as vn, ImageAuditLog as vr, Waveform as vt, LanguageSpan as w, AzureCredentials as wn, LeakProfile as wr, PipelineSummary as wt, CountryCode as x, ErrorResponse as xn, ImageEntityRecord as xr, PipelineDefinition as xt, WebhookStatus as y, paths as yi, ModalityToken as yn, ImageData as yr, CreatePipeline as yt, ConfidenceThreshold as z, SyncDeletionPolicy as zn, TabularHint as zr, PipelineRunAnalyzedParams as zt };
|
|
13962
|
+
//# sourceMappingURL=index-D7O7ZJNs.d.ts.map
|