{ "openapi": "3.1.0", "info": { "title": "Philter API", "version": "4.0.0" }, "servers": [ { "description": "Philter API", "url": "/" } ], "paths": { "/api/contexts": { "get": { "tags": [ "Contexts" ], "summary": "Get the names of existing contexts.", "description": "Get the names of existing contexts.", "operationId": "getContexts", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "post": { "tags": [ "Contexts" ], "summary": "Create a context.", "description": "Create a new context.", "operationId": "createContext", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "entity_type_disambiguation", "in": "query", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "ledger", "in": "query", "required": false, "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "The context was created.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "The context could not be created.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "409": { "description": "A context with this name already exists.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/contexts/{name}": { "delete": { "tags": [ "Contexts" ], "summary": "Delete a context.", "description": "Delete an existing context.", "operationId": "deleteContext", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The context was deleted.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "The context could not be deleted.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "409": { "description": "The context has open asynchronous redaction jobs and cannot be deleted.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Contexts" ], "summary": "Get the details of a context.", "description": "Get the details of a context with the provided name.", "operationId": "getContext", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "A context with the given name does not exist.", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "put": { "tags": [ "Contexts" ], "summary": "Update a context's settings.", "description": "Update the entity_type_disambiguation and ledger flags on an existing context.", "operationId": "updateContext", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "entity_type_disambiguation", "in": "query", "required": false, "schema": { "type": "boolean", "default": false } }, { "name": "ledger", "in": "query", "required": false, "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Context not found.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/contexts/{name}/entries": { "delete": { "tags": [ "Contexts" ], "summary": "Empty all entries from a context.", "operationId": "emptyEntries", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Contexts" ], "summary": "List entries within a context.", "operationId": "listEntries", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Context not found.", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/contexts/{name}/entries/export": { "get": { "tags": [ "Contexts" ], "summary": "Export a context's mapping table.", "description": "Returns the complete token-to-replacement mapping table for a context in a portable JSON form that can be re-imported into another context or environment. Only token hashes (never the original tokens) and their replacements are returned.", "operationId": "exportEntries", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Context not found.", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/contexts/{name}/entries/import": { "post": { "tags": [ "Contexts" ], "summary": "Import a mapping table into a context.", "description": "Imports token-to-replacement mappings (as produced by the export endpoint) into a context. By default an incoming token that already exists in the context is skipped; pass on_conflict=overwrite to replace existing replacements instead.", "operationId": "importEntries", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "on_conflict", "in": "query", "required": false, "schema": { "type": "string", "default": "skip" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "object" } } } }, "400": { "description": "The payload or on_conflict value is invalid.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Context not found.", "content": { "*/*": { "schema": { "type": "object" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/contexts/{name}/entries/{entryId}": { "delete": { "tags": [ "Contexts" ], "summary": "Delete a single context entry by id.", "operationId": "deleteEntry", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "entryId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/documents": { "get": { "tags": [ "Documents" ], "summary": "List documents submitted for async redaction.", "operationId": "listDocuments", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/documents/{documentId}": { "delete": { "tags": [ "Documents" ], "summary": "Delete an async redaction record.", "operationId": "deleteDocument", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Unknown document id." }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Documents" ], "summary": "Download the redacted document.", "operationId": "downloadDocument", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string", "format": "byte" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Unknown document id.", "content": { "*/*": { "schema": { "type": "string", "format": "byte" } } } }, "409": { "description": "Redaction not yet complete.", "content": { "*/*": { "schema": { "type": "string", "format": "byte" } } } }, "410": { "description": "Redaction failed.", "content": { "*/*": { "schema": { "type": "string", "format": "byte" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/documents/{documentId}/status": { "get": { "tags": [ "Documents" ], "summary": "Get the status of an async redaction.", "operationId": "getStatus", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Unknown document id.", "content": { "application/json": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/explain": { "post": { "tags": [ "Explain" ], "summary": "Redact text and explain the redactions.", "description": "Redacts the plain-text request body using the given policy and context, returning the filtered text together with an explanation of every span that was redacted (type, position, and applied filter). Use the c query parameter to select a context and p to select a policy. When output signing is enabled in Admin Settings, the response includes an `X-Philter-Signature` header containing an ES256 JWT that binds the SHA-256 hash of the response body, the applied policy name and version, a per-response UUID, and an issue timestamp. Verify the signature using the public key from `GET /api/signing-key`.", "operationId": "explainTextPlainAsApplicationJson", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "c", "in": "query", "required": false, "schema": { "type": "string", "default": "" } }, { "name": "p", "in": "query", "required": false, "schema": { "type": "string", "default": "default" } }, { "name": "filename", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "text/plain": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "Filtered text with explanation. Includes `X-Philter-Signature` JWT header when output signing is enabled.", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "405": { "description": "Method Not Allowed", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Signing is enabled but the signing operation failed.", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/filter": { "post": { "tags": [ "Filter" ], "summary": "Filter a PDF and receive a redacted PDF in return.", "description": "Asynchronous by default. Returns 202 Accepted with `{\"documentId\":...}` and a `Location: /api/documents/{documentId}` header. Append `?async=false` to receive the redacted PDF bytes inline (200 OK).", "operationId": "filterTextPlainAsTextPlain", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "c", "in": "query", "required": false, "schema": { "type": "string", "default": "" } }, { "name": "p", "in": "query", "required": false, "schema": { "type": "string", "default": "default" } }, { "name": "filename", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "async", "in": "query", "required": false, "schema": { "type": "boolean", "default": true } } ], "requestBody": { "required": true, "content": { "application/pdf": { "schema": { "type": "string", "format": "byte" } }, "text/plain": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "Redacted PDF bytes (synchronous path).", "content": { "text/plain": { "schema": { "type": "string" } } } }, "202": { "description": "Job accepted; poll /api/documents/{documentId}/status and download from /api/documents/{documentId}.", "content": { "application/zip": { "schema": { "type": "string", "format": "byte" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "405": { "description": "Method Not Allowed", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Signing is enabled but the signing operation failed.", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/health": { "get": { "tags": [ "Status" ], "summary": "Get the status of Philter, including the supported redaction policy schema version.", "description": "Unauthenticated endpoint returning health, the application version, the supported redaction policy schema version, and the build's git commit. Both /api/status and /api/health return the same response.", "operationId": "status", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/holds": { "get": { "tags": [ "Legal Holds" ], "summary": "List legal holds.", "description": "Returns the caller's active legal holds, paged and ordered by set date descending. Admins may list another user's holds via the owner parameter.", "operationId": "listHolds", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "Array of legal holds, most recently set first.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LegalHoldResponse" } } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The owner does not exist, or the caller is not an admin.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LegalHoldResponse" } } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "post": { "tags": [ "Legal Holds" ], "summary": "Set a legal hold.", "description": "Creates a named hold that blocks deletion and purge of the specified evidence until the hold is released. The reference must be unique for the calling user. Two scope types are supported: 'document_chain' protects a specific document's ledger chain; 'user' protects all governance evidence owned by the user. Admins may place a hold on another user's evidence via the owner parameter.", "operationId": "setHold", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldRequest" } } } }, "responses": { "201": { "description": "The hold was set and is now active.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "400": { "description": "Required fields are missing or the scope type is invalid.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The owner does not exist, or the caller is not an admin.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "409": { "description": "A hold with the given reference already exists for this user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/holds/{reference}": { "delete": { "tags": [ "Legal Holds" ], "summary": "Release a legal hold.", "description": "Removes the hold with the given reference. Once released, evidence previously covered by this hold may become eligible for deletion or purge if no other holds remain. Releasing a hold is audited. Admins may release another user's hold via the owner parameter.", "operationId": "releaseHold", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "reference", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The hold was released." }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "No hold with the given reference exists for this user." }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Legal Holds" ], "summary": "Get a legal hold.", "description": "Returns the hold with the given reference. Admins may retrieve another user's hold via the owner parameter.", "operationId": "getHold", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "reference", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The hold details.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "No hold with the given reference exists for this user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/ledger": { "delete": { "tags": [ "Redaction Ledger" ], "summary": "Purge old ledger entries.", "description": "Deletes ledger entries older than the given number of days. The ledger is kept indefinitely by default, so this is how stale entries are pruned on demand. Requires an administrator and LEDGER_DELETION_ENABLED=true. Admins may purge another user's entries by passing that user's username as owner, which additionally requires ADMIN_CROSS_USER_ACCESS_ENABLED=true.", "operationId": "purge", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "older_than_days", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "403": { "description": "The caller is not an administrator, or ledger deletion is disabled for this deployment.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "423": { "description": "One or more active legal holds protect entries in this user's ledger. Release all holds before purging.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Redaction Ledger" ], "summary": "List redaction-ledger chains.", "description": "Returns the head (genesis entry) of each redacted document's ledger chain, most recent first. Pass q to filter by document id or filename. Admins may list another user's chains by passing that user's email as owner.", "operationId": "getLedger", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/ledger/{documentId}": { "delete": { "tags": [ "Redaction Ledger" ], "summary": "Delete a document's ledger chain.", "description": "Permanently deletes every ledger entry for the given document. Requires an administrator and LEDGER_DELETION_ENABLED=true. Admins may delete another user's chain by passing that user's username as owner, which additionally requires ADMIN_CROSS_USER_ACCESS_ENABLED=true.", "operationId": "deleteChain", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "403": { "description": "The caller is not an administrator, or ledger deletion is disabled for this deployment.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "423": { "description": "The chain is protected by an active legal hold. Release the hold before deleting.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Redaction Ledger" ], "summary": "Get a document's ledger chain.", "description": "Returns the full ordered chain of ledger entries for a document, along with whether the hash chain currently verifies.", "operationId": "getChain", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "type": "string" } } } }, "405": { "description": "Method Not Allowed", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/ledger/{documentId}/export": { "get": { "tags": [ "Redaction Ledger" ], "summary": "Export a document's ledger chain.", "description": "Returns the full ledger chain for a document as a portable JSON document that can be archived and later re-verified. The export contains the decrypted token and replacement values, so treat it as sensitive.", "operationId": "exportChain", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/ledger/{documentId}/valid": { "get": { "tags": [ "Redaction Ledger" ], "summary": "Verify a document's ledger chain.", "description": "Returns whether the hash chain for the document's ledger verifies (no entry has been altered and every link is intact).", "operationId": "validateChain", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "documentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "type": "string" } } } }, "405": { "description": "Method Not Allowed", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/lists": { "get": { "tags": [ "Custom Lists" ], "summary": "Get the names of existing lists.", "description": "Get the names of existing lists.", "operationId": "getLists", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/lists/{list}": { "delete": { "tags": [ "Custom Lists" ], "summary": "Delete a list.", "description": "Delete a list with the given name.", "operationId": "deleteList", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "list", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "204": { "description": "The list was deleted.", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The given list does not exist.", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "post": { "tags": [ "Custom Lists" ], "summary": "Create or update a list.", "description": "Create a list whose contents are the request body, or overwrite it if a list with the same name already exists.", "operationId": "createList", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "list", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "description", "in": "query", "required": false, "schema": { "type": "string", "default": "" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "responses": { "200": { "description": "An existing list with the same name was updated.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "201": { "description": "The list was created.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "The list name is empty, the list contains too many items (maximum 100), or an item is too long (maximum 50 characters).", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "412": { "description": "The maximum number of lists already exists.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/lists/{name}": { "get": { "tags": [ "Custom Lists" ], "summary": "Get the contents of a list.", "description": "Get the contents of a list with the provided name.", "operationId": "getLists_1", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GetListsResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "409": { "description": "A list with the given does not exist.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GetListsResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies": { "get": { "tags": [ "Policies" ], "summary": "Get the names of existing policies.", "description": "Returns the names of the caller's policies, paged. Admins may list another user's policies by passing that user's email as owner.", "operationId": "getPolicyNames", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "post": { "tags": [ "Policies" ], "summary": "Create or update a policy.", "description": "Saves the policy supplied in the request body under the given name, overwriting any existing policy of the same name. The policy is validated before it is stored. Admins may save into another user's account by passing that user's email as owner.", "operationId": "save", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "responses": { "201": { "description": "The policy was saved and is now active. A policy_activated audit event is recorded." }, "400": { "description": "The policy name is missing or the policy is invalid.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The owner does not exist, or the caller is not an admin." }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies/compile": { "post": { "tags": [ "Policies" ], "summary": "Compile a PhiSQL policy.", "description": "Compiles a policy authored in PhiSQL into the native Phileas policy format. The request body is PhiSQL source; the response carries the policy name and description and the compiled policy JSON, which can then be saved via POST /api/policies.", "operationId": "compile", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "text/plain": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "The policy compiled successfully.", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "The PhiSQL failed to parse/compile, or the compiled policy failed validation.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies/{policyName}": { "delete": { "tags": [ "Policies" ], "summary": "Delete a policy.", "description": "Deletes the policy with the given name. Admins may delete another user's policy by passing that user's email as owner.", "operationId": "delete", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "policyName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The policy was deleted." }, "400": { "description": "The policy name is missing.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found" }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "Policies" ], "summary": "Get a policy.", "description": "Returns the full policy with the given name. Admins may retrieve another user's policy by passing that user's email as owner.", "operationId": "get", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "policyName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "400": { "description": "The policy name is missing.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "A policy with the given name does not exist.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Policy" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies/{policyName}/diff": { "get": { "tags": [ "Policy Versions" ], "summary": "Diff two revisions of a policy.", "description": "Returns an RFC 6902 JSON Patch array describing what changed between the 'from' revision and the 'to' revision. If from and to are omitted, the two most recent retained revisions are compared. Object-level changes (adds, removes, replaces) are reported per field path; array values that differ are reported as a single replace at the array path. Admins may diff another user's policy via owner.", "operationId": "diff", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "policyName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "from", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "to", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Diff envelope containing the compared revision numbers and an RFC 6902 changes array.", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "The policy name is missing, fewer than two retained revisions exist for a default diff, or only one of from/to was supplied.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The policy or a requested revision does not exist.", "content": { "application/json": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies/{policyName}/rollback": { "post": { "tags": [ "Policy Versions" ], "summary": "Roll back a policy to a prior revision.", "description": "Restores the content of the specified revision as a new head revision, preserving the full history. The live policy is updated with the prior content and its revision counter is incremented. The rollback is audited. Admins may roll back another user's policy via the owner parameter.", "operationId": "rollback", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "policyName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "revision", "in": "query", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "201": { "description": "Rollback succeeded. Body contains the new revision number.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyRollbackResponse" } } } }, "400": { "description": "The policy name or target revision is missing.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The policy or the target revision does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyRollbackResponse" } } } }, "409": { "description": "Managed policies cannot be rolled back.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyRollbackResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies/{policyName}/versions": { "get": { "tags": [ "Policy Versions" ], "summary": "List retained versions of a policy.", "description": "Returns a summary of each retained snapshot for the named policy, ordered by revision descending (most recent first). Each entry carries the revision number, the timestamp the snapshot was captured, and its content hash. Admins may browse another user's history via the owner parameter.", "operationId": "listVersions", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "policyName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 0 } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "default": 25 } } ], "responses": { "200": { "description": "Array of version summaries, most recent first.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyVersionSummary" } } } } }, "400": { "description": "The policy name is missing.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The named policy does not exist, or a non-admin caller named another user as owner.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyVersionSummary" } } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/policies/{policyName}/versions/{revision}": { "get": { "tags": [ "Policy Versions" ], "summary": "Fetch a specific revision of a policy.", "description": "Returns the full policy JSON as it existed at the given revision. The response shape is identical to GET /api/policies/{policyName}. Admins may fetch another user's revision via the owner parameter.", "operationId": "getVersion", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "policyName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "revision", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Full policy JSON at the requested revision.", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "The policy name is missing.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "The Authorization header is absent or the API key is not recognized.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "The policy or the requested revision does not exist.", "content": { "application/json": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/redact-lists": { "get": { "tags": [ "Always/Never Redact Lists" ], "summary": "Get the always-redact and never-redact lists.", "description": "Returns the account's always-redact and never-redact lists. Both lists are always present; an account with no saved terms returns empty arrays. Admins may read another user's lists by passing that user's email as owner.", "operationId": "getRedactLists", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "post": { "tags": [ "Always/Never Redact Lists" ], "summary": "Replace the always-redact and never-redact lists.", "description": "Replaces both lists in full with the supplied contents - this is not a merge. Each field is the complete desired contents of that list; a list that is omitted or sent as an empty array is cleared. Terms are trimmed and blank entries are dropped. Each list may contain up to 1000 terms, and each term may be up to 100 characters. Admins may replace another user's lists by passing that user's email as owner.", "operationId": "replaceRedactLists", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "The lists were replaced.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "The request body is malformed, a list has too many terms, or a term is too long.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } }, "put": { "tags": [ "Always/Never Redact Lists" ], "summary": "Append to the always-redact and never-redact lists.", "description": "Appends the supplied terms to the existing lists rather than replacing them - use POST to replace. Each field's terms are added to the current contents of that list; a list that is omitted or sent as an empty array is left unchanged. Terms are trimmed, blank entries are dropped, and terms already present are not added again. The resulting list may contain up to 1000 terms, and each term may be up to 100 characters; an append that would exceed the limit is rejected. Admins may append to another user's lists by passing that user's email as owner.", "operationId": "appendRedactLists", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "The terms were appended.", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "400": { "description": "The request body is malformed, the resulting list has too many terms, or a term is too long.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Not Found", "content": { "*/*": { "schema": { "$ref": "#/components/schemas/GenericResponse" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/reidentify": { "post": { "tags": [ "Re-identification" ], "summary": "Re-identify redacted values.", "description": "Reverses one or more values that were redacted via the CRYPTO_REPLACE or FPE_ENCRYPT_REPLACE strategy. The caller must supply a stated reason, which is recorded in the audit log alongside the actor, timestamp, and count of reversals. A user may re-identify their own values; an admin may re-identify any user's values by supplying that user's email via the owner parameter. CRYPTO_REPLACE requires policyName so the key can be resolved from the stored policy. FPE_ENCRYPT_REPLACE uses the user's per-account FPE key; if the policy specified a custom FPE key, also pass policyName so that key is used instead.", "operationId": "reidentify", "parameters": [ { "name": "Authorization", "in": "header", "required": true, "schema": { "type": "string" } }, { "name": "owner", "in": "query", "required": false, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReidentifyRequest" } } } }, "responses": { "200": { "description": "Request processed; inspect each result for per-value errors.", "content": { "*/*": { "schema": { "type": "string" } } } }, "400": { "description": "Missing or invalid request fields.", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Missing or invalid API key.", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "Named policy not found, or owner not found.", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/signing-key": { "get": { "tags": [ "Signing" ], "summary": "Get the public signing key.", "description": "Returns the operator's ES256 (ECDSA P-256) public signing key in PEM, JWK, and fingerprint form. Use the public key to verify the `X-Philter-Signature` JWT header returned on successful `POST /api/filter` and `POST /api/explain` responses when output signing is enabled. This endpoint does not require authentication.", "operationId": "getSigningKey", "responses": { "200": { "description": "Public signing key details.", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/signing-key/{keyId}": { "get": { "tags": [ "Signing" ], "summary": "Get a specific public signing key.", "description": "Returns a retained public signing key by its id, in PEM form. A key that has been superseded by a regeneration is kept, because redaction-ledger entries signed with it must remain verifiable. Ledger entries and exports name the key that signed them in their signingKeyId field. This endpoint does not require authentication.", "operationId": "getSigningKeyById", "parameters": [ { "name": "keyId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The public key with the given id.", "content": { "application/json": { "schema": { "type": "string" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "404": { "description": "No key with that id is retained.", "content": { "application/json": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } }, "/api/status": { "get": { "tags": [ "Status" ], "summary": "Get the status of Philter, including the supported redaction policy schema version.", "description": "Unauthenticated endpoint returning health, the application version, the supported redaction policy schema version, and the build's git commit. Both /api/status and /api/health return the same response.", "operationId": "status_1", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "400": { "description": "Bad Request", "content": { "*/*": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized", "content": { "*/*": { "schema": { "type": "string" } } } }, "413": { "description": "Content Too Large", "content": { "*/*": { "schema": { "type": "string" } } } }, "415": { "description": "Unsupported Media Type", "content": { "*/*": { "schema": { "type": "string" } } } }, "500": { "description": "Internal Server Error", "content": { "*/*": { "schema": { "type": "string" } } } }, "503": { "description": "Service Unavailable", "content": { "*/*": { "schema": { "type": "string" } } } } } } } }, "components": { "schemas": { "Age": { "type": "object", "properties": { "ageFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/AgeFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "AgeFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Analysis": { "type": "object", "properties": { "identification": { "type": "boolean" } } }, "AnonymizationService": {}, "BankRoutingNumber": { "type": "object", "properties": { "bankRoutingNumberFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/BankRoutingNumberFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "BankRoutingNumberFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "BitcoinAddress": { "type": "object", "properties": { "bitcoinFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/BitcoinAddressFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "BitcoinAddressFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "BoundingBox": { "type": "object", "properties": { "color": { "type": "string" }, "enabled": { "type": "boolean" }, "h": { "type": "number", "format": "float" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "page": { "type": "integer", "format": "int32" }, "priority": { "type": "integer", "format": "int32" }, "w": { "type": "number", "format": "float" }, "windowSize": { "type": "integer", "format": "int32" }, "x": { "type": "number", "format": "float" }, "y": { "type": "number", "format": "float" } } }, "City": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "cityFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/CityFilterStrategy" } }, "enabled": { "type": "boolean" }, "fuzzy": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "sensitivityLevel": { "type": "string", "enum": [ "auto", "off", "low", "medium", "high" ] }, "windowSize": { "type": "integer", "format": "int32" } } }, "CityFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Config": { "type": "object", "properties": { "analysis": { "$ref": "#/components/schemas/Analysis" }, "pdf": { "$ref": "#/components/schemas/Pdf" }, "postFilters": { "$ref": "#/components/schemas/PostFilters" }, "splitting": { "$ref": "#/components/schemas/Splitting" } } }, "County": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "countyFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/CountyFilterStrategy" } }, "enabled": { "type": "boolean" }, "fuzzy": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "sensitivityLevel": { "type": "string", "enum": [ "auto", "off", "low", "medium", "high" ] }, "windowSize": { "type": "integer", "format": "int32" } } }, "CountyFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "CreditCard": { "type": "object", "properties": { "creditCardFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/CreditCardFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignoreWhenInUnixTimestamp": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "onlyValidCreditCardNumbers": { "type": "boolean" }, "onlyWordBoundaries": { "type": "boolean" }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "CreditCardFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Crypto": { "type": "object", "properties": { "iv": { "type": "string" }, "key": { "type": "string" } } }, "Currency": { "type": "object", "properties": { "currencyFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/CurrencyFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "CurrencyFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "CustomDictionary": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "classification": { "type": "string" }, "customDictionaryFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/CustomDictionaryFilterStrategy" } }, "enabled": { "type": "boolean" }, "files": { "type": "array", "items": { "type": "string" } }, "fuzzy": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "terms": { "type": "array", "items": { "type": "string" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "CustomDictionaryFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Date": { "type": "object", "properties": { "dateFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/DateFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "onlyValidDates": { "type": "boolean" }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "DateFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "futureDates": { "type": "boolean" }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "shiftDays": { "type": "integer", "format": "int32" }, "shiftMonths": { "type": "integer", "format": "int32" }, "shiftRandom": { "type": "boolean" }, "shiftYears": { "type": "integer", "format": "int32" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "DriversLicense": { "type": "object", "properties": { "driversLicenseFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/DriversLicenseFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "DriversLicenseFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "EmailAddress": { "type": "object", "properties": { "emailAddressFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/EmailAddressFilterStrategy" } }, "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "onlyStrictMatches": { "type": "boolean" }, "onlyValidTLDs": { "type": "boolean" }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "EmailAddressFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "FPE": { "type": "object", "properties": { "key": { "type": "string" }, "tweak": { "type": "string" } } }, "FirstName": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "enabled": { "type": "boolean" }, "firstNameFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/FirstNameFilterStrategy" } }, "fuzzy": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "sensitivityLevel": { "type": "string", "enum": [ "auto", "off", "low", "medium", "high" ] }, "windowSize": { "type": "integer", "format": "int32" } } }, "FirstNameFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "GenericResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "GetListsResponse": { "type": "object", "properties": { "lists": { "type": "array", "items": { "type": "string" } } } }, "Graphical": { "type": "object", "properties": { "boundingBoxes": { "type": "array", "items": { "$ref": "#/components/schemas/BoundingBox" } } } }, "Hospital": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "enabled": { "type": "boolean" }, "fuzzy": { "type": "boolean" }, "hospitalFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/HospitalFilterStrategy" } }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "sensitivityLevel": { "type": "string", "enum": [ "auto", "off", "low", "medium", "high" ] }, "windowSize": { "type": "integer", "format": "int32" } } }, "HospitalFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "IbanCode": { "type": "object", "properties": { "allowSpaces": { "type": "boolean" }, "enabled": { "type": "boolean" }, "ibanCodeFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/IbanCodeFilterStrategy" } }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "onlyValidIBANCodes": { "type": "boolean" }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "IbanCodeFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Identifier": { "type": "object", "properties": { "caseSensitive": { "type": "boolean" }, "classification": { "type": "string" }, "enabled": { "type": "boolean" }, "groupNumber": { "type": "integer", "format": "int32" }, "identifierFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/IdentifierFilterStrategy" } }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "pattern": { "type": "string" }, "priority": { "type": "integer", "format": "int32" }, "validator": { "$ref": "#/components/schemas/Validator" }, "windowSize": { "type": "integer", "format": "int32" } } }, "IdentifierFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Identifiers": { "type": "object", "properties": { "url": { "$ref": "#/components/schemas/Url" }, "age": { "$ref": "#/components/schemas/Age" }, "bankRoutingNumber": { "$ref": "#/components/schemas/BankRoutingNumber" }, "bitcoinAddress": { "$ref": "#/components/schemas/BitcoinAddress" }, "city": { "$ref": "#/components/schemas/City" }, "county": { "$ref": "#/components/schemas/County" }, "creditCard": { "$ref": "#/components/schemas/CreditCard" }, "currency": { "$ref": "#/components/schemas/Currency" }, "customDictionaries": { "type": "array", "items": { "$ref": "#/components/schemas/CustomDictionary" } }, "date": { "$ref": "#/components/schemas/Date" }, "driversLicense": { "$ref": "#/components/schemas/DriversLicense" }, "emailAddress": { "$ref": "#/components/schemas/EmailAddress" }, "firstName": { "$ref": "#/components/schemas/FirstName" }, "hospital": { "$ref": "#/components/schemas/Hospital" }, "ibanCode": { "$ref": "#/components/schemas/IbanCode" }, "identifiers": { "type": "array", "items": { "$ref": "#/components/schemas/Identifier" } }, "ipAddress": { "$ref": "#/components/schemas/IpAddress" }, "macAddress": { "$ref": "#/components/schemas/MacAddress" }, "medicalCondition": { "$ref": "#/components/schemas/MedicalCondition" }, "passportNumber": { "$ref": "#/components/schemas/PassportNumber" }, "person": { "deprecated": true, "$ref": "#/components/schemas/PhEye" }, "phEyes": { "type": "array", "items": { "$ref": "#/components/schemas/PhEye" } }, "phoneNumber": { "$ref": "#/components/schemas/PhoneNumber" }, "phoneNumberExtension": { "$ref": "#/components/schemas/PhoneNumberExtension" }, "physicianName": { "$ref": "#/components/schemas/PhysicianName" }, "sections": { "type": "array", "items": { "$ref": "#/components/schemas/Section" } }, "ssn": { "$ref": "#/components/schemas/Ssn" }, "state": { "$ref": "#/components/schemas/State" }, "stateAbbreviation": { "$ref": "#/components/schemas/StateAbbreviation" }, "streetAddress": { "$ref": "#/components/schemas/StreetAddress" }, "surname": { "$ref": "#/components/schemas/Surname" }, "trackingNumber": { "$ref": "#/components/schemas/TrackingNumber" }, "vin": { "$ref": "#/components/schemas/Vin" }, "zipCode": { "$ref": "#/components/schemas/ZipCode" } } }, "Ignored": { "type": "object", "properties": { "name": { "type": "string" }, "caseSensitive": { "type": "boolean" }, "files": { "type": "array", "items": { "type": "string" } }, "terms": { "type": "array", "items": { "type": "string" } } } }, "IgnoredPattern": { "type": "object", "properties": { "name": { "type": "string" }, "pattern": { "type": "string" } } }, "IpAddress": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "ipAddressFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/IpAddressFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "IpAddressFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "LegalHoldRequest": { "type": "object", "properties": { "reason": { "type": "string" }, "reference": { "type": "string" }, "scopeType": { "type": "string" }, "scopeValue": { "type": "string" } } }, "LegalHoldResponse": { "type": "object", "properties": { "reason": { "type": "string" }, "reference": { "type": "string" }, "scopeType": { "type": "string" }, "scopeValue": { "type": "string" }, "setAt": { "type": "string", "format": "date-time" } } }, "MacAddress": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "macAddressFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/MacAddressFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "MacAddressFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "MedicalCondition": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "medicalConditionFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/MedicalConditionFilterStrategy" } }, "phEyeConfiguration": { "$ref": "#/components/schemas/PhEyeConfiguration" }, "priority": { "type": "integer", "format": "int32" }, "removePunctuation": { "type": "boolean" }, "thresholds": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "MedicalConditionFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "PassportNumber": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "passportNumberFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/PassportNumberFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "PassportNumberFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Pdf": { "type": "object", "properties": { "compressionQuality": { "type": "number", "format": "float" }, "dpi": { "type": "integer", "format": "int32" }, "preserveUnredactedPages": { "type": "boolean" }, "redactionColor": { "type": "string" }, "replacementFont": { "type": "string" }, "replacementFontColor": { "type": "string" }, "replacementMaxFontSize": { "type": "number", "format": "float" }, "scale": { "type": "number", "format": "float" }, "showReplacement": { "type": "boolean" } } }, "PhEye": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "phEyeConfiguration": { "$ref": "#/components/schemas/PhEyeConfiguration" }, "phEyeFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/PhEyeFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "removePunctuation": { "type": "boolean" }, "thresholds": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "PhEyeConfiguration": { "type": "object", "properties": { "bearerToken": { "type": "string" }, "endpoint": { "type": "string" }, "labels": { "type": "array", "items": { "type": "string" } }, "maxIdleConnections": { "type": "integer", "format": "int32" }, "modelPath": { "type": "string" }, "timeout": { "type": "integer", "format": "int32" } } }, "PhEyeFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "PhoneNumber": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "phoneNumberFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "PhoneNumberExtension": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "phoneNumberExtensionFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberExtensionFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "PhoneNumberExtensionFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "PhoneNumberFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "PhysicianName": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "physicianNameFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/PhysicianNameFilterStrategy" } }, "priority": { "type": "integer", "format": "int32" }, "windowSize": { "type": "integer", "format": "int32" } } }, "PhysicianNameFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Policy": { "type": "object", "properties": { "cacheKey": { "type": "string" }, "config": { "$ref": "#/components/schemas/Config" }, "crypto": { "$ref": "#/components/schemas/Crypto" }, "fpe": { "$ref": "#/components/schemas/FPE" }, "graphical": { "$ref": "#/components/schemas/Graphical" }, "identifiers": { "$ref": "#/components/schemas/Identifiers" }, "ignored": { "type": "array", "items": { "$ref": "#/components/schemas/Ignored" } }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } } } }, "PolicyRollbackResponse": { "type": "object", "properties": { "revision": { "type": "integer", "format": "int32" } } }, "PolicyVersionSummary": { "type": "object", "properties": { "capturedTimestamp": { "type": "string", "format": "date-time" }, "contentHash": { "type": "string" }, "revision": { "type": "integer", "format": "int32" } } }, "PostFilters": { "type": "object", "properties": { "removeTrailingNewLines": { "type": "boolean" }, "removeTrailingPeriods": { "type": "boolean" }, "removeTrailingSpaces": { "type": "boolean" } } }, "ReidentifyRequest": { "type": "object", "properties": { "policyName": { "type": "string" }, "reason": { "type": "string" }, "strategy": { "type": "string" }, "values": { "type": "array", "items": { "type": "string" } } } }, "Section": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "endPattern": { "type": "string" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sectionFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/SectionFilterStrategy" } }, "startPattern": { "type": "string" }, "windowSize": { "type": "integer", "format": "int32" } } }, "SectionFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Splitting": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "method": { "type": "string" }, "threshold": { "type": "integer", "format": "int32" } } }, "Ssn": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "ssnFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/SsnFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "SsnFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "State": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "enabled": { "type": "boolean" }, "fuzzy": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "sensitivityLevel": { "type": "string", "enum": [ "auto", "off", "low", "medium", "high" ] }, "stateFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/StateFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "StateAbbreviation": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "stateAbbreviationsFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/StateAbbreviationFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "StateAbbreviationFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "StateFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "StatusResponse": { "type": "object", "properties": { "applicationVersion": { "type": "string" }, "gitCommit": { "type": "string" }, "redactionPolicySchemaVersion": { "type": "string" }, "status": { "type": "string" } } }, "StreetAddress": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "streetAddressFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/StreetAddressFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "StreetAddressFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Surname": { "type": "object", "properties": { "capitalized": { "type": "boolean" }, "enabled": { "type": "boolean" }, "fuzzy": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "sensitivity": { "type": "string" }, "sensitivityLevel": { "type": "string", "enum": [ "auto", "off", "low", "medium", "high" ] }, "surnameFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/SurnameFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "SurnameFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "TrackingNumber": { "type": "object", "properties": { "allowSpaces": { "type": "boolean" }, "enabled": { "type": "boolean" }, "fedex": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "trackingNumberFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/TrackingNumberFilterStrategy" } }, "ups": { "type": "boolean" }, "usps": { "type": "boolean" }, "windowSize": { "type": "integer", "format": "int32" } } }, "TrackingNumberFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Url": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "requireHttpWwwPrefix": { "type": "boolean" }, "urlFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/UrlFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "UrlFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "Validator": { "type": "object", "properties": { "name": { "type": "string" }, "params": { "type": "object", "additionalProperties": {} } } }, "Vin": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "vinFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/VinFilterStrategy" } }, "windowSize": { "type": "integer", "format": "int32" } } }, "VinFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } }, "ZipCode": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "ignored": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredFiles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignoredPatterns": { "type": "array", "items": { "$ref": "#/components/schemas/IgnoredPattern" } }, "priority": { "type": "integer", "format": "int32" }, "requireDelimiter": { "type": "boolean" }, "validate": { "type": "boolean" }, "windowSize": { "type": "integer", "format": "int32" }, "zipCodeFilterStrategies": { "type": "array", "items": { "$ref": "#/components/schemas/ZipCodeFilterStrategy" } } } }, "ZipCodeFilterStrategy": { "type": "object", "properties": { "anonymizationCandidates": { "type": "array", "items": { "type": "string" } }, "anonymizationMethod": { "type": "string", "enum": [ "realistic", "from_list", "uuid" ] }, "anonymizationService": { "$ref": "#/components/schemas/AnonymizationService" }, "condition": { "type": "string" }, "conditions": { "type": "string", "writeOnly": true }, "filterType": { "type": "string", "enum": [ "age", "bank-routing-number", "bitcoin-address", "currency", "credit-card", "drivers-license-number", "city", "state", "county", "date", "email-address", "first-name", "hospital", "hospital-abbreviation", "iban-code", "id", "ip-address", "mac-address", "passport-number", "pheye", "phone-number", "phone-number-extension", "physician-name", "section", "ssn", "state-abbreviation", "street-address", "surname", "tracking-number", "url", "vin", "zip-code", "custom-dictionary", "person", "medical-condition", "other" ] }, "id": { "type": "string" }, "maskCharacter": { "type": "string" }, "maskLength": { "type": "string" }, "redactionFormat": { "type": "string" }, "replacementScope": { "type": "string" }, "salt": { "type": "boolean" }, "staticReplacement": { "type": "string" }, "strategy": { "type": "string" }, "truncateCharacter": { "type": "string" }, "truncateDigits": { "type": "integer", "format": "int32", "writeOnly": true }, "truncateDirection": { "type": "string" }, "truncateLeaveCharacters": { "type": "integer", "format": "int32" } } } } }, "tags": [ { "description": "Operations for setting, listing, retrieving, and releasing legal holds. An active hold blocks all deletion and purge of the evidence it covers until the hold is released. Every hold lifecycle event is audited.", "name": "Legal Holds" }, { "description": "Operations for browsing policy version history, diffing revisions, and rolling back to a prior revision.", "name": "Policy Versions" }, { "description": "Operations for retrieving asynchronously redacted documents.", "name": "Documents" }, { "description": "Operations for creating and managing custom lists.", "name": "Custom Lists" }, { "description": "Redact text and PDF documents.", "name": "Filter" }, { "description": "Operations for managing an account's always-redact and never-redact term lists.", "name": "Always/Never Redact Lists" }, { "description": "Governed, audited reversal of cryptographically-redacted values.", "name": "Re-identification" }, { "description": "Operations for creating, retrieving, deleting, and compiling redaction policies.", "name": "Policies" }, { "description": "Redact text and return a detailed explanation of what was redacted and why.", "name": "Explain" }, { "description": "Operations for viewing, exporting, verifying, and deleting redaction-ledger chains.", "name": "Redaction Ledger" }, { "description": "Operations for creating and managing contexts.", "name": "Contexts" }, { "description": "Unauthenticated health and status, including the supported redaction policy schema version.", "name": "Status" }, { "description": "Retrieve the public signing key used to verify Philter output signatures.", "name": "Signing" } ] }