@nvisy/sdk 0.13.0 → 0.14.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 +25 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/{client-DN7ckSJH.d.ts → client-CosP4Ux4.d.ts} +5 -5
- package/dist/{client-DN7ckSJH.d.ts.map → client-CosP4Ux4.d.ts.map} +1 -1
- package/dist/datatypes/index.d.ts +2 -2
- package/dist/{errors-BfCfSpmA.d.ts → errors-B8mXPFhV.d.ts} +2 -2
- package/dist/{errors-BfCfSpmA.d.ts.map → errors-B8mXPFhV.d.ts.map} +1 -1
- package/dist/{index-HUG77R_t.d.ts → index-DTr3_MW7.d.ts} +777 -307
- package/dist/{index-HUG77R_t.d.ts.map → index-DTr3_MW7.d.ts.map} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js +1 -1
- package/dist/{services-DjORFrh_.js → services-Dhtn3sVT.js} +3 -3
- package/dist/{services-DjORFrh_.js.map → services-Dhtn3sVT.js.map} +1 -1
- package/dist/webhooks/index.d.ts +2 -2
- package/package.json +2 -2
|
@@ -6134,30 +6134,27 @@ interface paths {
|
|
|
6134
6134
|
/**
|
|
6135
6135
|
* @description What detection found in one document.
|
|
6136
6136
|
*
|
|
6137
|
-
* The body group plus per-container-part groups (each tagged
|
|
6138
|
-
*
|
|
6139
|
-
*
|
|
6137
|
+
* The body group plus per-container-part groups (each tagged by
|
|
6138
|
+
* modality) plus the recognition [`AuditContext`] the entities
|
|
6139
|
+
* were scored against.
|
|
6140
6140
|
*
|
|
6141
|
-
* The
|
|
6142
|
-
*
|
|
6143
|
-
*
|
|
6144
|
-
* (
|
|
6145
|
-
*
|
|
6141
|
+
* The context travels with the entities so anonymize can rebuild
|
|
6142
|
+
* an orchestrator against exactly the vocabulary analyze used.
|
|
6143
|
+
* Anything a policy predicate compares against beyond the label
|
|
6144
|
+
* catalog (asserted languages, jurisdictions, document tags) is
|
|
6145
|
+
* here; labels are re-derived from the policy set on each
|
|
6146
|
+
* anonymize call.
|
|
6146
6147
|
*
|
|
6147
|
-
* `
|
|
6148
|
-
*
|
|
6149
|
-
*
|
|
6150
|
-
* from the analyze-side ones.
|
|
6151
|
-
*
|
|
6152
|
-
* [`Document`]: nvisy_schema::file::Document
|
|
6153
|
-
* [`Scope`]: elide::recognition::Scope
|
|
6148
|
+
* No [`Default`] — a well-formed audit must carry a real
|
|
6149
|
+
* [`AuditContext`] with a real correlation id. Callers building
|
|
6150
|
+
* an audit outside the analyze path construct it explicitly.
|
|
6154
6151
|
*/
|
|
6155
6152
|
200: {
|
|
6156
6153
|
headers: {
|
|
6157
6154
|
[name: string]: unknown;
|
|
6158
6155
|
};
|
|
6159
6156
|
content: {
|
|
6160
|
-
"application/json": components["schemas"]["
|
|
6157
|
+
"application/json": components["schemas"]["Audit"];
|
|
6161
6158
|
};
|
|
6162
6159
|
};
|
|
6163
6160
|
/**
|
|
@@ -6435,9 +6432,9 @@ interface paths {
|
|
|
6435
6432
|
/**
|
|
6436
6433
|
* @description Request payload for creating a new workspace policy.
|
|
6437
6434
|
*
|
|
6438
|
-
* The
|
|
6439
|
-
*
|
|
6440
|
-
* here.
|
|
6435
|
+
* The body comes from a template or an inline definition (see [`PolicyBody`]).
|
|
6436
|
+
* The body's `name` and `description` drive the stored columns unless
|
|
6437
|
+
* overridden here.
|
|
6441
6438
|
*/
|
|
6442
6439
|
requestBody: {
|
|
6443
6440
|
content: {
|
|
@@ -7303,65 +7300,6 @@ interface components {
|
|
|
7303
7300
|
* audit trail and activity tracking.
|
|
7304
7301
|
*/
|
|
7305
7302
|
ActivityType: "workspace:created" | "workspace:updated" | "workspace:deleted" | "workspace:exported" | "workspace:imported" | "member:deleted" | "member:updated" | "invite:created" | "invite:accepted" | "invite:declined" | "invite:canceled" | "connection:created" | "connection:updated" | "connection:deleted" | "connection:synced" | "webhook:created" | "webhook:updated" | "webhook:deleted" | "webhook:triggered" | "file:created" | "file:updated" | "file:deleted" | "file:verified" | "custom";
|
|
7306
|
-
/**
|
|
7307
|
-
* @description What detection found in one document.
|
|
7308
|
-
*
|
|
7309
|
-
* The body group plus per-container-part groups (each tagged
|
|
7310
|
-
* by modality) plus a snapshot of the recognition [`Scope`] the
|
|
7311
|
-
* entities were scored against.
|
|
7312
|
-
*
|
|
7313
|
-
* The scope snapshot travels with the entities so anonymize
|
|
7314
|
-
* can rebuild an orchestrator against exactly the vocabulary
|
|
7315
|
-
* analyze used. Anything a policy predicate compares against
|
|
7316
|
-
* (label catalog, document-level classification labels,
|
|
7317
|
-
* asserted languages / jurisdictions) is here.
|
|
7318
|
-
*
|
|
7319
|
-
* `correlation_id` on the persisted scope is always `None`; the
|
|
7320
|
-
* anonymize call supplies a fresh id from the passed
|
|
7321
|
-
* [`Document`] so anonymize-side tracing spans are distinct
|
|
7322
|
-
* from the analyze-side ones.
|
|
7323
|
-
*
|
|
7324
|
-
* [`Document`]: nvisy_schema::file::Document
|
|
7325
|
-
* [`Scope`]: elide::recognition::Scope
|
|
7326
|
-
*/
|
|
7327
|
-
AnalyzedDocument: {
|
|
7328
|
-
/**
|
|
7329
|
-
* @description The body group.
|
|
7330
|
-
*
|
|
7331
|
-
* `None` when no body pipeline produced entities (pre-analyze,
|
|
7332
|
-
* or the codec resolved the doc to a modality with no
|
|
7333
|
-
* pipeline).
|
|
7334
|
-
*/
|
|
7335
|
-
body?: components["schemas"]["RecognizedGroup"];
|
|
7336
|
-
/**
|
|
7337
|
-
* @description One entry per container part the orchestrator surfaced.
|
|
7338
|
-
*
|
|
7339
|
-
* Keyed by the container-private part id (e.g. a DOCX zip
|
|
7340
|
-
* entry name like `"word/media/image1.png"`); each value
|
|
7341
|
-
* carries that part's modality + entities.
|
|
7342
|
-
*/
|
|
7343
|
-
parts?: {
|
|
7344
|
-
[key: string]: components["schemas"]["RecognizedGroup"];
|
|
7345
|
-
};
|
|
7346
|
-
/**
|
|
7347
|
-
* @description Recognition scope snapshot.
|
|
7348
|
-
*
|
|
7349
|
-
* The resolved label catalog + asserted languages,
|
|
7350
|
-
* countries, and document labels. Held so
|
|
7351
|
-
* [`Engine::anonymize_document`] can compile against the same
|
|
7352
|
-
* vocabulary analyze used without the caller re-passing an
|
|
7353
|
-
* `AnalyzerParams`.
|
|
7354
|
-
*
|
|
7355
|
-
* Required on the wire. A missing scope on an incoming
|
|
7356
|
-
* [`AnalyzedDocument`] would default to an empty catalog and
|
|
7357
|
-
* silently underfire every `TagOneOf` policy predicate;
|
|
7358
|
-
* rejecting at deserialize time surfaces the shape mismatch
|
|
7359
|
-
* at load, not at apply.
|
|
7360
|
-
*
|
|
7361
|
-
* [`Engine::anonymize_document`]: super::Engine::anonymize_document
|
|
7362
|
-
*/
|
|
7363
|
-
scope: components["schemas"]["Scope"];
|
|
7364
|
-
};
|
|
7365
7303
|
/** @description API token response structure. */
|
|
7366
7304
|
ApiToken: {
|
|
7367
7305
|
/**
|
|
@@ -7480,23 +7418,29 @@ interface components {
|
|
|
7480
7418
|
*/
|
|
7481
7419
|
ArtifactType: "input" | "output" | "intermediate";
|
|
7482
7420
|
/**
|
|
7483
|
-
* @description Author-supplied rationale for a redaction:
|
|
7484
|
-
*
|
|
7421
|
+
* @description Author-supplied rationale for a redaction: a policy name and an optional
|
|
7422
|
+
* description.
|
|
7485
7423
|
*
|
|
7486
7424
|
* Where the matched selection rule answers *which rule fired*, an
|
|
7487
7425
|
* `Attribution` answers *under what authority* — a compliance clause, an
|
|
7488
7426
|
* internal policy, a data-handling rule. A policy author attaches it to a
|
|
7489
|
-
* selection rule (
|
|
7490
|
-
* the entity's [`Redaction`] event so an audit can trace a
|
|
7491
|
-
* the policy that demanded it.
|
|
7427
|
+
* selection rule (`Rule::because` in `elide-redaction`); the anonymizer
|
|
7428
|
+
* records it on the entity's [`Redaction`] event so an audit can trace a
|
|
7429
|
+
* change back to the policy that demanded it.
|
|
7430
|
+
*
|
|
7431
|
+
* The `name` is the author's label for that policy (`"gdpr-art-17"`,
|
|
7432
|
+
* `"hipaa-safe-harbor"`, `"PII removal"`); an optional `description` adds
|
|
7433
|
+
* human context. Any stable machine identity a policy layer needs (a rule
|
|
7434
|
+
* UUID, a jurisdiction) is that layer's concern — it can encode it in the
|
|
7435
|
+
* name or carry it separately.
|
|
7492
7436
|
*
|
|
7493
7437
|
* [`Redaction`]: crate::entity::provenance::EventKind::Redaction
|
|
7494
7438
|
*/
|
|
7495
7439
|
Attribution: {
|
|
7496
|
-
/** @description
|
|
7497
|
-
|
|
7498
|
-
/** @description
|
|
7499
|
-
|
|
7440
|
+
/** @description Human-readable description (e.g. `"right to erasure"`), when given. */
|
|
7441
|
+
description?: string;
|
|
7442
|
+
/** @description The policy's name (e.g. `"gdpr-art-17"`, `"hipaa-safe-harbor"`). */
|
|
7443
|
+
name: string;
|
|
7500
7444
|
};
|
|
7501
7445
|
/**
|
|
7502
7446
|
* @description Per-call payload a recognizer inspects for the [`Audio`] modality.
|
|
@@ -7601,12 +7545,17 @@ interface components {
|
|
|
7601
7545
|
/** @description The elide entity, as recognition produced it. */
|
|
7602
7546
|
entity: components["schemas"]["AudioEntity"];
|
|
7603
7547
|
/**
|
|
7604
|
-
* @description Reviewer-supplied override.
|
|
7548
|
+
* @description Reviewer-supplied redaction override.
|
|
7605
7549
|
*
|
|
7606
|
-
* `None` means "use the policy's decision";
|
|
7607
|
-
* overrides
|
|
7550
|
+
* `None` means "use the matching policy rule's decision";
|
|
7551
|
+
* `Some(...)` overrides that rule for this specific entity
|
|
7552
|
+
* at apply time. Reviewer overrides take precedence over
|
|
7553
|
+
* every policy rule and inherit the authority of the
|
|
7554
|
+
* [`Review::policy_id`] they name — the audit event's
|
|
7555
|
+
* attribution stamps that policy so the trail names the
|
|
7556
|
+
* authority under which the override fired.
|
|
7608
7557
|
*/
|
|
7609
|
-
|
|
7558
|
+
review?: components["schemas"]["Review"];
|
|
7610
7559
|
};
|
|
7611
7560
|
/**
|
|
7612
7561
|
* @description One thing that happened to an entity, with its effect on confidence.
|
|
@@ -7844,6 +7793,117 @@ interface components {
|
|
|
7844
7793
|
*/
|
|
7845
7794
|
waveform: components["schemas"]["Waveform"];
|
|
7846
7795
|
};
|
|
7796
|
+
/**
|
|
7797
|
+
* @description What detection found in one document.
|
|
7798
|
+
*
|
|
7799
|
+
* The body group plus per-container-part groups (each tagged by
|
|
7800
|
+
* modality) plus the recognition [`AuditContext`] the entities
|
|
7801
|
+
* were scored against.
|
|
7802
|
+
*
|
|
7803
|
+
* The context travels with the entities so anonymize can rebuild
|
|
7804
|
+
* an orchestrator against exactly the vocabulary analyze used.
|
|
7805
|
+
* Anything a policy predicate compares against beyond the label
|
|
7806
|
+
* catalog (asserted languages, jurisdictions, document tags) is
|
|
7807
|
+
* here; labels are re-derived from the policy set on each
|
|
7808
|
+
* anonymize call.
|
|
7809
|
+
*
|
|
7810
|
+
* No [`Default`] — a well-formed audit must carry a real
|
|
7811
|
+
* [`AuditContext`] with a real correlation id. Callers building
|
|
7812
|
+
* an audit outside the analyze path construct it explicitly.
|
|
7813
|
+
*/
|
|
7814
|
+
Audit: {
|
|
7815
|
+
/**
|
|
7816
|
+
* @description The body group.
|
|
7817
|
+
*
|
|
7818
|
+
* `None` when no body pipeline produced entities (pre-analyze,
|
|
7819
|
+
* or the codec resolved the doc to a modality with no
|
|
7820
|
+
* pipeline).
|
|
7821
|
+
*/
|
|
7822
|
+
body?: components["schemas"]["EntityGroup"];
|
|
7823
|
+
/**
|
|
7824
|
+
* @description Recognition context.
|
|
7825
|
+
*
|
|
7826
|
+
* The asserted languages, countries, document tags, and the
|
|
7827
|
+
* analyze-side correlation id. Held so
|
|
7828
|
+
* [`Engine::anonymize`] can compile against the same
|
|
7829
|
+
* vocabulary analyze used without the caller re-passing an
|
|
7830
|
+
* `AnalyzerParams`.
|
|
7831
|
+
*
|
|
7832
|
+
* Required on the wire — a missing context on an incoming
|
|
7833
|
+
* [`Audit`] rejects at deserialize time so the shape
|
|
7834
|
+
* mismatch surfaces at load, not at apply.
|
|
7835
|
+
*
|
|
7836
|
+
* [`Engine::anonymize`]: super::Engine::anonymize
|
|
7837
|
+
*/
|
|
7838
|
+
context: components["schemas"]["AuditContext"];
|
|
7839
|
+
/**
|
|
7840
|
+
* @description One entry per container part the orchestrator surfaced.
|
|
7841
|
+
*
|
|
7842
|
+
* Keyed by the container-private part id (e.g. a DOCX zip
|
|
7843
|
+
* entry name like `"word/media/image1.png"`); each value
|
|
7844
|
+
* carries that part's modality + entities.
|
|
7845
|
+
*/
|
|
7846
|
+
parts?: {
|
|
7847
|
+
[key: string]: components["schemas"]["EntityGroup"];
|
|
7848
|
+
};
|
|
7849
|
+
};
|
|
7850
|
+
/**
|
|
7851
|
+
* @description Recognition-side facts that travel from analyze to anonymize.
|
|
7852
|
+
*
|
|
7853
|
+
* Mirrors elide's [`Scope`] shape one-for-one: direct fields
|
|
7854
|
+
* for `languages` and `countries` (typed, elide-native), a
|
|
7855
|
+
* [`metadata`] sub-struct for free-form classification strings
|
|
7856
|
+
* (`tags`, `purpose`, `audience`), and the analyze-time
|
|
7857
|
+
* [`correlation_id`]. The label catalog is not on here —
|
|
7858
|
+
* labels are policy-owned, and anonymize re-derives them from
|
|
7859
|
+
* the policy set it was handed.
|
|
7860
|
+
*
|
|
7861
|
+
* No [`Default`] — `correlation_id` has no meaningful default
|
|
7862
|
+
* (a nil UUID would silently collapse unrelated audits under
|
|
7863
|
+
* one bucket in downstream trace aggregators), so callers
|
|
7864
|
+
* supply one explicitly. Everything else defaults to empty.
|
|
7865
|
+
*
|
|
7866
|
+
* [`Scope`]: elide::recognition::Scope
|
|
7867
|
+
* [`metadata`]: Self::metadata
|
|
7868
|
+
* [`correlation_id`]: Self::correlation_id
|
|
7869
|
+
*/
|
|
7870
|
+
AuditContext: {
|
|
7871
|
+
/**
|
|
7872
|
+
* Format: uuid
|
|
7873
|
+
* @description Analyze-time correlation id.
|
|
7874
|
+
*
|
|
7875
|
+
* Threaded into every tracing span on the recognition path;
|
|
7876
|
+
* carried over so the anonymize path can link its own spans
|
|
7877
|
+
* to the same request. The anonymize call supplies a fresh
|
|
7878
|
+
* id from the passed [`Document`] as the anonymize-side
|
|
7879
|
+
* correlation id — this one stays as the analyze-side
|
|
7880
|
+
* pointer.
|
|
7881
|
+
*
|
|
7882
|
+
* Required on the wire.
|
|
7883
|
+
*
|
|
7884
|
+
* [`Document`]: nvisy_schema::file::Document
|
|
7885
|
+
*/
|
|
7886
|
+
correlationId: string;
|
|
7887
|
+
/**
|
|
7888
|
+
* @description Caller-asserted jurisdictions.
|
|
7889
|
+
*
|
|
7890
|
+
* Recorded from `AnalyzerParams.scope.countries`.
|
|
7891
|
+
*/
|
|
7892
|
+
countries?: components["schemas"]["CountryCode"][];
|
|
7893
|
+
/**
|
|
7894
|
+
* @description Caller-asserted languages for the analysis.
|
|
7895
|
+
*
|
|
7896
|
+
* Recorded from `AnalyzerParams.scope.languages` at analyze
|
|
7897
|
+
* time; anonymize re-uses them verbatim.
|
|
7898
|
+
* @default []
|
|
7899
|
+
*/
|
|
7900
|
+
languages: components["schemas"]["Languages"];
|
|
7901
|
+
/**
|
|
7902
|
+
* @description Free-form request context: document tags, request purpose,
|
|
7903
|
+
* output audience. See elide's [`ScopeMetadata`].
|
|
7904
|
+
*/
|
|
7905
|
+
metadata?: components["schemas"]["ScopeMetadata"];
|
|
7906
|
+
};
|
|
7847
7907
|
/** @description Response returned after successful authentication (login/signup). */
|
|
7848
7908
|
AuthToken: {
|
|
7849
7909
|
/** @description The JWT API token for authentication. */
|
|
@@ -7923,6 +7983,32 @@ interface components {
|
|
|
7923
7983
|
/** @description Minimum corner (top-left, conventionally). */
|
|
7924
7984
|
min: components["schemas"]["Point"];
|
|
7925
7985
|
};
|
|
7986
|
+
/**
|
|
7987
|
+
* @description Text a [`TextRedaction::Clamp`] emits for out-of-range values.
|
|
7988
|
+
*
|
|
7989
|
+
* Three forms, deserialized untagged so callers can pick the
|
|
7990
|
+
* terser one for the case at hand:
|
|
7991
|
+
*
|
|
7992
|
+
* - **Plain string** (`"90 or older"`) — English-only shorthand.
|
|
7993
|
+
* - **Localized map** (`{"en": "90 or older", "fr": "90 ou plus"}`)
|
|
7994
|
+
* — one entry per language the deployment ships; missing
|
|
7995
|
+
* locales fall back to English at render time.
|
|
7996
|
+
* - **Format template** (`{"format": "{n} or older"}`) — the
|
|
7997
|
+
* engine substitutes `{n}` for the threshold, so a ceiling of
|
|
7998
|
+
* `90` renders `"90 or older"` without the caller repeating the
|
|
7999
|
+
* number. Same rendering in every language.
|
|
8000
|
+
*
|
|
8001
|
+
* Round-trips through serde as whichever form the caller wrote.
|
|
8002
|
+
*/
|
|
8003
|
+
ClampBucket: string | {
|
|
8004
|
+
/**
|
|
8005
|
+
* @description The template string. `{n}` is substituted; other text
|
|
8006
|
+
* is literal.
|
|
8007
|
+
*/
|
|
8008
|
+
format: string;
|
|
8009
|
+
} | {
|
|
8010
|
+
[key: string]: string;
|
|
8011
|
+
};
|
|
7926
8012
|
/**
|
|
7927
8013
|
* @description Color as 8-bit RGB.
|
|
7928
8014
|
*
|
|
@@ -8276,20 +8362,33 @@ interface components {
|
|
|
8276
8362
|
/**
|
|
8277
8363
|
* @description Request payload for creating a new workspace policy.
|
|
8278
8364
|
*
|
|
8279
|
-
* The
|
|
8280
|
-
*
|
|
8281
|
-
* here.
|
|
8365
|
+
* The body comes from a template or an inline definition (see [`PolicyBody`]).
|
|
8366
|
+
* The body's `name` and `description` drive the stored columns unless
|
|
8367
|
+
* overridden here.
|
|
8282
8368
|
*/
|
|
8283
8369
|
CreatePolicy: {
|
|
8284
|
-
/** @description The structured policy body consumed by the engine. */
|
|
8285
|
-
definition: components["schemas"]["PolicyDefinition"];
|
|
8286
8370
|
/** @description Optional description override. Defaults to the policy's own description. */
|
|
8287
8371
|
description?: string;
|
|
8288
8372
|
/** @description Optional display name override. Defaults to the policy's own name. */
|
|
8289
8373
|
displayName?: string;
|
|
8290
8374
|
/** @description URL slug, unique within the workspace and immutable after creation. */
|
|
8291
8375
|
slug: components["schemas"]["Handle"];
|
|
8292
|
-
}
|
|
8376
|
+
} & ({
|
|
8377
|
+
/** @constant */
|
|
8378
|
+
source: "template";
|
|
8379
|
+
/** @description The built-in policy template to seed from. */
|
|
8380
|
+
template: components["schemas"]["PolicyTemplate"];
|
|
8381
|
+
} | {
|
|
8382
|
+
/**
|
|
8383
|
+
* @description The structured policy body.
|
|
8384
|
+
*
|
|
8385
|
+
* Boxed to keep the enum small: an inline body is much larger than a
|
|
8386
|
+
* template id, and most requests use a template.
|
|
8387
|
+
*/
|
|
8388
|
+
definition: components["schemas"]["PolicyDefinition"];
|
|
8389
|
+
/** @constant */
|
|
8390
|
+
source: "inline";
|
|
8391
|
+
});
|
|
8293
8392
|
/** @description Request payload for creating a new workspace webhook. */
|
|
8294
8393
|
CreateWebhook: {
|
|
8295
8394
|
/** @description Detailed description of the webhook's purpose (max 500 characters). */
|
|
@@ -8496,6 +8595,24 @@ interface components {
|
|
|
8496
8595
|
*/
|
|
8497
8596
|
validator?: string;
|
|
8498
8597
|
};
|
|
8598
|
+
/**
|
|
8599
|
+
* @description The coarseness a [`GeneralizeDate`] reduces a date/timestamp to.
|
|
8600
|
+
*
|
|
8601
|
+
* Every rendering is an ISO-8601 form, so the output is locale-independent
|
|
8602
|
+
* by construction — no localized month names or week markers to configure.
|
|
8603
|
+
*/
|
|
8604
|
+
DateGranularity: "year" | "year_month" | "hour";
|
|
8605
|
+
/**
|
|
8606
|
+
* @description Which written date convention a [`GeneralizeDate`] accepts on *input*.
|
|
8607
|
+
*
|
|
8608
|
+
* This governs only how the entity value is *parsed*; the output mirrors
|
|
8609
|
+
* each value's own convention (see [`GeneralizeDate::render`]). The choice
|
|
8610
|
+
* is explicit, never inferred from the entity's language: `03/04/1987` is
|
|
8611
|
+
* a real date under both conventions (March 4 vs. April 3), so a wrong
|
|
8612
|
+
* guess would silently emit a plausible-but-wrong month. The policy
|
|
8613
|
+
* author, who knows the corpus's convention, sets it.
|
|
8614
|
+
*/
|
|
8615
|
+
DateStyle: "iso" | "us";
|
|
8499
8616
|
/**
|
|
8500
8617
|
* @description Pixel dimensions of an image or any 2-D canvas.
|
|
8501
8618
|
*
|
|
@@ -8563,6 +8680,36 @@ interface components {
|
|
|
8563
8680
|
* mentions, not a global key.
|
|
8564
8681
|
*/
|
|
8565
8682
|
EntityCoRef: string;
|
|
8683
|
+
/**
|
|
8684
|
+
* @description A modality-tagged group of recognised entities.
|
|
8685
|
+
*
|
|
8686
|
+
* The unit [`Audit`] stores in `body` and in every `parts`
|
|
8687
|
+
* entry.
|
|
8688
|
+
*
|
|
8689
|
+
* Tagged by `modality` (snake_case) so deserialization picks the
|
|
8690
|
+
* right variant and the entity vec inside is statically typed
|
|
8691
|
+
* per modality — apply-time we hand each variant back to elide
|
|
8692
|
+
* as a `Vec<Entity<M>>` for the appropriate `M`.
|
|
8693
|
+
*
|
|
8694
|
+
* [`Audit`]: crate::Audit
|
|
8695
|
+
*/
|
|
8696
|
+
EntityGroup: {
|
|
8697
|
+
entities: components["schemas"]["TextEntityRecord"][];
|
|
8698
|
+
/** @constant */
|
|
8699
|
+
modality: "text";
|
|
8700
|
+
} | {
|
|
8701
|
+
entities: components["schemas"]["TabularEntityRecord"][];
|
|
8702
|
+
/** @constant */
|
|
8703
|
+
modality: "tabular";
|
|
8704
|
+
} | {
|
|
8705
|
+
entities: components["schemas"]["ImageEntityRecord"][];
|
|
8706
|
+
/** @constant */
|
|
8707
|
+
modality: "image";
|
|
8708
|
+
} | {
|
|
8709
|
+
entities: components["schemas"]["AudioEntityRecord"][];
|
|
8710
|
+
/** @constant */
|
|
8711
|
+
modality: "audio";
|
|
8712
|
+
};
|
|
8566
8713
|
/**
|
|
8567
8714
|
* @description HTTP error response representation with security-conscious design.
|
|
8568
8715
|
*
|
|
@@ -8697,14 +8844,6 @@ interface components {
|
|
|
8697
8844
|
};
|
|
8698
8845
|
/** @description Lowercase, dash-separated identifier used in URLs and as account handles. */
|
|
8699
8846
|
Handle: string;
|
|
8700
|
-
/**
|
|
8701
|
-
* @description SHA-2 variant for the [`TextRedaction::Hash`] operator.
|
|
8702
|
-
*
|
|
8703
|
-
* Wire mirror of elide's `Sha2Algorithm`; the runtime `From`
|
|
8704
|
-
* conversion is on the engine side so this crate stays free
|
|
8705
|
-
* of the elide-redaction dep.
|
|
8706
|
-
*/
|
|
8707
|
-
HashAlgorithm: "sha256" | "sha512";
|
|
8708
8847
|
/** @description Response body for `GET /health/`. */
|
|
8709
8848
|
Health: {
|
|
8710
8849
|
/** @description Per-component health checks. */
|
|
@@ -8817,12 +8956,17 @@ interface components {
|
|
|
8817
8956
|
/** @description The elide entity, as recognition produced it. */
|
|
8818
8957
|
entity: components["schemas"]["ImageEntity"];
|
|
8819
8958
|
/**
|
|
8820
|
-
* @description Reviewer-supplied override.
|
|
8959
|
+
* @description Reviewer-supplied redaction override.
|
|
8821
8960
|
*
|
|
8822
|
-
* `None` means "use the policy's decision";
|
|
8823
|
-
* overrides
|
|
8961
|
+
* `None` means "use the matching policy rule's decision";
|
|
8962
|
+
* `Some(...)` overrides that rule for this specific entity
|
|
8963
|
+
* at apply time. Reviewer overrides take precedence over
|
|
8964
|
+
* every policy rule and inherit the authority of the
|
|
8965
|
+
* [`Review::policy_id`] they name — the audit event's
|
|
8966
|
+
* attribution stamps that policy so the trail names the
|
|
8967
|
+
* authority under which the override fired.
|
|
8824
8968
|
*/
|
|
8825
|
-
|
|
8969
|
+
review?: components["schemas"]["Review"];
|
|
8826
8970
|
};
|
|
8827
8971
|
/**
|
|
8828
8972
|
* @description One thing that happened to an entity, with its effect on confidence.
|
|
@@ -9207,76 +9351,163 @@ interface components {
|
|
|
9207
9351
|
*/
|
|
9208
9352
|
InviteStatus: "pending" | "accepted" | "declined" | "canceled" | "expired" | "revoked";
|
|
9209
9353
|
/**
|
|
9210
|
-
* @description Kind of sensitive information: a
|
|
9211
|
-
* zero or more tags.
|
|
9212
|
-
*
|
|
9213
|
-
* Names are conventionally `SCREAMING_SNAKE_CASE` (`"PHONE_NUMBER"`),
|
|
9214
|
-
* matching Presidio, but this is convention, not enforcement. The
|
|
9215
|
-
* taxonomy is open: a [`Label`] can be minted for any name a recognizer
|
|
9216
|
-
* or configuration needs.
|
|
9354
|
+
* @description Kind of sensitive information: a stable [`id`], per-language
|
|
9355
|
+
* [`LabelLocale`]s, and zero or more tags.
|
|
9217
9356
|
*
|
|
9218
9357
|
* # Identity
|
|
9219
9358
|
*
|
|
9220
|
-
* Labels are identified by [`
|
|
9221
|
-
*
|
|
9222
|
-
*
|
|
9223
|
-
*
|
|
9359
|
+
* Labels are identified by [`id`] — a stable lowercase `snake_case`
|
|
9360
|
+
* string (`"phone_number"`), never localized, and the catalog key that a
|
|
9361
|
+
* [`LabelRef`] resolves through. Selectors match by id. Derived equality
|
|
9362
|
+
* is *structural*: two labels with the same id but different
|
|
9363
|
+
* localizations or tags are not `==`; compare [`id`] for identity.
|
|
9364
|
+
*
|
|
9365
|
+
* # Localization
|
|
9366
|
+
*
|
|
9367
|
+
* The display name and description are localized per [`LanguageTag`].
|
|
9368
|
+
* English (`"en"`) is required at construction and is the fallback when a
|
|
9369
|
+
* requested locale is absent, so [`localization`] always returns some
|
|
9370
|
+
* text — NER and LLM read the analysis language's name and description to
|
|
9371
|
+
* prompt the model, keyed by the stable id.
|
|
9224
9372
|
*
|
|
9225
9373
|
* # Tags
|
|
9226
9374
|
*
|
|
9227
|
-
* [`tags`] is a free-form list of short identifiers policy selectors
|
|
9228
|
-
*
|
|
9229
|
-
*
|
|
9230
|
-
*
|
|
9231
|
-
* labels can ship with zero tags.
|
|
9375
|
+
* [`tags`] is a free-form list of short identifiers policy selectors can
|
|
9376
|
+
* match against. Built-in labels carry category tags (`personal_identity`,
|
|
9377
|
+
* `contact_info`, `financial`, …) plus cross-cutting tags where applicable
|
|
9378
|
+
* (`pii`, `phi`, `pci`). Custom labels can ship with zero tags.
|
|
9232
9379
|
*
|
|
9233
|
-
* [`
|
|
9380
|
+
* [`id`]: Label::id
|
|
9381
|
+
* [`localization`]: Label::localization
|
|
9234
9382
|
* [`tags`]: Label::tags
|
|
9235
9383
|
*/
|
|
9236
9384
|
Label: {
|
|
9237
|
-
|
|
9238
|
-
|
|
9385
|
+
id: string;
|
|
9386
|
+
localizations: components["schemas"]["LocalizedText"];
|
|
9239
9387
|
tags: string[];
|
|
9240
9388
|
};
|
|
9241
9389
|
/**
|
|
9242
|
-
* @description
|
|
9243
|
-
*
|
|
9244
|
-
* Holds the authoritative definitions (names + descriptions) for a run.
|
|
9245
|
-
* A [`LabelRef`] carried on a detection or entity is resolved back to
|
|
9246
|
-
* its full [`Label`] with [`get`].
|
|
9390
|
+
* @description One entry inside a [`TableRule`]: the label to match plus the
|
|
9391
|
+
* per-modality operators to run.
|
|
9247
9392
|
*
|
|
9248
|
-
*
|
|
9393
|
+
* Kept as a named struct rather than a `(LabelRef, ModalityRedactions)`
|
|
9394
|
+
* tuple so the wire JSON reads `{"label": "email", "action": {…}}`
|
|
9395
|
+
* instead of a positional pair.
|
|
9249
9396
|
*/
|
|
9250
|
-
|
|
9251
|
-
|
|
9397
|
+
LabelEntry: {
|
|
9398
|
+
/** @description Per-modality operators to run for matching entities. */
|
|
9399
|
+
action: components["schemas"]["ModalityRedactions"];
|
|
9400
|
+
/** @description Label the entry matches on. */
|
|
9401
|
+
label: components["schemas"]["LabelRef"];
|
|
9252
9402
|
};
|
|
9253
9403
|
/**
|
|
9254
|
-
* @description
|
|
9404
|
+
* @description Named cluster of [`LabelRef`]s a policy's rules can reference
|
|
9405
|
+
* by name via [`Predicate::LabelInGroup`].
|
|
9255
9406
|
*
|
|
9256
|
-
*
|
|
9407
|
+
* Groups live on the [`PolicyDefinition`] that declares them
|
|
9408
|
+
* and are visible only to that policy's own rules. Templates
|
|
9409
|
+
* ship one group per canonical label list (`"hipaa_18"`,
|
|
9410
|
+
* `"gdpr_article_9"`, `"pci_chd"`, `"pci_sad"`), and every
|
|
9411
|
+
* rule that targets that list references the group by name
|
|
9412
|
+
* instead of respelling the labels. When elide adds a new label
|
|
9413
|
+
* to a category, extending the group covers every rule that
|
|
9414
|
+
* referenced it — no rule edit.
|
|
9415
|
+
*
|
|
9416
|
+
* **Compilation**: at request time the engine synthesises a
|
|
9417
|
+
* `group:<policy_id>:<name>` tag on every label listed in the
|
|
9418
|
+
* group, then rewrites [`Predicate::LabelInGroup { group }`]
|
|
9419
|
+
* into [`Predicate::TagOneOf { tags: ["group:<policy_id>:<name>"] }`].
|
|
9420
|
+
* That routes through the same `Anonymizer::with_tag` fast
|
|
9421
|
+
* path as any authored tag — no new engine machinery, no
|
|
9422
|
+
* per-request walk over group membership. Scoping the tag by
|
|
9423
|
+
* `policy_id` keeps two policies that both declare `hipaa_18`
|
|
9424
|
+
* with different labelsets from stepping on each other.
|
|
9425
|
+
*
|
|
9426
|
+
* **Unknown group names error at request validation**, not at
|
|
9427
|
+
* apply time. A typo doesn't silently underfire.
|
|
9428
|
+
*
|
|
9429
|
+
* [`PolicyDefinition`]: super::PolicyDefinition
|
|
9430
|
+
* [`Predicate::LabelInGroup`]: super::predicate::Predicate::LabelInGroup
|
|
9431
|
+
* [`Predicate::LabelInGroup { group }`]: super::predicate::Predicate::LabelInGroup
|
|
9432
|
+
* [`Predicate::TagOneOf { tags: ["group:<policy_id>:<name>"] }`]: super::predicate::Predicate::TagOneOf
|
|
9257
9433
|
*/
|
|
9258
|
-
|
|
9434
|
+
LabelGroup: {
|
|
9435
|
+
/** @description Optional description for reviewers. */
|
|
9436
|
+
description?: string;
|
|
9259
9437
|
/**
|
|
9260
|
-
* @description
|
|
9438
|
+
* @description Labels this group covers, by ref.
|
|
9261
9439
|
*
|
|
9262
|
-
*
|
|
9263
|
-
*
|
|
9440
|
+
* A label that doesn't appear in the request's compiled
|
|
9441
|
+
* [`LabelCatalog`] is silently skipped at tag-synthesis time
|
|
9442
|
+
* — a group can safely list labels the current build
|
|
9443
|
+
* doesn't emit (e.g. modality-gated ones); rules keyed off
|
|
9444
|
+
* the group still fire on whatever labels *are* present.
|
|
9445
|
+
*
|
|
9446
|
+
* [`LabelCatalog`]: elide_core::entity::LabelCatalog
|
|
9264
9447
|
*/
|
|
9265
|
-
|
|
9266
|
-
/**
|
|
9267
|
-
|
|
9448
|
+
labels: components["schemas"]["LabelRef"][];
|
|
9449
|
+
/**
|
|
9450
|
+
* @description Stable name a [`Predicate::LabelInGroup`] references.
|
|
9451
|
+
*
|
|
9452
|
+
* Free-form; a policy layer picks the vocabulary. Recommend
|
|
9453
|
+
* snake_case identifiers (`hipaa_18`, `gdpr_article_9`) —
|
|
9454
|
+
* they compile to `group:hipaa_18` tags on the catalog and
|
|
9455
|
+
* read cleanly in audit provenance.
|
|
9456
|
+
*
|
|
9457
|
+
* [`Predicate::LabelInGroup`]: super::predicate::Predicate::LabelInGroup
|
|
9458
|
+
*/
|
|
9459
|
+
name: string;
|
|
9460
|
+
};
|
|
9461
|
+
/**
|
|
9462
|
+
* @description A label's human-facing text in one language: a display name and an
|
|
9463
|
+
* optional fuller description.
|
|
9464
|
+
*
|
|
9465
|
+
* The `name` is a short, natural-language phrase (`"phone number"`) — the
|
|
9466
|
+
* label a zero-shot NER model like GLiNER matches on, and the primary
|
|
9467
|
+
* text an LLM prompt shows. The `description` is optional extra guidance
|
|
9468
|
+
* for backends that consume it (GLiNER-2.0's bi-encoder, an LLM); leave
|
|
9469
|
+
* it `None` when the name alone is clear.
|
|
9470
|
+
*/
|
|
9471
|
+
LabelLocale: {
|
|
9472
|
+
/**
|
|
9473
|
+
* @description Optional fuller description, for description-capable backends
|
|
9474
|
+
* (GLiNER-2.0, LLM). `None` when the name suffices.
|
|
9475
|
+
*/
|
|
9476
|
+
description?: string;
|
|
9477
|
+
/**
|
|
9478
|
+
* @description Short natural-language display name (e.g. `"phone number"`). What a
|
|
9479
|
+
* zero-shot NER model matches on and an LLM prompt surfaces.
|
|
9480
|
+
*/
|
|
9481
|
+
name: string;
|
|
9268
9482
|
};
|
|
9269
9483
|
/**
|
|
9270
|
-
* @description Lightweight reference to a [`Label`], carrying only its
|
|
9484
|
+
* @description Lightweight reference to a [`Label`], carrying only its id.
|
|
9271
9485
|
*
|
|
9272
9486
|
* This is what detections and entities hold: cloning is cheap (short
|
|
9273
|
-
*
|
|
9274
|
-
*
|
|
9487
|
+
* ids inline into the [`HipStr`]), and the full [`Label`], with its
|
|
9488
|
+
* localized names and descriptions, is resolved on demand from a
|
|
9489
|
+
* [`LabelCatalog`].
|
|
9275
9490
|
*
|
|
9276
9491
|
* [`Label`]: crate::entity::Label
|
|
9277
9492
|
* [`LabelCatalog`]: crate::entity::LabelCatalog
|
|
9278
9493
|
*/
|
|
9279
9494
|
LabelRef: string;
|
|
9495
|
+
/**
|
|
9496
|
+
* @description Per-policy label-catalog selection.
|
|
9497
|
+
*
|
|
9498
|
+
* Picks builtins by name + adds inline custom schemas.
|
|
9499
|
+
*/
|
|
9500
|
+
Labels: {
|
|
9501
|
+
/**
|
|
9502
|
+
* @description Builtin label names to enable.
|
|
9503
|
+
*
|
|
9504
|
+
* E.g. `"email_address"`, `"phone_number"`. Unknown names
|
|
9505
|
+
* log a warning and are skipped.
|
|
9506
|
+
*/
|
|
9507
|
+
builtins?: components["schemas"]["LabelRef"][];
|
|
9508
|
+
/** @description Custom labels defined inline by the caller. */
|
|
9509
|
+
custom?: components["schemas"]["Label"][];
|
|
9510
|
+
};
|
|
9280
9511
|
/**
|
|
9281
9512
|
* @description Single language detection result.
|
|
9282
9513
|
*
|
|
@@ -9396,6 +9627,28 @@ interface components {
|
|
|
9396
9627
|
/** @description Sort by field. */
|
|
9397
9628
|
sortBy?: components["schemas"]["MemberSortField"];
|
|
9398
9629
|
};
|
|
9630
|
+
/**
|
|
9631
|
+
* @description A value localized per [`LanguageTag`], with an English-first fallback.
|
|
9632
|
+
*
|
|
9633
|
+
* The reusable mechanism behind any text that varies by language: a
|
|
9634
|
+
* [`Label`]'s display name and description, a redaction operator's bucket
|
|
9635
|
+
* label, and so on. English (`"en"`) is the conventional anchor —
|
|
9636
|
+
* constructors seed it, and [`resolve`] falls back to it (then to any
|
|
9637
|
+
* entry) when a requested locale is absent, so a caller that supplied
|
|
9638
|
+
* English always gets *some* value.
|
|
9639
|
+
*
|
|
9640
|
+
* Generic over the stored value `T`, so it carries a bare `HipStr`
|
|
9641
|
+
* (a bucket label) or a richer struct (a label's name-plus-description)
|
|
9642
|
+
* equally. It is a thin wrapper over a `HashMap<LanguageTag, T>`; the
|
|
9643
|
+
* added value is the fallback policy in [`resolve`], kept in one place
|
|
9644
|
+
* rather than reimplemented at each use site.
|
|
9645
|
+
*
|
|
9646
|
+
* [`Label`]: crate::entity::Label
|
|
9647
|
+
* [`resolve`]: LocalizedText::resolve
|
|
9648
|
+
*/
|
|
9649
|
+
LocalizedText: {
|
|
9650
|
+
[key: string]: components["schemas"]["LabelLocale"];
|
|
9651
|
+
};
|
|
9399
9652
|
/** @description Request payload for login. */
|
|
9400
9653
|
Login: {
|
|
9401
9654
|
/** @description Email address or username of the account. */
|
|
@@ -9684,16 +9937,19 @@ interface components {
|
|
|
9684
9937
|
/**
|
|
9685
9938
|
* @description A pipeline's detection + governance intent.
|
|
9686
9939
|
*
|
|
9687
|
-
* Holds what a pipeline author decides — which recognizers to run, the
|
|
9688
|
-
*
|
|
9689
|
-
*
|
|
9690
|
-
*
|
|
9691
|
-
*
|
|
9940
|
+
* Holds what a pipeline author decides — which recognizers to run, the default
|
|
9941
|
+
* scope, and the policies to apply. Infrastructure config (enrichment backends,
|
|
9942
|
+
* deduplication calibration) is server-wide and lives in the engine config, not
|
|
9943
|
+
* here. Stored as JSON in the pipeline's `definition` column but validated
|
|
9944
|
+
* against this schema at the API boundary.
|
|
9945
|
+
*
|
|
9946
|
+
* The label catalog is not part of this: the policies own the label vocabulary,
|
|
9947
|
+
* and the engine derives the detection catalog from them at run time.
|
|
9692
9948
|
*
|
|
9693
9949
|
* The split:
|
|
9694
9950
|
*
|
|
9695
|
-
* - `recognizers` / `deduplication`
|
|
9696
|
-
*
|
|
9951
|
+
* - `recognizers` / `deduplication` — the detection intent, merged with the
|
|
9952
|
+
* server-wide engine defaults into an `AnalyzerParams`.
|
|
9697
9953
|
* - `default_scope` — optional pipeline-wide scope a document may override.
|
|
9698
9954
|
* - `policy_slugs` — references to the workspace's policies, resolved at run
|
|
9699
9955
|
* time.
|
|
@@ -9711,14 +9967,6 @@ interface components {
|
|
|
9711
9967
|
* the document must assert its own.
|
|
9712
9968
|
*/
|
|
9713
9969
|
defaultScope?: components["schemas"]["ScopeParams"];
|
|
9714
|
-
/**
|
|
9715
|
-
* @description Entity-label catalog: which entity types the recognizers emit.
|
|
9716
|
-
*
|
|
9717
|
-
* Reusable across the pipeline's documents, so it lives here rather than in
|
|
9718
|
-
* per-document scope.
|
|
9719
|
-
* @default {}
|
|
9720
|
-
*/
|
|
9721
|
-
labelCatalog: components["schemas"]["LabelCatalogParams"];
|
|
9722
9970
|
/**
|
|
9723
9971
|
* @description Slugs of workspace policies applied at redaction.
|
|
9724
9972
|
*
|
|
@@ -9931,27 +10179,40 @@ interface components {
|
|
|
9931
10179
|
* fallback per policy" at the type level.
|
|
9932
10180
|
*/
|
|
9933
10181
|
fallback?: components["schemas"]["ModalityRedactions"];
|
|
10182
|
+
/**
|
|
10183
|
+
* @description Named clusters of [`LabelRef`]s this policy's rules may
|
|
10184
|
+
* reference by name via [`Predicate::LabelInGroup`]. Scoped
|
|
10185
|
+
* to this policy — a rule can only name a group its own
|
|
10186
|
+
* policy declared; unknown references error at request
|
|
10187
|
+
* validation. Two policies that both declare `hipaa_18` with
|
|
10188
|
+
* different labelsets stay independent.
|
|
10189
|
+
*
|
|
10190
|
+
* [`LabelRef`]: elide_core::entity::LabelRef
|
|
10191
|
+
* [`Predicate::LabelInGroup`]: predicate::Predicate::LabelInGroup
|
|
10192
|
+
*/
|
|
10193
|
+
groups?: components["schemas"]["LabelGroup"][];
|
|
9934
10194
|
/**
|
|
9935
10195
|
* Format: uuid
|
|
9936
10196
|
* @description Stable identifier. UUIDv7 recommended (time-ordered);
|
|
9937
10197
|
* customer-supplied so re-submissions carry the same id.
|
|
9938
10198
|
* Engine stamps this into the redaction event's
|
|
9939
|
-
* [`Attribution::
|
|
9940
|
-
*
|
|
10199
|
+
* [`Attribution::name`] so reviewers can find this policy
|
|
10200
|
+
* from any redaction it drove.
|
|
9941
10201
|
*
|
|
9942
|
-
* [`Attribution::
|
|
10202
|
+
* [`Attribution::name`]: elide_core::entity::provenance::Attribution::name
|
|
9943
10203
|
*/
|
|
9944
10204
|
id: string;
|
|
9945
10205
|
/**
|
|
9946
|
-
* @description Vocabulary the policy operates over
|
|
9947
|
-
*
|
|
10206
|
+
* @description Vocabulary the policy operates over: builtins picked by
|
|
10207
|
+
* name plus caller-authored custom label schemas. Engine
|
|
10208
|
+
* unions every submitted policy's `labels` into a per-request
|
|
9948
10209
|
* [`LabelCatalog`] used to drive recognizer dispatch and
|
|
9949
10210
|
* tag-based [`Predicate::TagOneOf`] matching.
|
|
9950
10211
|
*
|
|
9951
10212
|
* [`LabelCatalog`]: elide_core::entity::LabelCatalog
|
|
9952
10213
|
* [`Predicate::TagOneOf`]: predicate::Predicate::TagOneOf
|
|
9953
10214
|
*/
|
|
9954
|
-
labels?: components["schemas"]["
|
|
10215
|
+
labels?: components["schemas"]["Labels"];
|
|
9955
10216
|
/** @description Human-readable name. Display-only. Does not key anything. */
|
|
9956
10217
|
name: string;
|
|
9957
10218
|
/** @description Lifecycle rules for content under this policy. */
|
|
@@ -9978,41 +10239,16 @@ interface components {
|
|
|
9978
10239
|
policySlug: string;
|
|
9979
10240
|
};
|
|
9980
10241
|
/**
|
|
9981
|
-
* @description One rule inside a [`PolicyDefinition`]. Identity is the UUID;
|
|
9982
|
-
* `description` are display-only.
|
|
10242
|
+
* @description One rule inside a [`PolicyDefinition`]. Identity is the UUID;
|
|
10243
|
+
* `name` / `description` are display-only.
|
|
10244
|
+
*
|
|
10245
|
+
* Untagged on the wire: distinguished by the presence of
|
|
10246
|
+
* `predicate` (predicated) vs. `operators` (table). Existing
|
|
10247
|
+
* JSON keeps working.
|
|
9983
10248
|
*
|
|
9984
10249
|
* [`PolicyDefinition`]: super::PolicyDefinition
|
|
9985
10250
|
*/
|
|
9986
|
-
PolicyRule:
|
|
9987
|
-
/**
|
|
9988
|
-
* @description Per-modality redaction operators applied when the
|
|
9989
|
-
* predicate matches. Modalities the rule doesn't cover fall
|
|
9990
|
-
* through to the policy fallback (or the next policy in the
|
|
9991
|
-
* chain).
|
|
9992
|
-
*/
|
|
9993
|
-
action: components["schemas"]["ModalityRedactions"];
|
|
9994
|
-
/** @description Optional description for reviewers. */
|
|
9995
|
-
description?: string;
|
|
9996
|
-
/**
|
|
9997
|
-
* Format: uuid
|
|
9998
|
-
* @description Stable identifier. UUIDv7 recommended (time-ordered);
|
|
9999
|
-
* customer-supplied so re-submissions carry the same id.
|
|
10000
|
-
* Engine stamps this into the redaction event's
|
|
10001
|
-
* [`Attribution::reason`] so reviewers can trace back which
|
|
10002
|
-
* rule fired.
|
|
10003
|
-
*
|
|
10004
|
-
* [`Attribution::reason`]: elide_core::entity::provenance::Attribution::reason
|
|
10005
|
-
*/
|
|
10006
|
-
id: string;
|
|
10007
|
-
/** @description Human-readable name. Display-only. Does not key anything. */
|
|
10008
|
-
name: string;
|
|
10009
|
-
/**
|
|
10010
|
-
* @description Entity-level predicate that decides whether the rule fires
|
|
10011
|
-
* on a given recognised entity. Composable; see
|
|
10012
|
-
* [`Predicate`] for the full grammar.
|
|
10013
|
-
*/
|
|
10014
|
-
predicate: components["schemas"]["Predicate"];
|
|
10015
|
-
};
|
|
10251
|
+
PolicyRule: components["schemas"]["PredicatedRule"] | components["schemas"]["TableRule"];
|
|
10016
10252
|
/**
|
|
10017
10253
|
* @description Lightweight policy view for lists.
|
|
10018
10254
|
*
|
|
@@ -10060,6 +10296,17 @@ interface components {
|
|
|
10060
10296
|
*/
|
|
10061
10297
|
total?: number;
|
|
10062
10298
|
};
|
|
10299
|
+
/**
|
|
10300
|
+
* @description A regulatory posture this crate ships a [`Template`] for.
|
|
10301
|
+
*
|
|
10302
|
+
* Serialises as a snake_case string matching the produced
|
|
10303
|
+
* template's [`Template::id`] (`"hipaa_safe_harbor"`,
|
|
10304
|
+
* `"gdpr_article_9"`, ...) so a wire caller can round-trip
|
|
10305
|
+
* `template: "hipaa_safe_harbor"` through JSON directly into
|
|
10306
|
+
* a variant. Iterate every variant via `PolicyTemplate::iter()`
|
|
10307
|
+
* (from [`strum::IntoEnumIterator`]).
|
|
10308
|
+
*/
|
|
10309
|
+
PolicyTemplate: "hipaa_safe_harbor" | "gdpr_article9" | "pci_dss_pan_truncate" | "pci_dss_pan_hmac" | "ccpa";
|
|
10063
10310
|
/**
|
|
10064
10311
|
* @description Closed polygon, given by its ordered vertices.
|
|
10065
10312
|
*
|
|
@@ -10085,12 +10332,21 @@ interface components {
|
|
|
10085
10332
|
/** @constant */
|
|
10086
10333
|
kind: "labelOneOf";
|
|
10087
10334
|
/** @description Allowed labels. */
|
|
10088
|
-
labels:
|
|
10335
|
+
labels: components["schemas"]["LabelRef"][];
|
|
10089
10336
|
} | {
|
|
10090
10337
|
/** @constant */
|
|
10091
10338
|
kind: "tagOneOf";
|
|
10092
10339
|
/** @description Allowed tags. */
|
|
10093
10340
|
tags: string[];
|
|
10341
|
+
} | {
|
|
10342
|
+
/**
|
|
10343
|
+
* @description Name of the [`LabelGroup`] to match against.
|
|
10344
|
+
*
|
|
10345
|
+
* [`LabelGroup`]: super::LabelGroup
|
|
10346
|
+
*/
|
|
10347
|
+
group: string;
|
|
10348
|
+
/** @constant */
|
|
10349
|
+
kind: "labelInGroup";
|
|
10094
10350
|
} | {
|
|
10095
10351
|
/** @description Cluster id to match. */
|
|
10096
10352
|
coref: string;
|
|
@@ -10112,6 +10368,31 @@ interface components {
|
|
|
10112
10368
|
/** @description Negated predicate. */
|
|
10113
10369
|
not: components["schemas"]["Predicate"];
|
|
10114
10370
|
};
|
|
10371
|
+
/** @description Predicate-gated rule: one predicate, one action. */
|
|
10372
|
+
PredicatedRule: {
|
|
10373
|
+
/**
|
|
10374
|
+
* @description Per-modality redaction operators applied when the
|
|
10375
|
+
* predicate matches. Modalities the rule doesn't cover fall
|
|
10376
|
+
* through to the policy fallback (or the next policy in the
|
|
10377
|
+
* chain).
|
|
10378
|
+
*/
|
|
10379
|
+
action: components["schemas"]["ModalityRedactions"];
|
|
10380
|
+
/** @description Optional description for reviewers. */
|
|
10381
|
+
description?: string;
|
|
10382
|
+
/**
|
|
10383
|
+
* Format: uuid
|
|
10384
|
+
* @description Stable identifier. UUIDv7 recommended.
|
|
10385
|
+
*/
|
|
10386
|
+
id: string;
|
|
10387
|
+
/** @description Human-readable name. Display-only. */
|
|
10388
|
+
name: string;
|
|
10389
|
+
/**
|
|
10390
|
+
* @description Entity-level predicate that decides whether the rule fires
|
|
10391
|
+
* on a given recognised entity. Composable; see
|
|
10392
|
+
* [`Predicate`] for the full grammar.
|
|
10393
|
+
*/
|
|
10394
|
+
predicate: components["schemas"]["Predicate"];
|
|
10395
|
+
};
|
|
10115
10396
|
/**
|
|
10116
10397
|
* @description How to pick recognizers out of a deployment-configured lineup.
|
|
10117
10398
|
*
|
|
@@ -10150,38 +10431,6 @@ interface components {
|
|
|
10150
10431
|
/** Format: uint */
|
|
10151
10432
|
start: number;
|
|
10152
10433
|
};
|
|
10153
|
-
/**
|
|
10154
|
-
* @description A modality-tagged group of recognized entities.
|
|
10155
|
-
*
|
|
10156
|
-
* The unit [`AnalyzedDocument`] stores in `body` and in every
|
|
10157
|
-
* `parts` entry.
|
|
10158
|
-
*
|
|
10159
|
-
* Tagged by `modality` (snake_case) so deserialization picks the
|
|
10160
|
-
* right variant and the entity vec inside is statically typed
|
|
10161
|
-
* per modality — apply-time we hand each variant back to elide
|
|
10162
|
-
* as a `Vec<Entity<M>>` for the appropriate `M`.
|
|
10163
|
-
*/
|
|
10164
|
-
RecognizedGroup: {
|
|
10165
|
-
/** @description Recognized entities, in source-coordinate order. */
|
|
10166
|
-
entities: components["schemas"]["TextEntityRecord"][];
|
|
10167
|
-
/** @constant */
|
|
10168
|
-
modality: "text";
|
|
10169
|
-
} | {
|
|
10170
|
-
/** @description Recognized entities, in source-coordinate order. */
|
|
10171
|
-
entities: components["schemas"]["TabularEntityRecord"][];
|
|
10172
|
-
/** @constant */
|
|
10173
|
-
modality: "tabular";
|
|
10174
|
-
} | {
|
|
10175
|
-
/** @description Recognized entities, in source-coordinate order. */
|
|
10176
|
-
entities: components["schemas"]["ImageEntityRecord"][];
|
|
10177
|
-
/** @constant */
|
|
10178
|
-
modality: "image";
|
|
10179
|
-
} | {
|
|
10180
|
-
/** @description Recognized entities, in source-coordinate order. */
|
|
10181
|
-
entities: components["schemas"]["AudioEntityRecord"][];
|
|
10182
|
-
/** @constant */
|
|
10183
|
-
modality: "audio";
|
|
10184
|
-
};
|
|
10185
10434
|
/**
|
|
10186
10435
|
* @description Recognizer slots an analyzer can fill.
|
|
10187
10436
|
*
|
|
@@ -10255,6 +10504,38 @@ interface components {
|
|
|
10255
10504
|
};
|
|
10256
10505
|
/** @description What class of data a retention policy applies to. */
|
|
10257
10506
|
RetentionScope: "original_content" | "redacted_output" | "audit_logs";
|
|
10507
|
+
/**
|
|
10508
|
+
* @description A reviewer-supplied redaction override with the policy
|
|
10509
|
+
* authority it draws from.
|
|
10510
|
+
*
|
|
10511
|
+
* The `policy_id` isn't just for audit — it also picks which
|
|
10512
|
+
* per-policy pseudonym vault and per-policy [`KeyProvider`] the
|
|
10513
|
+
* override's operator resolves against, so an override using
|
|
10514
|
+
* [`Pseudonymize`] or [`HmacHash`] stays consistent with the
|
|
10515
|
+
* authoring policy's other rules.
|
|
10516
|
+
*
|
|
10517
|
+
* [`KeyProvider`]: elide::redaction::operators::KeyProvider
|
|
10518
|
+
* [`Pseudonymize`]: elide::redaction::operators::Pseudonymize
|
|
10519
|
+
* [`HmacHash`]: elide::redaction::operators::HmacHash
|
|
10520
|
+
*/
|
|
10521
|
+
Review: {
|
|
10522
|
+
/**
|
|
10523
|
+
* @description The per-modality redaction operators to run for this
|
|
10524
|
+
* entity. Overrides whatever the policy set would have
|
|
10525
|
+
* picked for the same entity.
|
|
10526
|
+
*/
|
|
10527
|
+
action: components["schemas"]["ModalityRedactions"];
|
|
10528
|
+
/**
|
|
10529
|
+
* Format: uuid
|
|
10530
|
+
* @description The policy whose authority the reviewer exercises. Must
|
|
10531
|
+
* match the `id` of a [`PolicyDefinition`] submitted with
|
|
10532
|
+
* the anonymize request. The audit event stamps this UUID
|
|
10533
|
+
* as the attribution `name`.
|
|
10534
|
+
*
|
|
10535
|
+
* [`PolicyDefinition`]: nvisy_schema::policy::PolicyDefinition
|
|
10536
|
+
*/
|
|
10537
|
+
policyId: string;
|
|
10538
|
+
};
|
|
10258
10539
|
/**
|
|
10259
10540
|
* @description A serializable summary of *which selection rule* bound an operator to an
|
|
10260
10541
|
* entity — the automatic "why" behind a redaction.
|
|
@@ -10322,7 +10603,7 @@ interface components {
|
|
|
10322
10603
|
* analyzer, which borrows it into a fresh [`RecognizerContext`] per
|
|
10323
10604
|
* payload. It holds only what the *caller* asserts about the analysis as a
|
|
10324
10605
|
* whole — languages, jurisdictions, document labels, the target catalog, a
|
|
10325
|
-
* correlation id — none of which depends on the medium, so one `Scope`
|
|
10606
|
+
* correlation id — none of which depends on the medium, so one [`Scope`]
|
|
10326
10607
|
* drives a text, image, or audio analysis alike.
|
|
10327
10608
|
*
|
|
10328
10609
|
* Per-medium regions (caller-supplied inclusions and exclusions, which are
|
|
@@ -10332,40 +10613,42 @@ interface components {
|
|
|
10332
10613
|
*
|
|
10333
10614
|
* [`RecognizerContext`]: super::RecognizerContext
|
|
10334
10615
|
* [`Annotations`]: super::annotation::Annotations
|
|
10335
|
-
|
|
10336
|
-
|
|
10337
|
-
|
|
10338
|
-
|
|
10339
|
-
|
|
10340
|
-
|
|
10341
|
-
|
|
10342
|
-
|
|
10343
|
-
|
|
10344
|
-
|
|
10345
|
-
|
|
10346
|
-
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
|
|
10351
|
-
|
|
10352
|
-
|
|
10353
|
-
|
|
10354
|
-
|
|
10355
|
-
|
|
10356
|
-
|
|
10357
|
-
*
|
|
10358
|
-
*
|
|
10359
|
-
*
|
|
10616
|
+
* Free-form, caller-asserted request context: the *document* it is about and
|
|
10617
|
+
* the *request* driving it.
|
|
10618
|
+
*
|
|
10619
|
+
* Three axes of opaque classification strings elide neither ships nor
|
|
10620
|
+
* interprets — a downstream policy layer chooses what `"medical"` or
|
|
10621
|
+
* `"fraud_detection"` or `"auditor"` mean. They are read in two places: a
|
|
10622
|
+
* recognizer may bias its detection on them (the LLM prompt lists them so the
|
|
10623
|
+
* model attends to the right terms), and a scope-aware operator predicate may
|
|
10624
|
+
* branch on them at selection time (redact the same document differently per
|
|
10625
|
+
* [`audience`]).
|
|
10626
|
+
*
|
|
10627
|
+
* - [`tags`] classify the *document* (`"medical"`, `"gdpr-request"`).
|
|
10628
|
+
* - [`purpose`] is why the request exists (`"fraud_detection"`).
|
|
10629
|
+
* - [`audience`] is who the redacted output is for (`"support_agent"`,
|
|
10630
|
+
* `"auditor"`) — the axis PCI-style "same document, two masks" branches on.
|
|
10631
|
+
*
|
|
10632
|
+
* [`tags`]: Self::tags
|
|
10633
|
+
* [`purpose`]: Self::purpose
|
|
10634
|
+
* [`audience`]: Self::audience
|
|
10635
|
+
*/
|
|
10636
|
+
ScopeMetadata: {
|
|
10637
|
+
/**
|
|
10638
|
+
* @description Who the redacted output is for (e.g. `"support_agent"`, `"auditor"`).
|
|
10639
|
+
* The axis a per-audience redaction branches on: one detected document,
|
|
10640
|
+
* selected differently per audience. May hold several.
|
|
10360
10641
|
* @default []
|
|
10361
10642
|
*/
|
|
10362
|
-
|
|
10643
|
+
audience: string[];
|
|
10363
10644
|
/**
|
|
10364
|
-
* @description
|
|
10365
|
-
*
|
|
10366
|
-
*
|
|
10645
|
+
* @description The caller-asserted business purpose driving this request (e.g.
|
|
10646
|
+
* `"fraud_detection"`, `"gdpr_erasure_request"`). A scope-aware operator
|
|
10647
|
+
* predicate may skip or swap a rule based on it; a recognizer may bias
|
|
10648
|
+
* detection on it. `None` when the caller asserts no purpose.
|
|
10649
|
+
* @default null
|
|
10367
10650
|
*/
|
|
10368
|
-
|
|
10651
|
+
purpose: string;
|
|
10369
10652
|
/**
|
|
10370
10653
|
* @description Document-level classification tags (e.g. `"medical"`,
|
|
10371
10654
|
* `"gdpr-request"`). Recognizers may use these to bias their behavior
|
|
@@ -10373,9 +10656,9 @@ interface components {
|
|
|
10373
10656
|
*
|
|
10374
10657
|
* Named `tags`, not `labels`, to keep "label" reserved for the entity
|
|
10375
10658
|
* taxonomy ([`LabelRef`]/[`LabelCatalog`]): these classify the
|
|
10376
|
-
* *document*, whereas
|
|
10659
|
+
* *document*, whereas the scope's catalog names the entity *types* to
|
|
10660
|
+
* emit.
|
|
10377
10661
|
*
|
|
10378
|
-
* [`catalog`]: Self::catalog
|
|
10379
10662
|
* [`LabelRef`]: crate::entity::LabelRef
|
|
10380
10663
|
* [`LabelCatalog`]: crate::entity::LabelCatalog
|
|
10381
10664
|
* @default []
|
|
@@ -10385,10 +10668,12 @@ interface components {
|
|
|
10385
10668
|
/**
|
|
10386
10669
|
* @description Caller-asserted scope for one request.
|
|
10387
10670
|
*
|
|
10388
|
-
*
|
|
10389
|
-
*
|
|
10390
|
-
*
|
|
10391
|
-
*
|
|
10671
|
+
* A narrower wire projection of `elide::recognition::Scope`:
|
|
10672
|
+
* `languages` and `countries` (typed, elide-native), plus
|
|
10673
|
+
* elide's [`ScopeMetadata`] block for free-form classification
|
|
10674
|
+
* strings (`tags`, `purpose`, `audience`). The engine assembles
|
|
10675
|
+
* this plus a server-minted `correlation_id` and a policy-derived
|
|
10676
|
+
* label catalog into the orchestrator's `Scope` at compile time.
|
|
10392
10677
|
*/
|
|
10393
10678
|
ScopeParams: {
|
|
10394
10679
|
/**
|
|
@@ -10401,17 +10686,6 @@ interface components {
|
|
|
10401
10686
|
* jurisdiction don't lose detections.
|
|
10402
10687
|
*/
|
|
10403
10688
|
countries?: components["schemas"]["CountryCode"][];
|
|
10404
|
-
/**
|
|
10405
|
-
* @description Per-request entity-label catalog.
|
|
10406
|
-
*
|
|
10407
|
-
* Builtins selected by name + custom inline schemas. Drives
|
|
10408
|
-
* what recognizers are asked to emit and tag-based selector
|
|
10409
|
-
* matching in the anonymizer. Engine resolves this into the
|
|
10410
|
-
* assembled `elide::recognition::Scope`'s `catalog` field at
|
|
10411
|
-
* compile time.
|
|
10412
|
-
* @default {}
|
|
10413
|
-
*/
|
|
10414
|
-
labelCatalog: components["schemas"]["LabelCatalogParams"];
|
|
10415
10689
|
/**
|
|
10416
10690
|
* @description Caller-asserted languages for the analysis.
|
|
10417
10691
|
*
|
|
@@ -10421,20 +10695,22 @@ interface components {
|
|
|
10421
10695
|
*/
|
|
10422
10696
|
languages: components["schemas"]["Languages"];
|
|
10423
10697
|
/**
|
|
10424
|
-
* @description
|
|
10425
|
-
*
|
|
10426
|
-
* E.g. `"medical"`, `"gdpr-request"`. Recognizers may use
|
|
10427
|
-
* these to bias their behaviour for domain-specific terms;
|
|
10428
|
-
* those that don't ignore the field.
|
|
10429
|
-
*
|
|
10430
|
-
* Distinct from [`label_catalog`]: tags classify the
|
|
10431
|
-
* *document*, whereas the catalog names the entity *types*
|
|
10432
|
-
* to emit.
|
|
10433
|
-
*
|
|
10434
|
-
* [`label_catalog`]: ScopeParams::label_catalog
|
|
10698
|
+
* @description Free-form request context: document tags, request purpose,
|
|
10699
|
+
* output audience. See elide's [`ScopeMetadata`].
|
|
10435
10700
|
*/
|
|
10436
|
-
|
|
10701
|
+
metadata?: components["schemas"]["ScopeMetadata"];
|
|
10437
10702
|
};
|
|
10703
|
+
/**
|
|
10704
|
+
* @description Which SHA-2 variant a hashing operator uses.
|
|
10705
|
+
*
|
|
10706
|
+
* Shared by [`Sha2Hash`] (unkeyed digest) and [`HmacHash`] (keyed HMAC):
|
|
10707
|
+
* both pick the same underlying width, so the choice lives in one enum
|
|
10708
|
+
* rather than one per operator.
|
|
10709
|
+
*
|
|
10710
|
+
* [`Sha2Hash`]: super::Sha2Hash
|
|
10711
|
+
* [`HmacHash`]: super::HmacHash
|
|
10712
|
+
*/
|
|
10713
|
+
Sha2Algorithm: "sha256" | "sha512";
|
|
10438
10714
|
/** @description Request payload for signup. */
|
|
10439
10715
|
Signup: {
|
|
10440
10716
|
/** @description Optional display name of the account. */
|
|
@@ -10511,6 +10787,42 @@ interface components {
|
|
|
10511
10787
|
* to track whether a run was manually triggered, scheduled, or triggered by a webhook.
|
|
10512
10788
|
*/
|
|
10513
10789
|
SyncTriggerType: "manual" | "scheduled" | "webhook";
|
|
10790
|
+
/**
|
|
10791
|
+
* @description Per-label table rule: N labels, N actions, one shared identity.
|
|
10792
|
+
*
|
|
10793
|
+
* Each entry compiles to an elide `Rule::label` attachment under
|
|
10794
|
+
* this rule's shared UUID / name / description — so the audit
|
|
10795
|
+
* trail records "rule X fired" without exposing the fan-out to
|
|
10796
|
+
* the reviewer. Meant for templates where a single policy intent
|
|
10797
|
+
* (e.g. "HIPAA Safe Harbor identifiers") routes different labels
|
|
10798
|
+
* to different operators.
|
|
10799
|
+
*/
|
|
10800
|
+
TableRule: {
|
|
10801
|
+
/** @description Optional description for reviewers. */
|
|
10802
|
+
description?: string;
|
|
10803
|
+
/**
|
|
10804
|
+
* Format: uuid
|
|
10805
|
+
* @description Stable identifier — shared by every entry the table
|
|
10806
|
+
* expands into. UUIDv7 recommended.
|
|
10807
|
+
*/
|
|
10808
|
+
id: string;
|
|
10809
|
+
/** @description Human-readable name. Display-only. */
|
|
10810
|
+
name: string;
|
|
10811
|
+
/**
|
|
10812
|
+
* @description Per-label operator dispatch. Every entity whose label
|
|
10813
|
+
* matches a listed [`LabelRef`] attaches the paired
|
|
10814
|
+
* [`ModalityRedactions`]. Labels absent from the list are not
|
|
10815
|
+
* affected by this rule and fall through to the next rule or
|
|
10816
|
+
* the policy fallback.
|
|
10817
|
+
*
|
|
10818
|
+
* A [`Vec`] rather than a map keeps the author-supplied
|
|
10819
|
+
* order — elide's anonymizer is first-match-wins, so wire
|
|
10820
|
+
* order determines which entry fires when two match the
|
|
10821
|
+
* same entity. Duplicate labels are the caller's bug; the
|
|
10822
|
+
* engine attaches every entry, and the first one wins.
|
|
10823
|
+
*/
|
|
10824
|
+
operators: components["schemas"]["LabelEntry"][];
|
|
10825
|
+
};
|
|
10514
10826
|
/**
|
|
10515
10827
|
* @description Detected piece of sensitive information within some medium.
|
|
10516
10828
|
*
|
|
@@ -10596,12 +10908,17 @@ interface components {
|
|
|
10596
10908
|
/** @description The elide entity, as recognition produced it. */
|
|
10597
10909
|
entity: components["schemas"]["TabularEntity"];
|
|
10598
10910
|
/**
|
|
10599
|
-
* @description Reviewer-supplied override.
|
|
10911
|
+
* @description Reviewer-supplied redaction override.
|
|
10600
10912
|
*
|
|
10601
|
-
* `None` means "use the policy's decision";
|
|
10602
|
-
* overrides
|
|
10913
|
+
* `None` means "use the matching policy rule's decision";
|
|
10914
|
+
* `Some(...)` overrides that rule for this specific entity
|
|
10915
|
+
* at apply time. Reviewer overrides take precedence over
|
|
10916
|
+
* every policy rule and inherit the authority of the
|
|
10917
|
+
* [`Review::policy_id`] they name — the audit event's
|
|
10918
|
+
* attribution stamps that policy so the trail names the
|
|
10919
|
+
* authority under which the override fired.
|
|
10603
10920
|
*/
|
|
10604
|
-
|
|
10921
|
+
review?: components["schemas"]["Review"];
|
|
10605
10922
|
};
|
|
10606
10923
|
/**
|
|
10607
10924
|
* @description One thing that happened to an entity, with its effect on confidence.
|
|
@@ -10853,6 +11170,57 @@ interface components {
|
|
|
10853
11170
|
/** @constant */
|
|
10854
11171
|
kind: "drop_column";
|
|
10855
11172
|
};
|
|
11173
|
+
/**
|
|
11174
|
+
* @description Fallback operator that runs when a declinable primary
|
|
11175
|
+
* ([`TextRedaction::Clamp`], [`TextRedaction::GeneralizeDate`])
|
|
11176
|
+
* doesn't apply to the entity value.
|
|
11177
|
+
*
|
|
11178
|
+
* The four operators that always apply and produce a deterministic
|
|
11179
|
+
* output without needing engine-side infrastructure (no key
|
|
11180
|
+
* provider, no vault). Enough to satisfy every regulatory
|
|
11181
|
+
* pattern I know: `Clamp/GeneralizeDate → Erase` (the safe
|
|
11182
|
+
* default), `→ Replace { template }` (an explicit placeholder),
|
|
11183
|
+
* or `→ Mask` / `→ Keep` on the rare occasion those fit.
|
|
11184
|
+
*
|
|
11185
|
+
* Absent from the primary's spec, elide's baked-in default is
|
|
11186
|
+
* [`Erase`] — a bare [`TextRedaction::Clamp`] without a `fallback`
|
|
11187
|
+
* erases values that aren't numeric.
|
|
11188
|
+
*
|
|
11189
|
+
* [`Erase`]: TerminalFallback::Erase
|
|
11190
|
+
*/
|
|
11191
|
+
TerminalFallback: {
|
|
11192
|
+
/** @constant */
|
|
11193
|
+
kind: "erase";
|
|
11194
|
+
} | {
|
|
11195
|
+
/** @constant */
|
|
11196
|
+
kind: "keep";
|
|
11197
|
+
} | {
|
|
11198
|
+
/** @constant */
|
|
11199
|
+
kind: "replace";
|
|
11200
|
+
/**
|
|
11201
|
+
* @description Template string. Default `[{label}]`.
|
|
11202
|
+
* @default [{label}]
|
|
11203
|
+
*/
|
|
11204
|
+
template: string;
|
|
11205
|
+
} | {
|
|
11206
|
+
/**
|
|
11207
|
+
* Format: uint
|
|
11208
|
+
* @description Characters to leave unmasked at the start of the value.
|
|
11209
|
+
*/
|
|
11210
|
+
keep_prefix?: number;
|
|
11211
|
+
/**
|
|
11212
|
+
* Format: uint
|
|
11213
|
+
* @description Characters to leave unmasked at the end of the value.
|
|
11214
|
+
*/
|
|
11215
|
+
keep_suffix?: number;
|
|
11216
|
+
/** @constant */
|
|
11217
|
+
kind: "mask";
|
|
11218
|
+
/**
|
|
11219
|
+
* @description The character that replaces masked positions.
|
|
11220
|
+
* @default *
|
|
11221
|
+
*/
|
|
11222
|
+
mask_char: string;
|
|
11223
|
+
};
|
|
10856
11224
|
/** @description Request payload for testing a webhook. */
|
|
10857
11225
|
TestWebhook: {
|
|
10858
11226
|
/**
|
|
@@ -10957,12 +11325,17 @@ interface components {
|
|
|
10957
11325
|
/** @description The elide entity, as recognition produced it. */
|
|
10958
11326
|
entity: components["schemas"]["TextEntity"];
|
|
10959
11327
|
/**
|
|
10960
|
-
* @description Reviewer-supplied override.
|
|
11328
|
+
* @description Reviewer-supplied redaction override.
|
|
10961
11329
|
*
|
|
10962
|
-
* `None` means "use the policy's decision";
|
|
10963
|
-
* overrides
|
|
11330
|
+
* `None` means "use the matching policy rule's decision";
|
|
11331
|
+
* `Some(...)` overrides that rule for this specific entity
|
|
11332
|
+
* at apply time. Reviewer overrides take precedence over
|
|
11333
|
+
* every policy rule and inherit the authority of the
|
|
11334
|
+
* [`Review::policy_id`] they name — the audit event's
|
|
11335
|
+
* attribution stamps that policy so the trail names the
|
|
11336
|
+
* authority under which the override fired.
|
|
10964
11337
|
*/
|
|
10965
|
-
|
|
11338
|
+
review?: components["schemas"]["Review"];
|
|
10966
11339
|
};
|
|
10967
11340
|
/**
|
|
10968
11341
|
* @description One thing that happened to an entity, with its effect on confidence.
|
|
@@ -11214,7 +11587,7 @@ interface components {
|
|
|
11214
11587
|
* @description SHA-256 (default) or SHA-512.
|
|
11215
11588
|
* @default sha256
|
|
11216
11589
|
*/
|
|
11217
|
-
algorithm: components["schemas"]["
|
|
11590
|
+
algorithm: components["schemas"]["Sha2Algorithm"];
|
|
11218
11591
|
/** @constant */
|
|
11219
11592
|
kind: "hash";
|
|
11220
11593
|
/** @description Salt prepended to the value before hashing. */
|
|
@@ -11250,6 +11623,75 @@ interface components {
|
|
|
11250
11623
|
} | {
|
|
11251
11624
|
/** @constant */
|
|
11252
11625
|
kind: "encrypt";
|
|
11626
|
+
} | {
|
|
11627
|
+
/**
|
|
11628
|
+
* @description HMAC-SHA-256 (default) or HMAC-SHA-512.
|
|
11629
|
+
* @default sha256
|
|
11630
|
+
*/
|
|
11631
|
+
algorithm: components["schemas"]["Sha2Algorithm"];
|
|
11632
|
+
/** @constant */
|
|
11633
|
+
kind: "hmac_hash";
|
|
11634
|
+
} | {
|
|
11635
|
+
/**
|
|
11636
|
+
* Format: uint
|
|
11637
|
+
* @description Characters to keep at the start of the value.
|
|
11638
|
+
*/
|
|
11639
|
+
keep_prefix?: number;
|
|
11640
|
+
/**
|
|
11641
|
+
* Format: uint
|
|
11642
|
+
* @description Characters to keep at the end of the value.
|
|
11643
|
+
*/
|
|
11644
|
+
keep_suffix?: number;
|
|
11645
|
+
/** @constant */
|
|
11646
|
+
kind: "truncate";
|
|
11647
|
+
} | {
|
|
11648
|
+
/**
|
|
11649
|
+
* Format: double
|
|
11650
|
+
* @description Threshold at or above which values collapse to
|
|
11651
|
+
* `ceiling_bucket`. `None` disables the ceiling.
|
|
11652
|
+
*/
|
|
11653
|
+
ceiling?: number;
|
|
11654
|
+
/**
|
|
11655
|
+
* @description Bucket label for values at or above `ceiling`. Required
|
|
11656
|
+
* when `ceiling` is set; ignored otherwise.
|
|
11657
|
+
*/
|
|
11658
|
+
ceiling_bucket?: components["schemas"]["ClampBucket"];
|
|
11659
|
+
/**
|
|
11660
|
+
* @description Operator that runs when the entity value isn't a
|
|
11661
|
+
* finite number. `None` erases (elide's default).
|
|
11662
|
+
*/
|
|
11663
|
+
fallback?: components["schemas"]["TerminalFallback"];
|
|
11664
|
+
/**
|
|
11665
|
+
* Format: double
|
|
11666
|
+
* @description Threshold at or below which values collapse to
|
|
11667
|
+
* `floor_bucket`. `None` disables the floor.
|
|
11668
|
+
*/
|
|
11669
|
+
floor?: number;
|
|
11670
|
+
/**
|
|
11671
|
+
* @description Bucket label for values at or below `floor`. Required
|
|
11672
|
+
* when `floor` is set; ignored otherwise.
|
|
11673
|
+
*/
|
|
11674
|
+
floor_bucket?: components["schemas"]["ClampBucket"];
|
|
11675
|
+
/** @constant */
|
|
11676
|
+
kind: "clamp";
|
|
11677
|
+
} | {
|
|
11678
|
+
/**
|
|
11679
|
+
* @description Operator that runs when the entity value isn't a
|
|
11680
|
+
* parseable date. `None` erases (elide's default).
|
|
11681
|
+
*/
|
|
11682
|
+
fallback?: components["schemas"]["TerminalFallback"];
|
|
11683
|
+
/**
|
|
11684
|
+
* @description Coarseness of the output. Default `Year`.
|
|
11685
|
+
* @default year
|
|
11686
|
+
*/
|
|
11687
|
+
granularity: components["schemas"]["DateGranularity"];
|
|
11688
|
+
/** @constant */
|
|
11689
|
+
kind: "generalize_date";
|
|
11690
|
+
/**
|
|
11691
|
+
* @description Which input convention to accept. Default `Iso`.
|
|
11692
|
+
* @default iso
|
|
11693
|
+
*/
|
|
11694
|
+
style: components["schemas"]["DateStyle"];
|
|
11253
11695
|
};
|
|
11254
11696
|
/**
|
|
11255
11697
|
* @description How the structural reconciler picks a winner across labels.
|
|
@@ -11578,7 +12020,7 @@ interface components {
|
|
|
11578
12020
|
* This enumeration corresponds to the `WEBHOOK_EVENT` PostgreSQL enum and is used
|
|
11579
12021
|
* to configure which events a webhook should receive notifications for.
|
|
11580
12022
|
*/
|
|
11581
|
-
WebhookEvent: "file:created" | "file:updated" | "file:deleted" | "member:added" | "member:deleted" | "member:updated" | "connection:created" | "connection:updated" | "connection:deleted" | "connection:
|
|
12023
|
+
WebhookEvent: "file:created" | "file:updated" | "file:deleted" | "member:added" | "member:deleted" | "member:updated" | "connection:created" | "connection:updated" | "connection:deleted" | "connection:sync.started" | "connection:sync.completed" | "connection:sync.failed" | "pipeline:created" | "pipeline:updated" | "pipeline:deleted" | "pipeline:run.started" | "pipeline:run.completed" | "pipeline:run.failed" | "policy:created" | "policy:updated" | "policy:deleted";
|
|
11582
12024
|
/** @description Opaque whk identifier (whk_<uuid>). */
|
|
11583
12025
|
WebhookId: string;
|
|
11584
12026
|
/**
|
|
@@ -11839,6 +12281,34 @@ type PolicyDefinition = Schemas$3["PolicyDefinition"];
|
|
|
11839
12281
|
type CreatePolicy = Schemas$3["CreatePolicy"];
|
|
11840
12282
|
type UpdatePolicy = Schemas$3["UpdatePolicy"];
|
|
11841
12283
|
type PolicyRule = Schemas$3["PolicyRule"];
|
|
12284
|
+
type PolicyTemplate = Schemas$3["PolicyTemplate"];
|
|
12285
|
+
type PredicatedRule = Schemas$3["PredicatedRule"];
|
|
12286
|
+
type TableRule = Schemas$3["TableRule"];
|
|
12287
|
+
type Predicate = Schemas$3["Predicate"];
|
|
12288
|
+
type DocumentPredicate = Schemas$3["DocumentPredicate"];
|
|
12289
|
+
type ModalityRedactions = Schemas$3["ModalityRedactions"];
|
|
12290
|
+
type TextRedaction = Schemas$3["TextRedaction"];
|
|
12291
|
+
type ImageRedaction = Schemas$3["ImageRedaction"];
|
|
12292
|
+
type AudioRedaction = Schemas$3["AudioRedaction"];
|
|
12293
|
+
type TabularRedaction = Schemas$3["TabularRedaction"];
|
|
12294
|
+
type RetentionPolicy = Schemas$3["RetentionPolicy"];
|
|
12295
|
+
type Retention = Schemas$3["Retention"];
|
|
12296
|
+
type RetentionScope = Schemas$3["RetentionScope"];
|
|
12297
|
+
type Labels = Schemas$3["Labels"];
|
|
12298
|
+
type LabelGroup = Schemas$3["LabelGroup"];
|
|
12299
|
+
type LabelEntry = Schemas$3["LabelEntry"];
|
|
12300
|
+
type LabelLocale = Schemas$3["LabelLocale"];
|
|
12301
|
+
type Label = Schemas$3["Label"];
|
|
12302
|
+
type LocalizedText = Schemas$3["LocalizedText"];
|
|
12303
|
+
type Color = Schemas$3["Color"];
|
|
12304
|
+
type Waveform = Schemas$3["Waveform"];
|
|
12305
|
+
type ClampBucket = Schemas$3["ClampBucket"];
|
|
12306
|
+
type ConfidenceThreshold = Schemas$3["ConfidenceThreshold"];
|
|
12307
|
+
type DateStyle = Schemas$3["DateStyle"];
|
|
12308
|
+
type DateGranularity = Schemas$3["DateGranularity"];
|
|
12309
|
+
type LanguageTag = Schemas$3["LanguageTag"];
|
|
12310
|
+
type Sha2Algorithm = Schemas$3["Sha2Algorithm"];
|
|
12311
|
+
type TerminalFallback = Schemas$3["TerminalFallback"];
|
|
11842
12312
|
//#endregion
|
|
11843
12313
|
//#region src/datatypes/run.d.ts
|
|
11844
12314
|
type Schemas$2 = components["schemas"];
|
|
@@ -11846,7 +12316,7 @@ type PipelineRun = Schemas$2["PipelineRun"];
|
|
|
11846
12316
|
type CreatePipelineRun = Schemas$2["CreatePipelineRun"];
|
|
11847
12317
|
type PipelineRunStatus = Schemas$2["PipelineRunStatus"];
|
|
11848
12318
|
type PipelineRunPage = Schemas$2["PipelineRunPage"];
|
|
11849
|
-
type
|
|
12319
|
+
type Audit = Schemas$2["Audit"];
|
|
11850
12320
|
type Artifact = Schemas$2["Artifact"];
|
|
11851
12321
|
//#endregion
|
|
11852
12322
|
//#region src/datatypes/webhook.d.ts
|
|
@@ -11869,5 +12339,5 @@ type UpdateWorkspace = Schemas["UpdateWorkspace"];
|
|
|
11869
12339
|
type WorkspaceRole = Schemas["WorkspaceRole"];
|
|
11870
12340
|
type WorkspacePage = Schemas["WorkspacePage"];
|
|
11871
12341
|
//#endregion
|
|
11872
|
-
export {
|
|
11873
|
-
//# sourceMappingURL=index-
|
|
12342
|
+
export { TextRedaction as $, ConnectionSyncPage as $t, Label as A, InviteSent as At, PolicyRule as B, FilePage as Bt, Color as C, ActivityType as Cn, CreateInvite as Ct, DateStyle as D, UpdateAccount as Dn, InviteExpiration as Dt, DateGranularity as E, PublicAccount as En, InviteCode as Et, LanguageTag as F, SortOrder as Ft, PredicatedRule as G, UpdateFile as Gt, PolicySummaryPage as H, FormatToken as Ht, LocalizedText as I, ComponentHealth as It, RetentionScope as J, AzureCredentials as Jt, Retention as K, ErrorResponse as Kt, ModalityRedactions as L, Health as Lt, LabelGroup as M, InviteStatus as Mt, LabelLocale as N, ListInvites as Nt, DocumentPredicate as O, paths as On, InvitePage as Ot, Labels as P, ReplyInvite as Pt, TerminalFallback as Q, ConnectionSync as Qt, Policy as R, HealthStatus as Rt, ClampBucket as S, ActivityPage as Sn, UpdateMember as St, CreatePolicy as T, AccountRef as Tn, Invite as Tt, PolicyTemplate as U, ListFiles as Ut, PolicySummary as V, FileSource as Vt, Predicate as W, ModalityToken as Wt, TableRule as X, ConnectionConfig as Xt, Sha2Algorithm as Y, Connection as Yt, TabularRedaction as Z, ConnectionPage as Zt, CreatePipelineRun as _, ApiTokenWithJWT as _n, UpdateNotificationSettings as _t, WorkspaceRole as a, SyncConnection as an, PipelineFilter as at, PipelineRunStatus as b, UpdateApiToken as bn, MemberPage as bt, UpdateWebhook as c, SyncStatus as cn, PipelineSummaryPage as ct, WebhookEvent as d, AuthToken as dn, CursorPagination as dt, ConnectionVerification as en, UpdatePolicy as et, WebhookPage as f, Login as fn, Notification as ft, Audit as g, ApiTokenType as gn, UnreadStatus as gt, Artifact as h, ApiTokenPage as hn, NotificationSettings as ht, WorkspacePage as i, S3Credentials as in, PipelineDefinition as it, LabelEntry as j, InviteSortField as jt, ImageRedaction as k, InvitePreview as kt, Webhook as l, SyncTriggerType as ln, PipelineTriggerType as lt, WebhookStatus as m, ApiToken as mn, NotificationPage as mt, UpdateWorkspace as n, CreateConnection as nn, CreatePipeline as nt, CreateWebhook as o, SyncDeletionPolicy as on, PipelineStatus as ot, WebhookResult as p, Signup as pn, NotificationEvent as pt, RetentionPolicy as q, ValidationErrorDetail as qt, Workspace as r, GcsCredentials as rn, Pipeline as rt, TestWebhook as s, SyncMode as sn, PipelineSummary as st, CreateWorkspace as t, ConnectionsQuery as tn, Waveform as tt, WebhookCreated as u, UpdateConnection as un, UpdatePipeline as ut, PipelineRun as v, CreateApiToken as vn, ListMembers as vt, ConfidenceThreshold as w, Account as wn, GenerateInviteCode as wt, AudioRedaction as x, Activity as xn, MemberSortField as xt, PipelineRunPage as y, TokenExpiration as yn, Member as yt, PolicyDefinition as z, File as zt };
|
|
12343
|
+
//# sourceMappingURL=index-DTr3_MW7.d.ts.map
|