{
    "openapi": "3.1.0",
    "info": {
        "title": "API Reference",
        "description": "Private AI API Reference",
        "termsOfService": "https://www.private-ai.com/terms-of-use/",
        "contact": {
            "url": "https://www.private-ai.com/contact/",
            "email": "info@private-ai.com"
        },
        "version": "3.8.1"
    },
    "servers": [
        {
            "url": "https://api.private-ai.com/deid",
            "description": "Private AI Community API"
        },
        {
            "url": "https://api.private-ai.com/cloud",
            "description": "Private AI Cloud API"
        },
        {
            "url": "http://localhost:8080",
            "description": "Local Server"
        }
    ],
    "paths": {
        "/metrics": {
            "get": {
                "summary": "Metrics",
                "description": "This endpoint serves Prometheus metrics via a HTTP-based interface that provides access to metrics data in a format suitable for scraping by Prometheus servers. The endpoint provides real-time insights into how the system is functioning. The endpoint exposed the metrics in a time-series format, allowing you to track various types of data, including system resources usage, application performance, and other custom metrics.\n\nCurrently following metrics are available:\n* **cpu_usage_percent** (_CPU usage in percentage._)\n* **cpu_memory_used_bytes** (_Used CPU memory, in bytes._)\n* **cpu_memory_total_bytes** (_Total CPU memory, in bytes._)\n* **cpu_load_percent** (_CPU load, in percentage. Calculated for last 1m, 5m & 15m._)\n* **http_request_size_bytes** (_HTTP request sizes in bytes grouped by method, status and handler._)\n* **http_requests_total** (_Total number of requests grouped by method, status and handler._)\n* **http_request_duration_seconds** (_The HTTP request latencies in seconds._)",
                "operationId": "metrics_metrics_get",
                "x-hideTryItPanel": true,
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "text/plain": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "# HELP cpu_usage_percent Multiprocess metric\n# TYPE cpu_usage_percent gauge\ncpu_usage_percent 53.9\n# HELP cpu_memory_used_bytes Multiprocess metric\n# TYPE cpu_memory_used_bytes gauge\ncpu_memory_used_bytes 2.260492288e+010\n# HELP cpu_memory_total_bytes Multiprocess metric\n# TYPE cpu_memory_total_bytes gauge\ncpu_memory_total_bytes 6.7373068288e+010\n# HELP cpu_load_percent Multiprocess metric\n# TYPE cpu_load_percent gauge\ncpu_load_percent{duration=\"1m\"} 1.1666666666666667cpu_load_percent{duration=\"5m\"} 0.8333333333333334cpu_load_percent{duration=\"15m\"} 0.9583333333333335# HELP http_request_size_bytes Multiprocess metric\n# TYPE http_request_size_bytes summary\nhttp_request_size_bytes_count{handler=\"/v3/process/text\",method=\"GET\",status=\"2xx\"} 3.0\n# HELP http_requests_total Multiprocess metric\n# TYPE http_requests_total counter\nhttp_requests_total{handler=\"/v3/process/text\",method=\"POST\",status=\"2xx\"} 3.0\n# HELP http_request_duration_seconds Multiprocess metric\n# TYPE http_request_duration_seconds histogram\nhttp_request_duration_seconds_sum{handler=\"/v3/process/text\",method=\"POST\",status=\"2xx\"} 0.8316442219074816\nhttp_request_duration_seconds_bucket{handler=\"/v3/process/text\",le=\"0.1\",method=\"POST\",status=\"2xx\"} 0.0\nhttp_request_duration_seconds_bucket{handler=\"/v3/process/text\",le=\"0.25\",method=\"POST\",status=\"2xx\"} 2.0\nhttp_request_duration_seconds_bucket{handler=\"/v3/process/text\",le=\"0.5\",method=\"POST\",status=\"2xx\"} 3.0\nhttp_request_duration_seconds_bucket{handler=\"/v3/process/text\",le=\"1.0\",method=\"POST\",status=\"2xx\"} 3.0\nhttp_request_duration_seconds_count{handler=\"/v3/process/text\",method=\"POST\",status=\"2xx\"} 3.0"
                            }
                        }
                    }
                }
            }
        },
        "/": {
            "get": {
                "summary": "Get Version",
                "description": "Return the version of the container application code",
                "operationId": "get_version__get",
                "x-hideTryItPanel": true,
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VersionResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/healthz": {
            "get": {
                "summary": "Healthz",
                "description": "Check the health of the container.",
                "operationId": "healthz_healthz_get",
                "x-hideTryItPanel": true,
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/HealthzResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/diagnostics": {
            "get": {
                "summary": "Diagnostics",
                "description": "Get diagnostic information for the container.",
                "operationId": "diagnostics_diagnostics_get",
                "x-hideTryItPanel": true,
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DiagnosticResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v3/process/text": {
            "post": {
                "summary": "Process Text",
                "description": "Detect entities such as PII, PHI or PCI in the provided text strings using Private AI's entity detection engine. After entity detection, any entities found can be redacted, masked or replaced with AI-generated synthetic entities.",
                "operationId": "process_text_v3_process_text_post",
                "parameters": [
                    {
                        "name": "x-api-key",
                        "in": "header",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "",
                            "title": "X-Api-Key"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ProcessTextRequest"
                            },
                            "examples": {
                                "simple_deidentification": {
                                    "summary": "Simple De-Identification",
                                    "value": {
                                        "text": [
                                            "Hello John and Jane"
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                                        }
                                    }
                                },
                                "synthetic_deidentification": {
                                    "summary": "Synthetic PII",
                                    "value": {
                                        "text": [
                                            "Hello, my name is May. I am the aunt of Pieter Parker. We live in Toronto, Canada."
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "SYNTHETIC",
                                            "synthetic_entity_accuracy": "standard",
                                            "preserve_relationships": true
                                        }
                                    }
                                },
                                "enabled_entity_types": {
                                    "summary": "Enabled Entity Types",
                                    "value": {
                                        "text": [
                                            "Hello, My name is Mike and I am 24 years old"
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "entity_types": [
                                                {
                                                    "type": "ENABLE",
                                                    "value": [
                                                        "NAME"
                                                    ]
                                                }
                                            ],
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                                        }
                                    }
                                },
                                "allow_list": {
                                    "summary": "Allow List",
                                    "value": {
                                        "text": [
                                            "Hello Xavier, I broke my right leg on the 31st. Id of PAI is PAI_ID-44444 yeah, my birthday, My id is 78549 and I'm waiting for my x-ray results. dr. zhang, mercer health centre."
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "filter": [
                                                {
                                                    "type": "ALLOW",
                                                    "pattern": "PAI_ID-\\d{5}"
                                                }
                                            ],
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                                        }
                                    }
                                },
                                "block_list": {
                                    "summary": "Block List",
                                    "value": {
                                        "text": [
                                            "Hello Xavier, I broke my right leg on the 31st. Id of PAI is PAI_ID-44444 yeah, my birthday, My id is 78549 and I'm waiting for my x-ray results. dr. zhang, mercer health centre."
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "filter": [
                                                {
                                                    "type": "BLOCK",
                                                    "entity_type": "MY_5_DIGIT_PAI_ID",
                                                    "pattern": "PAI_ID-\\d{5}"
                                                }
                                            ],
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                                        }
                                    }
                                },
                                "link_batch": {
                                    "summary": "Link Batch",
                                    "value": {
                                        "text": [
                                            "Hi, my name is Penelope, could you tell me your phone number please?",
                                            "Sure, x234",
                                            "and your DOB please?",
                                            "fourth of Feb nineteen 86"
                                        ],
                                        "link_batch": true,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                                        }
                                    }
                                },
                                "masked_pii": {
                                    "summary": "Masked PII",
                                    "value": {
                                        "text": [
                                            "Hello John and Jane"
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MASK",
                                            "mask_character": "#"
                                        }
                                    }
                                },
                                "multiple_input": {
                                    "summary": "Multiple Input",
                                    "value": {
                                        "text": [
                                            "Hello John and Jane",
                                            "Mark is 42 years old"
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                                        }
                                    }
                                },
                                "non_unique_pii_markers": {
                                    "summary": "Non Unique PII Markers",
                                    "value": {
                                        "text": [
                                            "Hello John and Jane"
                                        ],
                                        "link_batch": false,
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "processed_text": {
                                            "type": "MARKER",
                                            "pattern": "[BEST_ENTITY_TYPE]"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProcessTextResponse-Input"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserErrorResponseModel"
                                }
                            }
                        },
                        "description": "Client Error"
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserErrorResponseModel"
                                }
                            }
                        },
                        "description": "Bad Request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InternalErrorResponseModel"
                                }
                            }
                        },
                        "description": "Internal Server Error"
                    }
                }
            }
        },
        "/v3/process/text/reidentify": {
            "post": {
                "summary": "Reidentify Text",
                "description": "This route is intended to improve integrations with LLMs such as ChatGPT. Entities that are removed prior to sending to the LLM can be re-injected into the response from the LLM to improve user experience.",
                "operationId": "reidentify_text_v3_process_text_reidentify_post",
                "parameters": [
                    {
                        "name": "x-api-key",
                        "in": "header",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "",
                            "title": "X-Api-Key"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ReIdentifyTextRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    },
                                    "title": "Response 200 Reidentify Text V3 Process Text Reidentify Post"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserErrorResponseModel"
                                }
                            }
                        },
                        "description": "Client Error"
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserErrorResponseModel"
                                }
                            }
                        },
                        "description": "Bad Request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InternalErrorResponseModel"
                                }
                            }
                        },
                        "description": "Internal Server Error"
                    }
                }
            }
        },
        "/v3/process/files/uri": {
            "post": {
                "summary": "Process Files Uri",
                "description": "Detect entities such as PII, PHI or PCI in the file located at the provided URI using Private AI's entity detection engine. After entity detection, a copy of the file with all entities removed is created and placed in the folder specified by `PAI_OUTPUT_FILE_DIR` on the local host.\n\nThis route is similar to `/v3/process/files/base64`, but relies on URIs instead of base64-encoded strings. As this route avoids the overhead of base64 encoding, it is more suitable for processing large files and large volumes of data.\n\nThis route supports the following content types: application/dicom, application/json, application/msword, application/pdf, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/xml, audio/m4a, audio/mp3, audio/mp4, audio/mp4a-latm, audio/mpeg, audio/wav, audio/webm, audio/x-wav, image/bmp, image/jpeg, image/jpg, image/png, image/tif, image/tiff, image/x-ms-bmp, message/rfc822, text/csv, text/plain",
                "operationId": "process_files_uri_v3_process_files_uri_post",
                "parameters": [
                    {
                        "name": "x-api-key",
                        "in": "header",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "",
                            "title": "X-Api-Key"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ProcessFileRequest"
                            },
                            "examples": {
                                "process_files": {
                                    "summary": "Process File with uri payload",
                                    "value": {
                                        "uri": "/home/azureuser/example-image.jpeg",
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProcessFileResponse"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/HTTPValidationError"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v3/process/files/base64": {
            "post": {
                "summary": "Process Files Base64",
                "description": "Detect entities such as PII, PHI or PCI in a base64-encoded file using Private AI's entity detection engine. After entity detection, a copy of the file with all entities removed is created and returned.\n\nThis route is similar to `/v3/process/files/uri`, but passes the file in the POST request itself. This route allows for simple setup and testing, as no folders or volumes need to be mounted to the container.\n\nThis route supports the following content types: application/dicom, application/json, application/msword, application/pdf, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/xml, audio/m4a, audio/mp3, audio/mp4, audio/mp4a-latm, audio/mpeg, audio/wav, audio/webm, audio/x-wav, image/bmp, image/jpeg, image/jpg, image/png, image/tif, image/tiff, image/x-ms-bmp, message/rfc822, text/csv, text/plain",
                "operationId": "process_files_base64_v3_process_files_base64_post",
                "parameters": [
                    {
                        "name": "x-api-key",
                        "in": "header",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "",
                            "title": "X-Api-Key"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ProcessFileRequestBase64"
                            },
                            "examples": {
                                "process_file": {
                                    "summary": "Process File with base64-encoded payload",
                                    "value": {
                                        "file": {
                                            "data": "JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoc2FtcGxlKQovUHJvZHVj...",
                                            "content_type": "application/pdf or image/jpeg"
                                        },
                                        "entity_detection": {
                                            "accuracy": "high",
                                            "return_entity": true
                                        },
                                        "pdf_options": {
                                            "density": 150,
                                            "max_resolution": 2000
                                        },
                                        "audio_options": {
                                            "bleep_start_padding": 0,
                                            "bleep_end_padding": 0
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProcessFileResponseBase64"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/HTTPValidationError"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v3/bleep": {
            "post": {
                "summary": "Bleep",
                "description": "Bleep an audio given the timestamps to bleep.",
                "operationId": "bleep_v3_bleep_post",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BleepRequest"
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BleepResponse"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/HTTPValidationError"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "AccuracyMode": {
                "type": "string",
                "enum": [
                    "standard",
                    "standard_high",
                    "standard_high_multilingual",
                    "standard_high_automatic",
                    "high",
                    "high_multilingual",
                    "high_automatic"
                ],
                "title": "AccuracyMode",
                "description": "Selects the model used to identify PII in the input text. By default, the \"high_automatic\" accuracy model is used. This default automatically chooses either the high or high_multilingual model. While the models used by the Private AI solution are highly optimized (~25X faster than a reference transformer implementation), in high-throughput cases it is possible to trade accuracy for speed by selecting either the \"standard\" or \"standard_high\" accuracy modes. Multilingual support can be enabled by using one of the multilingual models, namely \"standard_high_multilingual\" (GPU container only) and \"standard_high_multilingual\". The multilingual models process all supported languages including English, without the need to specify language. It is advisable to use the English-only models where possible, as they perform slightly better on English. Automatic Models can determine which model to use (English or Multilingual) depending on the languages detected, provided Multilingual models are available."
            },
            "AllowFilter": {
                "properties": {
                    "type": {
                        "const": "ALLOW",
                        "title": "Type",
                        "description": "Entities with text matching the provided regex pattern will be discarded. It is also possible to set this option via environment variable. See [Environment Variables](https://docs.private-ai.com/environment-variables).",
                        "default": "ALLOW"
                    },
                    "pattern": {
                        "type": "string",
                        "title": "Pattern",
                        "description": "A python regex pattern (e.g. `r\"^ID-[\\d]{4}$\"`). This pattern will be used to match the entity text. If it matches zero or more characters at the **beginning of the entity text**, the entity will be ignored. Be sure to use the end of string character `$` if you want to only allow entities when the entirety of the text matches. It is also important to note that regex patterns may require escaping when used in JSON objects."
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "pattern"
                ],
                "title": "AllowFilter"
            },
            "AllowTextFilter": {
                "properties": {
                    "type": {
                        "const": "ALLOW_TEXT",
                        "title": "Type",
                        "description": "Input text matching the provided regex pattern will not be redacted. It is currently not possible to set this option via environment variable.",
                        "default": "ALLOW_TEXT"
                    },
                    "pattern": {
                        "type": "string",
                        "title": "Pattern",
                        "description": "A python regex pattern (e.g. `r\"^ID-[\\d]{4}$\"`). This pattern will be used to match the input text. Entities detected **inside the matched text** will be ignored. Note that capturing groups can be used in the regex pattern. If present, only the text matching a capturing group will be left unredacted. It is also important to note that regex patterns may require escaping when used in JSON objects."
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "pattern"
                ],
                "title": "AllowTextFilter"
            },
            "AudioLocation": {
                "properties": {
                    "stt_time": {
                        "type": "number",
                        "title": "Stt Time",
                        "description": "The start timestamp of the entity, in seconds"
                    },
                    "end_time": {
                        "type": "number",
                        "title": "End Time",
                        "description": "The end timestamp of the entity, in seconds"
                    }
                },
                "type": "object",
                "required": [
                    "stt_time",
                    "end_time"
                ],
                "title": "AudioLocation",
                "description": "Timestamp of the entity in an audio file such as `.wav`."
            },
            "AudioOptions": {
                "properties": {
                    "bleep_start_padding": {
                        "type": "number",
                        "minimum": 0.0,
                        "title": "Bleep Start Padding",
                        "description": "Additional padding at the start of bleep, in seconds.",
                        "default": 0.5
                    },
                    "bleep_end_padding": {
                        "type": "number",
                        "minimum": 0.0,
                        "title": "Bleep End Padding",
                        "description": "Additional padding at the end of bleep, in seconds.",
                        "default": 0.2
                    },
                    "distortion_steps": {
                        "type": "integer",
                        "title": "Distortion Steps",
                        "description": "Specifies how the distortion will be made. Providing a number more than 0 will result in a higher tone and a coefficient less than 0 will result in a lower tone.",
                        "default": 0
                    },
                    "bleep_frequency": {
                        "type": "integer",
                        "title": "Bleep Frequency",
                        "description": "The `bleep_frequency` parameter configures the frequency of the sine wave used for the bleep sound in an audio segment.         This setting allows users to adjust the pitch of the bleep, with higher values resulting in a higher pitch and vice versa. Ideal for         customizing the bleep tone to suit various audio environments, it is expressed in Hertz (Hz) and should be chosen considering the balance         and clarity needed in the audio. The default setting is 600 Hz, which represents a standard bleep tone.",
                        "default": 600
                    },
                    "bleep_gain": {
                        "type": "number",
                        "title": "Bleep Gain",
                        "description": "The `bleep_gain` parameter sets the gain level, in decibels (dB), for the bleep sound within the audio segment.         It controls the relative loudness of the bleep, allowing for precise volume adjustments. A value of 0.0 dB maintains the         original amplitude of the bleep, positive values increase its loudness, and negative values decrease it.",
                        "default": -3.0
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "AudioOptions"
            },
            "BleepRequest": {
                "properties": {
                    "file": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/FileData"
                            }
                        ],
                        "description": "File object containing base64 encoded text data and its content type."
                    },
                    "timestamps": {
                        "items": {
                            "$ref": "#/components/schemas/PIITimestamp"
                        },
                        "type": "array",
                        "title": "Timestamps"
                    },
                    "bleep_frequency": {
                        "type": "integer",
                        "title": "Bleep Frequency",
                        "description": "The `bleep_frequency` parameter configures the frequency of the sine wave used for the bleep sound in an audio segment.         This setting allows users to adjust the pitch of the bleep, with higher values resulting in a higher pitch and vice versa. Ideal for         customizing the bleep tone to suit various audio environments, it is expressed in Hertz (Hz) and should be chosen considering the balance         and clarity needed in the audio. The default setting is 600 Hz, which represents a standard bleep tone.",
                        "default": 600
                    },
                    "bleep_gain": {
                        "type": "number",
                        "title": "Bleep Gain",
                        "description": "The `bleep_gain` parameter sets the gain level, in decibels (dB), for the bleep sound within the audio segment. It controls the         relative loudness of the bleep, allowing for precise volume adjustments. A value of 0.0 dB maintains the original amplitude of the bleep,         positive values increase its loudness, and negative values decrease it.",
                        "default": -3.0
                    }
                },
                "type": "object",
                "required": [
                    "file",
                    "timestamps"
                ],
                "title": "BleepRequest"
            },
            "BleepResponse": {
                "properties": {
                    "bleeped_file": {
                        "type": "string",
                        "title": "Bleeped File",
                        "description": "the base64 encoded file content of the redacted file."
                    }
                },
                "type": "object",
                "required": [
                    "bleeped_file"
                ],
                "title": "BleepResponse"
            },
            "BlockFilter": {
                "properties": {
                    "type": {
                        "const": "BLOCK",
                        "title": "Type",
                        "description": "The block feature allows you to extend the functionality of the Private AI models by using regular expressions. This way, you can define a Python regex pattern that will be used to identify additional tokens with the given PII label.\n\nSeveral block list filters can be specified with their own regex pattern.\n\nLastly,for supported labels, if you would like the model to pick up only the tokens from the block list, you can use the enabled entity type feature together with the block list feature. This can be done by defining a list of enabled entity types and not including the supported label you are adding to the block list. For example, if you would like the label `ORGANIZATION` to only pick up Microsoft, you can define the enabled entity types as `[{\"type\":\"ENABLE\", \"value\": \"NAME\"}, {\"type\": \"ENABLE\", \"value\": \"LOCATION\"}, {\"type\": \"ENABLE\", \"value\": \"AGE\"}, ...]` (and omitting `ORGANIZATION`) and the block list as `[{\"type\": \"BLOCK\", \"entitiy_type\": \"ORGANIZATION\", \"pattern\": \"Microsoft\"}]`.",
                        "default": "BLOCK"
                    },
                    "entity_type": {
                        "type": "string",
                        "title": "Entity Type",
                        "description": "Name of the custom entity type. It can either be a completely new entity type such as `CUSTOM_ID` or an existing entity, such as `NAME`."
                    },
                    "pattern": {
                        "type": "string",
                        "title": "Pattern",
                        "description": "This is a pattern to match in the text. This feature uses regex patterns, you can either pass a word (e.g. the, word, custom, etc.) or you can pass a valid Python regex pattern. It is important to note that regex patterns may require escaping when used in JSON objects. To give an example, if you would like to send the regex pattern `r\"\\b\\w{4}\\b\"` which will catch every 4-character word, you need to send it as `\"\\\\b\\\\w{4}\\\\b\"`. A complete JSON grammar is found here: https://www.json.org/json-en.html. More information on how to write a python regex is found here: https://docs.python.org/3/library/re.html\n\nIt is important to note also that only non-overlapping matches are returned."
                    },
                    "threshold": {
                        "type": "number",
                        "title": "Threshold",
                        "description": "This is defining a likelihood threshold for custom entity. This likelihood is compared against the predicted model likelihood and if it is greater then the custom entity is outputted instead of the model predicted entity. By default this threshold is set to 1.0 which will ensure that the blocked entities will always be preferred over a matching model predicted entity. This can be any value between 0 and 1.",
                        "default": 1.0
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "entity_type",
                    "pattern"
                ],
                "title": "BlockFilter"
            },
            "DetectionInternalOptions": {
                "properties": {
                    "heuristics": {
                        "$ref": "#/components/schemas/Heuristics"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "heuristics"
                ],
                "title": "DetectionInternalOptions"
            },
            "DiagnosticResponse": {
                "properties": {
                    "platform": {
                        "type": "string",
                        "title": "Platform",
                        "description": "The platform on which the container is running."
                    },
                    "cpu_count": {
                        "type": "integer",
                        "title": "Cpu Count",
                        "description": "The number of CPUs allocated to the container."
                    },
                    "container_version": {
                        "type": "string",
                        "title": "Container Version",
                        "description": "The version of the container."
                    },
                    "cpu_name": {
                        "type": "string",
                        "title": "Cpu Name",
                        "description": "The name of the CPU."
                    },
                    "gpu_info": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "type": "object",
                        "title": "Gpu Info",
                        "description": "The uuid and name of attached GPUs."
                    }
                },
                "type": "object",
                "required": [
                    "platform",
                    "cpu_count",
                    "container_version",
                    "cpu_name"
                ],
                "title": "DiagnosticResponse"
            },
            "DisableEntityTypeSelector": {
                "properties": {
                    "type": {
                        "const": "DISABLE",
                        "title": "Type",
                        "default": "DISABLE"
                    },
                    "value": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array",
                        "title": "Value",
                        "description": "A list of entity types to ignore. See [Supported Entity Types](https://docs.private-ai.com/entities/#supported-entities) for a complete list of entity types."
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "DisableEntityTypeSelector"
            },
            "EnableEntityTypeSelector": {
                "properties": {
                    "type": {
                        "const": "ENABLE",
                        "title": "Type",
                        "default": "ENABLE"
                    },
                    "value": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array",
                        "title": "Value",
                        "description": "A list of entity types to detect and remove. See [Supported Entity Types](https://docs.private-ai.com/entities/#supported-entities) for a complete list of entity types. This can also be one or many legislations. We currently support these legislations  ['APPI', 'APPI_SENSITIVE', 'CPRA', 'GDPR', 'GDPR_SENSITIVE', 'HIPAA', 'LIDI', 'PCI', 'PHI', 'QUEBEC_PRIVACY_ACT', 'CORE_ENTITIES', 'NUMERICAL_EXCL_PCI']."
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "EnableEntityTypeSelector"
            },
            "EntityItem": {
                "properties": {
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "Either the redaction marker, hash marker or synthetic entity text in `processed_text` corresponding to the entity."
                    },
                    "text": {
                        "type": "string",
                        "title": "Text",
                        "description": "The entity text. When the `return_entity` option is set to `False`, this returns a null string"
                    },
                    "location": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/TextLocation"
                            }
                        ],
                        "default": "Location object containing the start-end character indexes of given and processed text."
                    },
                    "best_label": {
                        "type": "string",
                        "title": "Best Label",
                        "description": "The entity label with the highest likelihood."
                    },
                    "labels": {
                        "additionalProperties": {
                            "type": "number"
                        },
                        "type": "object",
                        "title": "Labels",
                        "description": "A dictionary containing any other labels found, together with associated likelihoods. Note that these are not strictly probabilities and do not sum to 1, as an entity can have multiple types.\n\nNote that the likelihoods have also been thresholded, so no additional thresholding is necessary."
                    }
                },
                "type": "object",
                "required": [
                    "processed_text",
                    "text",
                    "best_label",
                    "labels"
                ],
                "title": "EntityItem"
            },
            "ErrorMessage": {
                "type": "string",
                "title": "ErrorMessage"
            },
            "File": {
                "properties": {
                    "data": {
                        "type": "string",
                        "title": "Data",
                        "description": "Base64 encoded ASCII text data of the file to process."
                    },
                    "content_type": {
                        "type": "string",
                        "title": "Content Type",
                        "description": "Content type of the file. Currently ['application/dicom', 'application/json', 'application/msword', 'application/pdf', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/xml', 'audio/m4a', 'audio/mp3', 'audio/mp4', 'audio/mp4a-latm', 'audio/mpeg', 'audio/wav', 'audio/webm', 'audio/x-wav', 'image/bmp', 'image/jpeg', 'image/jpg', 'image/png', 'image/tif', 'image/tiff', 'image/x-ms-bmp', 'message/rfc822', 'text/csv', 'text/plain'] are supported."
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "data",
                    "content_type"
                ],
                "title": "File"
            },
            "FileData": {
                "properties": {
                    "data": {
                        "type": "string",
                        "title": "Data",
                        "description": "Base64 encoded ASCII text data."
                    },
                    "content_type": {
                        "type": "string",
                        "title": "Content Type",
                        "description": "Content type of the data."
                    }
                },
                "type": "object",
                "required": [
                    "data",
                    "content_type"
                ],
                "title": "FileData"
            },
            "FileEntityItem": {
                "properties": {
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "The corresponding marker in the de-identified text (result field), where the entity exists. Note that this field is only populated for text-based formats such as `.txt`"
                    },
                    "text": {
                        "type": "string",
                        "title": "Text",
                        "description": "The text corresponding to the entity. For images the text is obtained using OCR, while for audio the text is obtained using ASR."
                    },
                    "location": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/TextLocation"
                            },
                            {
                                "$ref": "#/components/schemas/ImageLocation"
                            },
                            {
                                "$ref": "#/components/schemas/AudioLocation"
                            }
                        ],
                        "title": "Location"
                    },
                    "best_label": {
                        "type": "string",
                        "title": "Best Label",
                        "description": "The entity label with the highest likelihood."
                    },
                    "labels": {
                        "additionalProperties": {
                            "type": "number"
                        },
                        "type": "object",
                        "title": "Labels",
                        "description": "A dictionary of all possible labels, together with associated likelihoods. Note that these are not strictly probabilities and do not sum to 1, as a word can belong to multiple classes. The scores have also been thresholded, so no additional thresholding is necessary."
                    }
                },
                "type": "object",
                "required": [
                    "processed_text",
                    "text",
                    "location",
                    "best_label",
                    "labels"
                ],
                "title": "FileEntityItem",
                "description": "Empty"
            },
            "HTTPValidationError": {
                "properties": {
                    "detail": {
                        "items": {
                            "$ref": "#/components/schemas/ValidationError"
                        },
                        "type": "array",
                        "title": "Detail"
                    }
                },
                "type": "object",
                "title": "HTTPValidationError"
            },
            "HealthzResponse": {
                "properties": {
                    "success": {
                        "type": "boolean",
                        "title": "Success",
                        "description": "Whether the healthz request succeeded."
                    },
                    "gpu_inference_engine_success": {
                        "type": "boolean",
                        "title": "Gpu Inference Engine Success",
                        "description": "Whether the health check on the GPU inference engine succeeded. Returned on GPU container only."
                    }
                },
                "type": "object",
                "required": [
                    "success"
                ],
                "title": "HealthzResponse"
            },
            "Heuristics": {
                "properties": {
                    "pii_determination": {
                        "$ref": "#/components/schemas/PiiDetermination"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "pii_determination"
                ],
                "title": "Heuristics"
            },
            "ImageLocation": {
                "properties": {
                    "page": {
                        "type": "integer",
                        "title": "Page",
                        "description": "The page or layer that the entity occurs on. This corresponds to page in a PDF document or layer in a TIFF image."
                    },
                    "x0": {
                        "type": "number",
                        "title": "X0",
                        "description": "X coordinate of the upper left point of the entity bounding box."
                    },
                    "x1": {
                        "type": "number",
                        "title": "X1",
                        "description": "X coordinate of the lower right point of the entity bounding box."
                    },
                    "y0": {
                        "type": "number",
                        "title": "Y0",
                        "description": "Y coordinate of the upper left point of the entity bounding box."
                    },
                    "y1": {
                        "type": "number",
                        "title": "Y1",
                        "description": "Y coordinate of the lower right point of the entity bounding box."
                    }
                },
                "type": "object",
                "required": [
                    "page",
                    "x0",
                    "x1",
                    "y0",
                    "y1"
                ],
                "title": "ImageLocation",
                "description": "Bounding box of the entity in an image or PDF file (PDF files are converted to images). The origin is the upper left pixel of the image. Coordinates are given as a fraction of the X and Y image dimensions."
            },
            "ImageOptions": {
                "properties": {
                    "masking_method": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/MaskMode"
                            }
                        ],
                        "description": "Masking Mode for Image Deidentification. Available options are ['blur', 'blackbox']",
                        "default": "blur"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "ImageOptions"
            },
            "InternalErrorResponseModel": {
                "properties": {
                    "detail": {
                        "type": "string",
                        "title": "Detail",
                        "description": "The details of the error, usually relating to an unhandled processing error"
                    }
                },
                "type": "object",
                "required": [
                    "detail"
                ],
                "title": "InternalErrorResponseModel"
            },
            "MarkerLanguage": {
                "type": "string",
                "enum": [
                    "auto",
                    "en",
                    "fr",
                    "de",
                    "ja",
                    "ko",
                    "nl",
                    "ru",
                    "uk"
                ],
                "title": "MarkerLanguage"
            },
            "MarkerRedactedText": {
                "properties": {
                    "type": {
                        "const": "MARKER",
                        "title": "Type",
                        "default": "MARKER"
                    },
                    "pattern": {
                        "type": "string",
                        "title": "Pattern",
                        "description": "Specifies a custom redaction marker format. The format must contain one and only one of these predefined keywords: `BEST_ENTITY_TYPE`, `ALL_ENTITY_TYPES`, `UNIQUE_NUMBERED_ENTITY_TYPE`, `UNIQUE_HASHED_ENTITY_TYPE`, which will be replaced as follows:\n\n The keyword `BEST_ENTITY_TYPE` will be replaced by the entity type. For example, `--[BEST_ENTITY_TYPE]--` will transform `My name is John` into `My name is --[NAME_GIVEN]--`.\n\nThe keyword `UNIQUE_NUMBERED_ENTITY_TYPE` is similar, but it will also make the marker unique by appending an index at the end. For example `--[UNIQUE_NUMBERED_ENTITY_TYPE]--` yields `My name is --[NAME_GIVEN_1]--`.\n\nThe keyword `ALL_ENTITY_TYPES` will be replaced with all the entity types applicable to the entity. For example `--[ALL_ENTITY_TYPES]--` yields `My name is --[NAME,NAME_GIVEN]--`.\n\nIt is also possible to set this option via environment variable. See [Environment Variables](https://docs.private-ai.com/environment-variables).",
                        "default": "[UNIQUE_NUMBERED_ENTITY_TYPE]"
                    },
                    "marker_language": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/MarkerLanguage"
                            }
                        ],
                        "description": "The ISO 639 code of the language that the markers will be in. If set to `auto`, the detected language of the text is used. This feature is only available for `en`, `fr`, `de`, `ja`, `ko`, `nl`, `ru`, `uk`, if this feature is not available for the detected language, `en` will be used.",
                        "default": "en"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "MarkerRedactedText"
            },
            "MaskMode": {
                "type": "string",
                "enum": [
                    "blur",
                    "blackbox"
                ],
                "title": "MaskMode"
            },
            "MaskRedactedText": {
                "properties": {
                    "type": {
                        "const": "MASK",
                        "title": "Type",
                        "default": "MASK"
                    },
                    "mask_character": {
                        "type": "string",
                        "title": "Mask Character",
                        "description": "Replaces redacted PII with the specified mask character. Note that this input may only be a single character",
                        "default": "#"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "MaskRedactedText"
            },
            "PDFOptions": {
                "properties": {
                    "density": {
                        "type": "integer",
                        "title": "Density",
                        "description": "PDFs are converted into images using this DPI value. Smaller values result in images with smaller resolutions, which will take up less storage space and process faster, at the cost of output quality & redaction accuracy.",
                        "default": 200
                    },
                    "max_resolution": {
                        "type": "integer",
                        "title": "Max Resolution",
                        "description": "PDFs are converted into images using the `density` DPI value. Any resulting images with maximum size length larger than this will be resized to this value, while preserving aspect ratio.",
                        "default": 3000
                    },
                    "enable_pdf_text_layer": {
                        "type": "boolean",
                        "title": "Enable Pdf Text Layer",
                        "description": "This PDF option controls whether a text layer is included in the PDF files generated by         the process. When set to `true`, the application will include a text layer in the PDFs, allowing for text         selection, search, and accessibility features. If set to any other value or not set at all, the text layer         will be disabled, potentially resulting in smaller file sizes, faster processing, but with reduced         functionality regarding text selection and search.",
                        "default": true
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "PDFOptions"
            },
            "PIIDetectionParams": {
                "properties": {
                    "accuracy": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/AccuracyMode"
                            }
                        ],
                        "description": "Selects the model used to identify PII in the input text. By default, the `high_automatic` accuracy model is used. This default automatically chooses either the high or high_multilingual model. While the models used by the Private AI solution are highly optimized (~25X faster than a reference transformer implementation), in high-throughput cases it is possible to trade accuracy for speed by selecting either the `standard` or `standard_high` accuracy modes. Multilingual support can be enabled by using one of the multilingual models, namely `standard_high_multilingual` (GPU container only) and `high_multilingual`. The multilingual models process all supported languages including English, without the need to specify language. It is advisable to use the English-only models where possible, as they perform slightly better on English. Automatic Models can determine which model to use (English or Multilingual) depending on the languages detected, provided Multilingual models are available."
                    },
                    "entity_types": {
                        "items": {
                            "anyOf": [
                                {
                                    "$ref": "#/components/schemas/EnableEntityTypeSelector"
                                },
                                {
                                    "$ref": "#/components/schemas/DisableEntityTypeSelector"
                                }
                            ]
                        },
                        "type": "array",
                        "title": "Entity Types",
                        "description": "Controls which entity types and legislation sets are detected. See [Supported Entity Types](https://docs.private-ai.com/entities/#supported-entities) for the list of possible entities and legislation sets. By default, all entities are detected and removed. You can specify one of many selectors, which can be either an individual entity type such as `LOCATION_CITY` or a legislation like `GDPR`. `EnableEntityTypeSelector` selectors will add entity types to detect. On the contrary, `DisableEntityTypeSelector` selectors will ignore entities of the specified types. If only `DisableEntityTypeSelector` selectors are specified, they are assumed to be ignoring entity types from the entire supported list of entity types."
                    },
                    "filter": {
                        "items": {
                            "anyOf": [
                                {
                                    "$ref": "#/components/schemas/AllowFilter"
                                },
                                {
                                    "$ref": "#/components/schemas/BlockFilter"
                                },
                                {
                                    "$ref": "#/components/schemas/AllowTextFilter"
                                }
                            ]
                        },
                        "type": "array",
                        "title": "Filter",
                        "description": "This field contains a list of filters expressed as regular expressions. These regular expressions can help users customize PII detection in a few ways. `ALLOW` filters can disabled redaction of entities containing specific text (e.g. a document id with format ID-1212 that is not sensitive). On the other hand, the `BLOCK` filters can augment the existing set of entities with custom entities (e.g. detecting sensitive medical code with format A18.32 as IDC_NUMBER). Finally, the `ALLOW_TEXT` filters can select a section of text in a document that should not be redacted (e.g. author names in scientific references or dates in an audit trail log)."
                    },
                    "return_entity": {
                        "type": "boolean",
                        "title": "Return Entity",
                        "description": "Controls whether the PII list in the response contains the `text` field. Turning this off means that no sensitive PII is returned in the response.",
                        "default": true
                    },
                    "enable_non_max_suppression": {
                        "type": "boolean",
                        "title": "Enable Non Max Suppression",
                        "description": "When set, if the best label of an entity is disabled then the entity will not be redacted. This could be useful to minimize false-positives when disabling an entity label like `ACCOUNT_NUMBER` that is closely related to another entity like `BANK_ACCOUNT`. Note that, the effect of that flag is difficult to predict when disabling labels like `LOCATION_COUNTRY` or `NAME_GIVEN` that are hierarchical by nature (i.e. a `NAME_GIVEN` entity is also a `NAME` entity). We don't recommend setting that flag to true when some of these hierarchical entities are disabled.",
                        "default": false
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "PIIDetectionParams"
            },
            "PIITimestamp": {
                "properties": {
                    "start": {
                        "type": "number",
                        "title": "Start"
                    },
                    "end": {
                        "type": "number",
                        "title": "End"
                    }
                },
                "type": "object",
                "required": [
                    "start",
                    "end"
                ],
                "title": "PIITimestamp"
            },
            "PiiDetermination": {
                "properties": {
                    "algorithm": {
                        "$ref": "#/components/schemas/PiiDeterminationAlgorithm"
                    },
                    "params": {
                        "type": "object",
                        "title": "Params"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "algorithm",
                    "params"
                ],
                "title": "PiiDetermination"
            },
            "PiiDeterminationAlgorithm": {
                "type": "string",
                "enum": [
                    "PII_determination_with_sum",
                    "PII_determination_with_any_class",
                    "PII_determination_with_O_label"
                ],
                "title": "PiiDeterminationAlgorithm",
                "description": "It is important that these values match one of the PII determination heuristics"
            },
            "ProcessFileRequest": {
                "properties": {
                    "uri": {
                        "type": "string",
                        "title": "Uri",
                        "description": "URI of the file to be processed. It must be an accessible file path on the host machine (e.g. /Users/sam/files/file.pdf)."
                    },
                    "entity_detection": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/PIIDetectionParams"
                            }
                        ],
                        "description": "This section contains a set of parameters to control the PII detection process. All fields have sensible default that can be changed for specific needs."
                    },
                    "pdf_options": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/PDFOptions"
                            }
                        ],
                        "description": "Options to process PDF files, such as the rendering quality when each page is turned into an image."
                    },
                    "image_options": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ImageOptions"
                            }
                        ],
                        "description": "Options to process image files, such as the masking mode."
                    },
                    "audio_options": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/AudioOptions"
                            }
                        ],
                        "description": "Options to process audio files, such as the padding to add while redacting audio segments."
                    },
                    "project_id": {
                        "type": "string",
                        "maxLength": 60,
                        "pattern": "^[a-zA-Z0-9\\-_\\:]*$",
                        "title": "Project Id",
                        "description": "Used to categorize requests for reporting purposes. Limited to alphanumeric characters or the following special characters :_-"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "uri"
                ],
                "title": "ProcessFileRequest"
            },
            "ProcessFileRequestBase64": {
                "properties": {
                    "file": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/File"
                            }
                        ],
                        "description": "This section contains a set of parameters to control the PII detection process. All fields have sensible default that can be changed for specific needs."
                    },
                    "entity_detection": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/PIIDetectionParams"
                            }
                        ],
                        "description": "This section contains a set of parameters to control the PII detection process. All fields have sensible default that can be changed for specific needs."
                    },
                    "pdf_options": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/PDFOptions"
                            }
                        ],
                        "description": "Options to process PDF files, such as the rendering quality when each page is turned into an image."
                    },
                    "image_options": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ImageOptions"
                            }
                        ],
                        "description": "Options to process image files, such as the masking mode."
                    },
                    "audio_options": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/AudioOptions"
                            }
                        ],
                        "description": "Options to process audio files, such as the padding to add while redacting audio segments."
                    },
                    "project_id": {
                        "anyOf": [
                            {
                                "type": "string",
                                "maxLength": 60,
                                "pattern": "^[a-zA-Z0-9\\-_\\:]*$"
                            },
                            {
                                "type": "null"
                            }
                        ],
                        "title": "Project Id",
                        "description": "Used to categorize requests for reporting purposes. Limited to alphanumeric characters or the following special characters :_-"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "file"
                ],
                "title": "ProcessFileRequestBase64"
            },
            "ProcessFileResponse": {
                "properties": {
                    "result_uri": {
                        "type": "string",
                        "title": "Result Uri",
                        "description": "URI of the processed file in the output directory (e.g. /Users/sam/files/file.redacted.pdf)."
                    },
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "This field contains the redacted version of any text that was extracted from the input file. It corresponds to a redacted ASR transcript for audio files and any text found inside a document such as a PDF or image file."
                    },
                    "entities": {
                        "items": {
                            "$ref": "#/components/schemas/FileEntityItem"
                        },
                        "type": "array",
                        "title": "Entities",
                        "description": "A list of all entities found in the provided file."
                    },
                    "entities_present": {
                        "type": "boolean",
                        "title": "Entities Present",
                        "description": "Returns `True` if the list of detected entities is not empty."
                    },
                    "languages_detected": {
                        "additionalProperties": {
                            "type": "number"
                        },
                        "type": "object",
                        "title": "Languages Detected",
                        "description": "A dictionary containing ISO 639-1 language labels and the likelihood of their detection in the request payload."
                    }
                },
                "type": "object",
                "required": [
                    "result_uri",
                    "processed_text",
                    "entities",
                    "entities_present",
                    "languages_detected"
                ],
                "title": "ProcessFileResponse"
            },
            "ProcessFileResponseBase64": {
                "properties": {
                    "processed_file": {
                        "type": "string",
                        "title": "Processed File",
                        "description": "the base64 encoded file content of the redacted file."
                    },
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "This field contains the redacted version of any text that was extracted from the input file. It corresponds to a redacted ASR transcript for audio files and any text found inside a document such as a PDF or image file."
                    },
                    "entities": {
                        "items": {
                            "$ref": "#/components/schemas/FileEntityItem"
                        },
                        "type": "array",
                        "title": "Entities",
                        "description": "A list of all entities found in the provided file."
                    },
                    "entities_present": {
                        "type": "boolean",
                        "title": "Entities Present",
                        "description": "Returns `True` if the list of detected entities is not empty."
                    },
                    "languages_detected": {
                        "additionalProperties": {
                            "type": "number"
                        },
                        "type": "object",
                        "title": "Languages Detected",
                        "description": "A dictionary containing ISO 639-1 language labels and the likelihood of their detection in the request payload."
                    }
                },
                "type": "object",
                "required": [
                    "processed_file",
                    "processed_text",
                    "entities",
                    "entities_present",
                    "languages_detected"
                ],
                "title": "ProcessFileResponseBase64"
            },
            "ProcessTextRequest": {
                "properties": {
                    "text": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array",
                        "title": "Text",
                        "description": "UTF-8 encoded message(s) to process. E.g. `[\"My name is Adam\"]` or `[\"I live at\", \"263 Spadina Av\"]`. Request processing time increases linearly with input text length, therefore maximum length is dependent on provisioned hardware and any timeouts set by the user. Private AI has tested up to 500K characters on the CPU and GPU containers."
                    },
                    "link_batch": {
                        "type": "boolean",
                        "title": "Link Batch",
                        "description": "When set to `True`, the list of inputs provided in `text` will be processed together as a single input by the Private AI PII detection model. This shares context between the different inputs and is useful when processing a sequence of short inputs, such as an SMS chat log. This option should only be enabled when the inputs are related, otherwise PII detection performance could be degraded.",
                        "default": false
                    },
                    "entity_detection": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/PIIDetectionParams"
                            }
                        ],
                        "description": "This section contains a set of parameters to control the PII detection process. All fields have sensible default that can be changed for specific needs."
                    },
                    "processed_text": {
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/MarkerRedactedText"
                            },
                            {
                                "$ref": "#/components/schemas/SyntheticRedactedText"
                            },
                            {
                                "$ref": "#/components/schemas/MaskRedactedText"
                            }
                        ],
                        "title": "Processed Text",
                        "description": "This section allows the user to generate redacted (default), synthetic or masked text.",
                        "default": {
                            "marker_language": "en",
                            "pattern": "[UNIQUE_NUMBERED_ENTITY_TYPE]",
                            "type": "MARKER"
                        },
                        "discriminator": {
                            "propertyName": "type",
                            "mapping": {
                                "MARKER": "#/components/schemas/MarkerRedactedText",
                                "MASK": "#/components/schemas/MaskRedactedText",
                                "SYNTHETIC": "#/components/schemas/SyntheticRedactedText"
                            }
                        }
                    },
                    "project_id": {
                        "anyOf": [
                            {
                                "type": "string",
                                "maxLength": 60,
                                "pattern": "^[a-zA-Z0-9\\-_\\:]*$"
                            },
                            {
                                "type": "null"
                            }
                        ],
                        "title": "Project Id",
                        "description": "Used to categorize requests for reporting purposes. Limited to alphanumeric characters or the following special characters :_-"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "text"
                ],
                "title": "ProcessTextRequest",
                "description": "API 3.0 Spec Definition"
            },
            "ProcessTextResponse-Input": {
                "items": {
                    "$ref": "#/components/schemas/ProcessTextResponseItem-Input"
                },
                "type": "array",
                "title": "ProcessTextResponse"
            },
            "ProcessTextResponse-Output": {
                "items": {
                    "$ref": "#/components/schemas/ProcessTextResponseItem-Output"
                },
                "type": "array",
                "title": "ProcessTextResponse"
            },
            "ProcessTextResponseItem-Input": {
                "properties": {
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "The redacted, synthetic or masked text."
                    },
                    "entities": {
                        "items": {
                            "$ref": "#/components/schemas/EntityItem"
                        },
                        "type": "array",
                        "title": "Entities",
                        "description": "A list of all entities found in the text."
                    },
                    "entities_present": {
                        "type": "boolean",
                        "title": "Entities Present",
                        "description": "Returns `True` if the list of detected entities is not empty."
                    },
                    "characters_processed": {
                        "type": "integer",
                        "title": "Characters Processed",
                        "description": "The number of characters in all the text inputs."
                    },
                    "languages_detected": {
                        "additionalProperties": {
                            "type": "number"
                        },
                        "type": "object",
                        "title": "Languages Detected",
                        "description": "A dictionary containing ISO 639-1 language labels and the likelihood of their detection in the request payload."
                    }
                },
                "type": "object",
                "required": [
                    "processed_text",
                    "entities",
                    "entities_present",
                    "characters_processed",
                    "languages_detected"
                ],
                "title": "ProcessTextResponseItem"
            },
            "ProcessTextResponseItem-Output": {
                "properties": {
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "The redacted, synthetic or masked text."
                    },
                    "entities": {
                        "items": {
                            "$ref": "#/components/schemas/EntityItem"
                        },
                        "type": "array",
                        "title": "Entities",
                        "description": "A list of all entities found in the text."
                    },
                    "entities_present": {
                        "type": "boolean",
                        "title": "Entities Present",
                        "description": "Returns `True` if the list of detected entities is not empty."
                    },
                    "characters_processed": {
                        "type": "integer",
                        "title": "Characters Processed",
                        "description": "The number of characters in all the text inputs."
                    },
                    "languages_detected": {
                        "additionalProperties": {
                            "type": "number"
                        },
                        "type": "object",
                        "title": "Languages Detected",
                        "description": "A dictionary containing ISO 639-1 language labels and the likelihood of their detection in the request payload."
                    }
                },
                "type": "object",
                "required": [
                    "processed_text",
                    "entities",
                    "entities_present",
                    "characters_processed",
                    "languages_detected"
                ],
                "title": "ProcessTextResponseItem"
            },
            "ReIdentifyTextRequest": {
                "properties": {
                    "processed_text": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array",
                        "title": "Processed Text",
                        "description": "The text with redaction markers. The markers will be replaced with the entity texts.                                                 E.g. `Hi [NAME_1], nice to meet you.`"
                    },
                    "entities": {
                        "items": {
                            "$ref": "#/components/schemas/ReIdentifyTextRequestEntity"
                        },
                        "type": "array",
                        "title": "Entities",
                        "description": "A list of all entities found in the text."
                    },
                    "model": {
                        "type": "string",
                        "title": "Model",
                        "description": "The LLM that provides the completions. E.g. `gpt3.5-turbo`. While optional,                                             this is used to improve the re-identification process by accounting for the model's                                             unique behaviour surrounding redaction markers"
                    },
                    "reidentify_sensitive_fields": {
                        "type": "boolean",
                        "title": "Reidentify Sensitive Fields",
                        "description": "When this parameter is set to False, the re-identifier will mask fields ['BANK_ACCOUNT', 'CREDIT_CARD', 'CREDIT_CARD_EXPIRATION', 'CVV', 'ROUTING_NUMBER', 'ACCOUNT_NUMBER', 'DRIVER_LICENSE', 'HEALTHCARE_NUMBER', 'PASSPORT_NUMBER', 'PASSWORD', 'SSN', 'VEHICLE_ID'] with '#' instead of re-identifying them.                                                         The last quarter of CREDIT_CARD will be re-identified. When the parameter is set to True, all fields will be re-identified.                                                         ",
                        "default": true
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "processed_text",
                    "entities"
                ],
                "title": "ReIdentifyTextRequest"
            },
            "ReIdentifyTextRequestEntity": {
                "properties": {
                    "processed_text": {
                        "type": "string",
                        "title": "Processed Text",
                        "description": "The redaction marker in `processed_text` corresponding to the entity. E.g. `NAME_1`"
                    },
                    "text": {
                        "type": "string",
                        "title": "Text",
                        "description": "The entity text. E.g. `Sansa`"
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "required": [
                    "processed_text",
                    "text"
                ],
                "title": "ReIdentifyTextRequestEntity"
            },
            "SyntheticPIIAccuracyMode": {
                "type": "string",
                "enum": [
                    "standard",
                    "standard_multilingual",
                    "standard_automatic"
                ],
                "title": "SyntheticPIIAccuracyMode"
            },
            "SyntheticRedactedText": {
                "properties": {
                    "type": {
                        "const": "SYNTHETIC",
                        "title": "Type",
                        "default": "SYNTHETIC"
                    },
                    "synthetic_entity_accuracy": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/SyntheticPIIAccuracyMode"
                            }
                        ],
                        "description": "(Beta) Enable synthetic entity generation using the specified model. Currently this feature is in beta. Supported values are ['standard', 'standard_multilingual', 'standard_automatic']. Use the value `standard_automatic` to let the service automatically choose the best of `standard` or `standard_multilingual` options. The default value is `standard_automatic` if the container is equipped with the synthetic multilingual model, otherwise, the default value is `standard`"
                    },
                    "preserve_relationships": {
                        "type": "boolean",
                        "title": "Preserve Relationships",
                        "description": "(Beta) Specifies whether multiple instances of the same entity should have the same generated synthetic entity or not. For example, preserve relationships: \"Hi John and Rosha, John nice to meet you\" -> \"Hi Harry and Alev, Harry nice to meet you\". No preserve relationships: \"Hi John and Rosha, John nice to meet you\" -> \"Hi Harry and Alev, Sulav nice to meet you\". This field has no effects when **synthetic_entity_accuracy** is not set.",
                        "default": true
                    }
                },
                "additionalProperties": false,
                "type": "object",
                "title": "SyntheticRedactedText"
            },
            "TextLocation": {
                "properties": {
                    "stt_idx": {
                        "type": "integer",
                        "title": "Stt Idx",
                        "description": "Start character index of the entity in the original text."
                    },
                    "end_idx": {
                        "type": "integer",
                        "title": "End Idx",
                        "description": "Index of the character immediately following the entity, such that end_idx - stt_idx = number of characters in the entity."
                    },
                    "stt_idx_processed": {
                        "type": "integer",
                        "title": "Stt Idx Processed",
                        "description": "Start character index of the entity in the processed text."
                    },
                    "end_idx_processed": {
                        "type": "integer",
                        "title": "End Idx Processed",
                        "description": "Index of the character immediately following the entity in the processed text."
                    }
                },
                "type": "object",
                "required": [
                    "stt_idx",
                    "end_idx",
                    "stt_idx_processed",
                    "end_idx_processed"
                ],
                "title": "TextLocation",
                "description": "Start and end indices of the entity in a text-based file format such as `.txt`."
            },
            "UserErrorResponseModel": {
                "properties": {
                    "detail": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/ErrorMessage"
                            },
                            {
                                "$ref": "#/components/schemas/ValidationErrorModel"
                            }
                        ],
                        "title": "Detail",
                        "description": "The details of the error, usually relating to an input validation error"
                    }
                },
                "type": "object",
                "required": [
                    "detail"
                ],
                "title": "UserErrorResponseModel"
            },
            "ValidationError": {
                "properties": {
                    "loc": {
                        "items": {
                            "anyOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "integer"
                                }
                            ]
                        },
                        "type": "array",
                        "title": "Location"
                    },
                    "msg": {
                        "type": "string",
                        "title": "Message"
                    },
                    "type": {
                        "type": "string",
                        "title": "Error Type"
                    }
                },
                "type": "object",
                "required": [
                    "loc",
                    "msg",
                    "type"
                ],
                "title": "ValidationError"
            },
            "ValidationErrorModel": {
                "properties": {
                    "description": {
                        "type": "string",
                        "title": "Description",
                        "description": "User-friendly error message description."
                    },
                    "loc": {
                        "items": {
                            "anyOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "integer"
                                }
                            ]
                        },
                        "type": "array",
                        "title": "Loc",
                        "description": "The location where the error has occurred. This could be location of a character if the error is a parsing error, or it could be a value in the request if there is a validation error."
                    },
                    "msg": {
                        "type": "string",
                        "title": "Msg",
                        "description": "The error message."
                    },
                    "type": {
                        "type": "string",
                        "title": "Type",
                        "description": "The type of error that has been encountered."
                    }
                },
                "type": "object",
                "required": [
                    "loc",
                    "msg",
                    "type"
                ],
                "title": "ValidationErrorModel"
            },
            "VersionResponse": {
                "properties": {
                    "app_version": {
                        "type": "string",
                        "title": "App Version",
                        "description": "The app version of the code currently deployed at this endpoint."
                    }
                },
                "type": "object",
                "required": [
                    "app_version"
                ],
                "title": "VersionResponse"
            }
        }
    }
}