{
  "canonicalName": "Model Armor",
  "rootUrl": "https://modelarmor.us.rep.googleapis.com/",
  "basePath": "",
  "servicePath": "",
  "baseUrl": "https://modelarmor.us.rep.googleapis.com/",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "getFloorSetting": {
              "id": "modelarmor.projects.locations.getFloorSetting",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/floorSetting",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the floor setting to get, example projects/123/floorsetting.",
                  "pattern": "^projects/[^/]+/locations/[^/]+/floorSetting$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "FloorSetting"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets details of a single floor setting of a project"
            },
            "updateFloorSetting": {
              "id": "modelarmor.projects.locations.updateFloorSetting",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/floorSetting",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Identifier. The resource name.",
                  "pattern": "^projects/[^/]+/locations/[^/]+/floorSetting$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. Field mask is used to specify the fields to be overwritten in the FloorSetting resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "FloorSetting"
              },
              "response": {
                "$ref": "FloorSetting"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates the parameters of a single floor setting of a project"
            },
            "list": {
              "id": "modelarmor.projects.locations.list",
              "path": "v1/{+name}/locations",
              "flatPath": "v1/projects/{projectsId}/locations",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "The resource that owns the locations collection, if applicable.",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "filter": {
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
                  "location": "query",
                  "type": "string"
                },
                "pageSize": {
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
                  "location": "query",
                  "type": "string"
                },
                "extraLocationTypes": {
                  "description": "Optional. Do not use this field. It is unsupported and is ignored unless explicitly documented otherwise. This is primarily for internal usage.",
                  "location": "query",
                  "repeated": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Lists information about the supported locations for this service. This method can be called in two ways: * **List all public locations:** Use the path `GET /v1/locations`. * **List project-visible locations:** Use the path `GET /v1/projects/{project_id}/locations`. This may include public locations as well as private or other locations specifically visible to the project."
            },
            "get": {
              "id": "modelarmor.projects.locations.get",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Resource name for the location.",
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Location"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets information about a location."
            }
          },
          "resources": {
            "templates": {
              "methods": {
                "list": {
                  "id": "modelarmor.projects.locations.templates.list",
                  "path": "v1/{+parent}/templates",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. Parent value for ListTemplatesRequest",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "Optional. A token identifying a page of results the server should return.",
                      "location": "query",
                      "type": "string"
                    },
                    "filter": {
                      "description": "Optional. Filtering results",
                      "location": "query",
                      "type": "string"
                    },
                    "orderBy": {
                      "description": "Optional. Hint for how to order the results",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListTemplatesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Lists Templates in a given project and location."
                },
                "get": {
                  "id": "modelarmor.projects.locations.templates.get",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates/{templatesId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the resource",
                      "pattern": "^projects/[^/]+/locations/[^/]+/templates/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Template"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Gets details of a single Template."
                },
                "create": {
                  "id": "modelarmor.projects.locations.templates.create",
                  "path": "v1/{+parent}/templates",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Value for parent.",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "templateId": {
                      "description": "Required. Id of the requesting object If auto-generating Id server-side, remove this field and template_id from the method_signature of Create RPC",
                      "location": "query",
                      "type": "string"
                    },
                    "requestId": {
                      "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server stores the request ID for 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "Template"
                  },
                  "response": {
                    "$ref": "Template"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Creates a new Template in a given project and location."
                },
                "patch": {
                  "id": "modelarmor.projects.locations.templates.patch",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates/{templatesId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "Identifier. name of resource",
                      "pattern": "^projects/[^/]+/locations/[^/]+/templates/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "updateMask": {
                      "description": "Required. Field mask is used to specify the fields to be overwritten in the Template resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                      "location": "query",
                      "type": "string",
                      "format": "google-fieldmask"
                    },
                    "requestId": {
                      "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server stores the request ID for 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "Template"
                  },
                  "response": {
                    "$ref": "Template"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Updates the parameters of a single Template."
                },
                "delete": {
                  "id": "modelarmor.projects.locations.templates.delete",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates/{templatesId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the resource",
                      "pattern": "^projects/[^/]+/locations/[^/]+/templates/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "requestId": {
                      "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server stores the request ID for 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Deletes a single Template."
                },
                "sanitizeUserPrompt": {
                  "id": "modelarmor.projects.locations.templates.sanitizeUserPrompt",
                  "path": "v1/{+name}:sanitizeUserPrompt",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates/{templatesId}:sanitizeUserPrompt",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. Represents resource name of template e.g. name=projects/sample-project/locations/us-central1/templates/templ01",
                      "pattern": "^projects/[^/]+/locations/[^/]+/templates/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "SanitizeUserPromptRequest"
                  },
                  "response": {
                    "$ref": "SanitizeUserPromptResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Sanitizes User Prompt."
                },
                "sanitizeModelResponse": {
                  "id": "modelarmor.projects.locations.templates.sanitizeModelResponse",
                  "path": "v1/{+name}:sanitizeModelResponse",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/templates/{templatesId}:sanitizeModelResponse",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. Represents resource name of template e.g. name=projects/sample-project/locations/us-central1/templates/templ01",
                      "pattern": "^projects/[^/]+/locations/[^/]+/templates/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "SanitizeModelResponseRequest"
                  },
                  "response": {
                    "$ref": "SanitizeModelResponseResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Sanitizes Model Response."
                }
              }
            }
          }
        }
      }
    },
    "folders": {
      "resources": {
        "locations": {
          "methods": {
            "getFloorSetting": {
              "id": "modelarmor.folders.locations.getFloorSetting",
              "path": "v1/{+name}",
              "flatPath": "v1/folders/{foldersId}/locations/{locationsId}/floorSetting",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the floor setting to get, example projects/123/floorsetting.",
                  "pattern": "^folders/[^/]+/locations/[^/]+/floorSetting$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "FloorSetting"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets details of a single floor setting of a project"
            },
            "updateFloorSetting": {
              "id": "modelarmor.folders.locations.updateFloorSetting",
              "path": "v1/{+name}",
              "flatPath": "v1/folders/{foldersId}/locations/{locationsId}/floorSetting",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Identifier. The resource name.",
                  "pattern": "^folders/[^/]+/locations/[^/]+/floorSetting$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. Field mask is used to specify the fields to be overwritten in the FloorSetting resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "FloorSetting"
              },
              "response": {
                "$ref": "FloorSetting"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates the parameters of a single floor setting of a project"
            }
          }
        }
      }
    },
    "organizations": {
      "resources": {
        "locations": {
          "methods": {
            "getFloorSetting": {
              "id": "modelarmor.organizations.locations.getFloorSetting",
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/floorSetting",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the floor setting to get, example projects/123/floorsetting.",
                  "pattern": "^organizations/[^/]+/locations/[^/]+/floorSetting$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "FloorSetting"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets details of a single floor setting of a project"
            },
            "updateFloorSetting": {
              "id": "modelarmor.organizations.locations.updateFloorSetting",
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/floorSetting",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Identifier. The resource name.",
                  "pattern": "^organizations/[^/]+/locations/[^/]+/floorSetting$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. Field mask is used to specify the fields to be overwritten in the FloorSetting resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "FloorSetting"
              },
              "response": {
                "$ref": "FloorSetting"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates the parameters of a single floor setting of a project"
            }
          }
        }
      }
    }
  },
  "mtlsRootUrl": "https://modelarmor.us.rep.mtls.googleapis.com/",
  "ownerName": "Google",
  "protocol": "rest",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "version": "v1",
  "name": "modelarmor",
  "id": "modelarmor:v1",
  "ownerDomain": "google.com",
  "title": "Model Armor API",
  "schemas": {
    "ListTemplatesResponse": {
      "id": "ListTemplatesResponse",
      "description": "Message for response to listing Templates",
      "type": "object",
      "properties": {
        "templates": {
          "description": "The list of Template",
          "type": "array",
          "items": {
            "$ref": "Template"
          }
        },
        "nextPageToken": {
          "description": "A token identifying a page of results the server should return.",
          "type": "string"
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Template": {
      "id": "Template",
      "description": "Message describing Template resource",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. name of resource",
          "type": "string"
        },
        "createTime": {
          "description": "Output only. [Output only] Create time stamp",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. [Output only] Update time stamp",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "labels": {
          "description": "Optional. Labels as key value pairs",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "filterConfig": {
          "description": "Required. filter configuration for this template",
          "$ref": "FilterConfig"
        },
        "templateMetadata": {
          "description": "Optional. metadata for this template",
          "$ref": "TemplateMetadata"
        }
      }
    },
    "FilterConfig": {
      "id": "FilterConfig",
      "description": "Filters configuration.",
      "type": "object",
      "properties": {
        "raiSettings": {
          "description": "Optional. Responsible AI settings.",
          "$ref": "RaiFilterSettings"
        },
        "sdpSettings": {
          "description": "Optional. Sensitive Data Protection settings.",
          "$ref": "SdpFilterSettings"
        },
        "piAndJailbreakFilterSettings": {
          "description": "Optional. Prompt injection and Jailbreak filter settings.",
          "$ref": "PiAndJailbreakFilterSettings"
        },
        "maliciousUriFilterSettings": {
          "description": "Optional. Malicious URI filter settings.",
          "$ref": "MaliciousUriFilterSettings"
        }
      }
    },
    "RaiFilterSettings": {
      "id": "RaiFilterSettings",
      "description": "Responsible AI Filter settings.",
      "type": "object",
      "properties": {
        "raiFilters": {
          "description": "Required. List of Responsible AI filters enabled for template.",
          "type": "array",
          "items": {
            "$ref": "RaiFilter"
          }
        }
      }
    },
    "RaiFilter": {
      "id": "RaiFilter",
      "description": "Responsible AI filter.",
      "type": "object",
      "properties": {
        "filterType": {
          "description": "Required. Type of responsible AI filter.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified filter type.",
            "Sexually Explicit.",
            "Hate Speech.",
            "Harassment.",
            "Danger"
          ],
          "enum": [
            "RAI_FILTER_TYPE_UNSPECIFIED",
            "SEXUALLY_EXPLICIT",
            "HATE_SPEECH",
            "HARASSMENT",
            "DANGEROUS"
          ]
        },
        "confidenceLevel": {
          "description": "Optional. Confidence level for this RAI filter. During data sanitization, if data is classified under this filter with a confidence level equal to or greater than the specified level, a positive match is reported. If the confidence level is unspecified (i.e., 0), the system will use a reasonable default level based on the `filter_type`.",
          "type": "string",
          "enumDescriptions": [
            "Same as LOW_AND_ABOVE.",
            "Highest chance of a false positive.",
            "Some chance of false positives.",
            "Low chance of false positives."
          ],
          "enum": [
            "DETECTION_CONFIDENCE_LEVEL_UNSPECIFIED",
            "LOW_AND_ABOVE",
            "MEDIUM_AND_ABOVE",
            "HIGH"
          ]
        }
      }
    },
    "SdpFilterSettings": {
      "id": "SdpFilterSettings",
      "description": "Sensitive Data Protection settings.",
      "type": "object",
      "properties": {
        "basicConfig": {
          "description": "Optional. Basic Sensitive Data Protection configuration inspects the content for sensitive data using a fixed set of six info-types. Sensitive Data Protection templates cannot be used with basic configuration. Only Sensitive Data Protection inspection operation is supported with basic configuration.",
          "$ref": "SdpBasicConfig"
        },
        "advancedConfig": {
          "description": "Optional. Advanced Sensitive Data Protection configuration which enables use of Sensitive Data Protection templates. Supports both Sensitive Data Protection inspection and de-identification operations.",
          "$ref": "SdpAdvancedConfig"
        }
      }
    },
    "SdpBasicConfig": {
      "id": "SdpBasicConfig",
      "description": "Sensitive Data Protection basic configuration.",
      "type": "object",
      "properties": {
        "filterEnforcement": {
          "description": "Optional. Tells whether the Sensitive Data Protection basic config is enabled or disabled.",
          "type": "string",
          "enumDescriptions": [
            "Same as Disabled",
            "Enabled",
            "Disabled"
          ],
          "enum": [
            "SDP_BASIC_CONFIG_ENFORCEMENT_UNSPECIFIED",
            "ENABLED",
            "DISABLED"
          ]
        }
      }
    },
    "SdpAdvancedConfig": {
      "id": "SdpAdvancedConfig",
      "description": "Sensitive Data Protection Advanced configuration.",
      "type": "object",
      "properties": {
        "inspectTemplate": {
          "description": "Optional. Sensitive Data Protection inspect template resource name If only inspect template is provided (de-identify template not provided), then Sensitive Data Protection InspectContent action is performed during Sanitization. All Sensitive Data Protection findings identified during inspection will be returned as SdpFinding in SdpInsepctionResult. e.g. `projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`",
          "type": "string"
        },
        "deidentifyTemplate": {
          "description": "Optional. Optional Sensitive Data Protection Deidentify template resource name. If provided then DeidentifyContent action is performed during Sanitization using this template and inspect template. The De-identified data will be returned in SdpDeidentifyResult. Note that all info-types present in the deidentify template must be present in inspect template. e.g. `projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`",
          "type": "string"
        }
      }
    },
    "PiAndJailbreakFilterSettings": {
      "id": "PiAndJailbreakFilterSettings",
      "description": "Prompt injection and Jailbreak Filter settings.",
      "type": "object",
      "properties": {
        "filterEnforcement": {
          "description": "Optional. Tells whether Prompt injection and Jailbreak filter is enabled or disabled.",
          "type": "string",
          "enumDescriptions": [
            "Same as Disabled",
            "Enabled",
            "Disabled"
          ],
          "enum": [
            "PI_AND_JAILBREAK_FILTER_ENFORCEMENT_UNSPECIFIED",
            "ENABLED",
            "DISABLED"
          ]
        },
        "confidenceLevel": {
          "description": "Optional. Confidence level for this filter. Confidence level is used to determine the threshold for the filter. If detection confidence is equal to or greater than the specified level, a positive match is reported. Confidence level will only be used if the filter is enabled.",
          "type": "string",
          "enumDescriptions": [
            "Same as LOW_AND_ABOVE.",
            "Highest chance of a false positive.",
            "Some chance of false positives.",
            "Low chance of false positives."
          ],
          "enum": [
            "DETECTION_CONFIDENCE_LEVEL_UNSPECIFIED",
            "LOW_AND_ABOVE",
            "MEDIUM_AND_ABOVE",
            "HIGH"
          ]
        }
      }
    },
    "MaliciousUriFilterSettings": {
      "id": "MaliciousUriFilterSettings",
      "description": "Malicious URI filter settings.",
      "type": "object",
      "properties": {
        "filterEnforcement": {
          "description": "Optional. Tells whether the Malicious URI filter is enabled or disabled.",
          "type": "string",
          "enumDescriptions": [
            "Same as Disabled",
            "Enabled",
            "Disabled"
          ],
          "enum": [
            "MALICIOUS_URI_FILTER_ENFORCEMENT_UNSPECIFIED",
            "ENABLED",
            "DISABLED"
          ]
        }
      }
    },
    "TemplateMetadata": {
      "id": "TemplateMetadata",
      "description": "Message describing TemplateMetadata",
      "type": "object",
      "properties": {
        "ignorePartialInvocationFailures": {
          "description": "Optional. If true, partial detector failures should be ignored.",
          "type": "boolean"
        },
        "customPromptSafetyErrorCode": {
          "description": "Optional. Indicates the custom error code set by the user to be returned to the end user by the service extension if the prompt trips Model Armor filters.",
          "type": "integer",
          "format": "int32"
        },
        "customPromptSafetyErrorMessage": {
          "description": "Optional. Indicates the custom error message set by the user to be returned to the end user if the prompt trips Model Armor filters.",
          "type": "string"
        },
        "customLlmResponseSafetyErrorCode": {
          "description": "Optional. Indicates the custom error code set by the user to be returned to the end user if the LLM response trips Model Armor filters.",
          "type": "integer",
          "format": "int32"
        },
        "customLlmResponseSafetyErrorMessage": {
          "description": "Optional. Indicates the custom error message set by the user to be returned to the end user if the LLM response trips Model Armor filters.",
          "type": "string"
        },
        "logTemplateOperations": {
          "description": "Optional. If true, log template crud operations.",
          "type": "boolean"
        },
        "logSanitizeOperations": {
          "description": "Optional. If true, log sanitize operations.",
          "type": "boolean"
        },
        "enforcementType": {
          "description": "Optional. Enforcement type for Model Armor filters.",
          "type": "string",
          "enumDescriptions": [
            "Default value. Same as INSPECT_AND_BLOCK.",
            "Model Armor filters will run in inspect only mode. No action will be taken on the request.",
            "Model Armor filters will run in inspect and block mode. Requests that trip Model Armor filters will be blocked."
          ],
          "enum": [
            "ENFORCEMENT_TYPE_UNSPECIFIED",
            "INSPECT_ONLY",
            "INSPECT_AND_BLOCK"
          ]
        },
        "multiLanguageDetection": {
          "description": "Optional. Metadata for multi language detection.",
          "$ref": "MultiLanguageDetection"
        }
      }
    },
    "MultiLanguageDetection": {
      "id": "MultiLanguageDetection",
      "description": "Metadata to enable multi language detection via template.",
      "type": "object",
      "properties": {
        "enableMultiLanguageDetection": {
          "description": "Required. If true, multi language detection will be enabled.",
          "type": "boolean"
        }
      }
    },
    "Empty": {
      "id": "Empty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "properties": {}
    },
    "FloorSetting": {
      "id": "FloorSetting",
      "description": "Message describing FloorSetting resource",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The resource name.",
          "type": "string"
        },
        "createTime": {
          "description": "Output only. [Output only] Create timestamp",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. [Output only] Update timestamp",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "filterConfig": {
          "description": "Required. ModelArmor filter configuration.",
          "$ref": "FilterConfig"
        },
        "enableFloorSettingEnforcement": {
          "description": "Optional. Floor Settings enforcement status.",
          "type": "boolean"
        },
        "integratedServices": {
          "description": "Optional. List of integrated services for which the floor setting is applicable.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Unspecified integrated service.",
              "AI Platform.",
              "Google MCP Server (via Shim Service Extension)"
            ],
            "enum": [
              "INTEGRATED_SERVICE_UNSPECIFIED",
              "AI_PLATFORM",
              "GOOGLE_MCP_SERVER"
            ]
          }
        },
        "aiPlatformFloorSetting": {
          "description": "Optional. AI Platform floor setting.",
          "$ref": "AiPlatformFloorSetting"
        },
        "floorSettingMetadata": {
          "description": "Optional. Metadata for FloorSetting",
          "$ref": "FloorSettingMetadata"
        },
        "googleMcpServerFloorSetting": {
          "description": "Optional. Google MCP Server floor setting.",
          "$ref": "McpServerFloorSetting"
        }
      }
    },
    "AiPlatformFloorSetting": {
      "id": "AiPlatformFloorSetting",
      "description": "message describing AiPlatformFloorSetting",
      "type": "object",
      "properties": {
        "inspectOnly": {
          "description": "Optional. If true, Model Armor filters will be run in inspect only mode. No action will be taken on the request.",
          "type": "boolean"
        },
        "inspectAndBlock": {
          "description": "Optional. If true, Model Armor filters will be run in inspect and block mode. Requests that trip Model Armor filters will be blocked.",
          "type": "boolean"
        },
        "enableCloudLogging": {
          "description": "Optional. If true, log Model Armor filter results to Cloud Logging.",
          "type": "boolean"
        }
      }
    },
    "FloorSettingMetadata": {
      "id": "FloorSettingMetadata",
      "description": "message describing FloorSetting Metadata",
      "type": "object",
      "properties": {
        "multiLanguageDetection": {
          "description": "Optional. Metadata for multi language detection.",
          "$ref": "FloorSettingFloorSettingMetadataMultiLanguageDetection"
        }
      }
    },
    "FloorSettingFloorSettingMetadataMultiLanguageDetection": {
      "id": "FloorSettingFloorSettingMetadataMultiLanguageDetection",
      "description": "Metadata to enable multi language detection via floor setting.",
      "type": "object",
      "properties": {
        "enableMultiLanguageDetection": {
          "description": "Required. If true, multi language detection will be enabled.",
          "type": "boolean"
        }
      }
    },
    "McpServerFloorSetting": {
      "id": "McpServerFloorSetting",
      "description": "Message describing MCP Server Floor Setting.",
      "type": "object",
      "properties": {
        "inspectOnly": {
          "description": "Optional. If true, Model Armor filters will be run in inspect only mode. No action will be taken on the request.",
          "type": "boolean"
        },
        "inspectAndBlock": {
          "description": "Optional. If true, Model Armor filters will be run in inspect and block mode. Requests that trip Model Armor filters will be blocked.",
          "type": "boolean"
        },
        "enableCloudLogging": {
          "description": "Optional. If true, log Model Armor filter results to Cloud Logging.",
          "type": "boolean"
        }
      }
    },
    "SanitizeUserPromptRequest": {
      "id": "SanitizeUserPromptRequest",
      "description": "Sanitize User Prompt request.",
      "type": "object",
      "properties": {
        "userPromptData": {
          "description": "Required. User prompt data to sanitize.",
          "$ref": "DataItem"
        },
        "multiLanguageDetectionMetadata": {
          "description": "Optional. Metadata related to Multi Language Detection.",
          "$ref": "MultiLanguageDetectionMetadata"
        }
      }
    },
    "DataItem": {
      "id": "DataItem",
      "description": "Represents Data item",
      "type": "object",
      "properties": {
        "text": {
          "description": "Plaintext string data for sanitization.",
          "type": "string"
        },
        "byteItem": {
          "description": "Data provided in the form of bytes.",
          "$ref": "ByteDataItem"
        }
      }
    },
    "ByteDataItem": {
      "id": "ByteDataItem",
      "description": "Represents Byte Data item.",
      "type": "object",
      "properties": {
        "byteDataType": {
          "description": "Required. The type of byte data",
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "plain text",
            "PDF",
            "DOCX, DOCM, DOTX, DOTM",
            "XLSX, XLSM, XLTX, XLYM",
            "PPTX, PPTM, POTX, POTM, POT",
            "TXT",
            "CSV"
          ],
          "enum": [
            "BYTE_ITEM_TYPE_UNSPECIFIED",
            "PLAINTEXT_UTF8",
            "PDF",
            "WORD_DOCUMENT",
            "EXCEL_DOCUMENT",
            "POWERPOINT_DOCUMENT",
            "TXT",
            "CSV"
          ]
        },
        "byteData": {
          "description": "Required. Bytes Data",
          "type": "string",
          "format": "byte"
        },
        "fileLabel": {
          "description": "Optional. Label of the file. This is used to identify the file in the response.",
          "type": "string"
        }
      }
    },
    "MultiLanguageDetectionMetadata": {
      "id": "MultiLanguageDetectionMetadata",
      "description": "Message for Enabling Multi Language Detection.",
      "type": "object",
      "properties": {
        "sourceLanguage": {
          "description": "Optional. Optional Source language of the user prompt. If multi-language detection is enabled and this field is not set, the source language will be automatically detected. When a source language is provided, Model Armor uses it to sanitize the input. In that case the system does not perform auto-detection and relies solely on the specified language. This string field accepts a language code from the ISO-639 standard. For a list of languages supported by Model Armor, see [Model Armor supported languages] (https://cloud.google.com/security-command-center/docs/model-armor-overview#languages-supported). For a comprehensive list of language codes, see [ISO-639](https://cloud.google.com/translate/docs/languages#nmt).",
          "type": "string"
        },
        "enableMultiLanguageDetection": {
          "description": "Optional. Enable detection of multi-language prompts and responses.",
          "type": "boolean"
        }
      }
    },
    "SanitizeUserPromptResponse": {
      "id": "SanitizeUserPromptResponse",
      "description": "Sanitized User Prompt Response.",
      "type": "object",
      "properties": {
        "sanitizationResult": {
          "description": "Output only. Sanitization Result.",
          "readOnly": true,
          "$ref": "SanitizationResult"
        }
      }
    },
    "SanitizationResult": {
      "id": "SanitizationResult",
      "description": "Sanitization result after applying all the filters on input content.",
      "type": "object",
      "properties": {
        "filterMatchState": {
          "description": "Output only. Overall filter match state for Sanitization. The state can have below two values. 1) NO_MATCH_FOUND: No filters in configuration satisfy matching criteria. In other words, input passed all filters. 2) MATCH_FOUND: At least one filter in configuration satisfies matching. In other words, input did not pass one or more filters.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "filterResults": {
          "description": "Output only. Results for all filters where the key is the filter name - either of \"csam\", \"malicious_uris\", \"rai\", \"pi_and_jailbreak\" ,\"sdp\".",
          "readOnly": true,
          "type": "object",
          "additionalProperties": {
            "$ref": "FilterResult"
          }
        },
        "invocationResult": {
          "description": "Output only. A field indicating the outcome of the invocation, irrespective of match status. It can have the following three values: SUCCESS: All filters were executed successfully. PARTIAL: Some filters were skipped or failed execution. FAILURE: All filters were skipped or failed execution.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused. Default value.",
            "All filters were invoked successfully.",
            "Some filters were skipped or failed.",
            "All filters were skipped or failed."
          ],
          "enum": [
            "INVOCATION_RESULT_UNSPECIFIED",
            "SUCCESS",
            "PARTIAL",
            "FAILURE"
          ]
        },
        "sanitizationMetadata": {
          "description": "Output only. Metadata related to Sanitization.",
          "readOnly": true,
          "$ref": "SanitizationMetadata"
        }
      }
    },
    "FilterResult": {
      "id": "FilterResult",
      "description": "Filter Result obtained after Sanitization operations.",
      "type": "object",
      "properties": {
        "raiFilterResult": {
          "description": "Responsible AI filter results.",
          "$ref": "RaiFilterResult"
        },
        "sdpFilterResult": {
          "description": "Sensitive Data Protection results.",
          "$ref": "SdpFilterResult"
        },
        "piAndJailbreakFilterResult": {
          "description": "Prompt injection and Jailbreak filter results.",
          "$ref": "PiAndJailbreakFilterResult"
        },
        "maliciousUriFilterResult": {
          "description": "Malicious URI filter results.",
          "$ref": "MaliciousUriFilterResult"
        },
        "csamFilterFilterResult": {
          "description": "CSAM filter results.",
          "$ref": "CsamFilterResult"
        },
        "virusScanFilterResult": {
          "description": "Virus scan results.",
          "$ref": "VirusScanFilterResult"
        }
      }
    },
    "RaiFilterResult": {
      "id": "RaiFilterResult",
      "description": "Responsible AI Result.",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether the RAI filter was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution state is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Overall filter match state for RAI. Value is MATCH_FOUND if at least one RAI filter confidence level is equal to or higher than the confidence level defined in configuration.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "raiFilterTypeResults": {
          "description": "The map of RAI filter results where key is RAI filter type - either of \"sexually_explicit\", \"hate_speech\", \"harassment\", \"dangerous\".",
          "type": "object",
          "additionalProperties": {
            "$ref": "RaiFilterTypeResult"
          }
        }
      }
    },
    "MessageItem": {
      "id": "MessageItem",
      "description": "Message item to report information, warning or error messages.",
      "type": "object",
      "properties": {
        "messageType": {
          "description": "Type of message.",
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Information related message.",
            "Warning related message.",
            "Error message."
          ],
          "enum": [
            "MESSAGE_TYPE_UNSPECIFIED",
            "INFO",
            "WARNING",
            "ERROR"
          ]
        },
        "message": {
          "description": "The message content.",
          "type": "string"
        }
      }
    },
    "RaiFilterTypeResult": {
      "id": "RaiFilterTypeResult",
      "description": "Detailed Filter result for each of the responsible AI Filter Types.",
      "type": "object",
      "properties": {
        "filterType": {
          "description": "Type of responsible AI filter.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified filter type.",
            "Sexually Explicit.",
            "Hate Speech.",
            "Harassment.",
            "Danger"
          ],
          "enum": [
            "RAI_FILTER_TYPE_UNSPECIFIED",
            "SEXUALLY_EXPLICIT",
            "HATE_SPEECH",
            "HARASSMENT",
            "DANGEROUS"
          ]
        },
        "confidenceLevel": {
          "description": "Confidence level identified for this RAI filter.",
          "type": "string",
          "enumDescriptions": [
            "Same as LOW_AND_ABOVE.",
            "Highest chance of a false positive.",
            "Some chance of false positives.",
            "Low chance of false positives."
          ],
          "enum": [
            "DETECTION_CONFIDENCE_LEVEL_UNSPECIFIED",
            "LOW_AND_ABOVE",
            "MEDIUM_AND_ABOVE",
            "HIGH"
          ]
        },
        "matchState": {
          "description": "Output only. Match state for this RAI filter.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        }
      }
    },
    "SdpFilterResult": {
      "id": "SdpFilterResult",
      "description": "Sensitive Data Protection filter result.",
      "type": "object",
      "properties": {
        "inspectResult": {
          "description": "Sensitive Data Protection Inspection result if inspection is performed.",
          "$ref": "SdpInspectResult"
        },
        "deidentifyResult": {
          "description": "Sensitive Data Protection Deidentification result if deidentification is performed.",
          "$ref": "SdpDeidentifyResult"
        }
      }
    },
    "SdpInspectResult": {
      "id": "SdpInspectResult",
      "description": "Sensitive Data Protection Inspection Result.",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether Sensitive Data Protection inspection was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution state is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Match state for SDP Inspection. Value is MATCH_FOUND if at least one Sensitive Data Protection finding is identified.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "findings": {
          "description": "List of Sensitive Data Protection findings.",
          "type": "array",
          "items": {
            "$ref": "SdpFinding"
          }
        },
        "findingsTruncated": {
          "description": "If true, then there is possibility that more findings were identified and the findings returned are a subset of all findings. The findings list might be truncated because the input items were too large, or because the server reached the maximum amount of resources allowed for a single API call.",
          "type": "boolean"
        }
      }
    },
    "SdpFinding": {
      "id": "SdpFinding",
      "description": "Finding corresponding to Sensitive Data Protection filter.",
      "type": "object",
      "properties": {
        "infoType": {
          "description": "Name of Sensitive Data Protection info type for this finding.",
          "type": "string"
        },
        "likelihood": {
          "description": "Identified confidence likelihood for `info_type`.",
          "type": "string",
          "enumDescriptions": [
            "Default value; same as POSSIBLE.",
            "Highest chance of a false positive.",
            "High chance of a false positive.",
            "Some matching signals. The default value.",
            "Low chance of a false positive.",
            "Confidence level is high. Lowest chance of a false positive."
          ],
          "enum": [
            "SDP_FINDING_LIKELIHOOD_UNSPECIFIED",
            "VERY_UNLIKELY",
            "UNLIKELY",
            "POSSIBLE",
            "LIKELY",
            "VERY_LIKELY"
          ]
        },
        "location": {
          "description": "Location for this finding.",
          "$ref": "SdpFindingLocation"
        }
      }
    },
    "SdpFindingLocation": {
      "id": "SdpFindingLocation",
      "description": "Location of this Sensitive Data Protection Finding within input content.",
      "type": "object",
      "properties": {
        "byteRange": {
          "description": "Zero-based byte offsets delimiting the finding. These are relative to the finding's containing element. Note that when the content is not textual, this references the UTF-8 encoded textual representation of the content. Note: Omitted if content is an image.",
          "$ref": "RangeInfo"
        },
        "codepointRange": {
          "description": "Unicode character offsets delimiting the finding. These are relative to the finding's containing element. Provided when the content is text. Note: Omitted if content is an image.",
          "$ref": "RangeInfo"
        }
      }
    },
    "RangeInfo": {
      "id": "RangeInfo",
      "description": "Half-open range interval [start, end)",
      "type": "object",
      "properties": {
        "start": {
          "description": "For proto3, value cannot be set to 0 unless the field is optional. Ref: https://protobuf.dev/programming-guides/proto3/#default Index of first character (inclusive).",
          "type": "string",
          "format": "int64"
        },
        "end": {
          "description": "Index of last character (exclusive).",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "SdpDeidentifyResult": {
      "id": "SdpDeidentifyResult",
      "description": "Sensitive Data Protection Deidentification Result.",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether Sensitive Data Protection deidentification was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution state is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Match state for Sensitive Data Protection Deidentification. Value is MATCH_FOUND if content is de-identified.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "data": {
          "description": "De-identified data.",
          "$ref": "DataItem"
        },
        "transformedBytes": {
          "description": "Total size in bytes that were transformed during deidentification.",
          "type": "string",
          "format": "int64"
        },
        "infoTypes": {
          "description": "List of Sensitive Data Protection info-types that were de-identified.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "PiAndJailbreakFilterResult": {
      "id": "PiAndJailbreakFilterResult",
      "description": "Prompt injection and Jailbreak Filter Result.",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether Prompt injection and Jailbreak filter was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution state is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Match state for Prompt injection and Jailbreak.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "confidenceLevel": {
          "description": "Confidence level identified for Prompt injection and Jailbreak.",
          "type": "string",
          "enumDescriptions": [
            "Same as LOW_AND_ABOVE.",
            "Highest chance of a false positive.",
            "Some chance of false positives.",
            "Low chance of false positives."
          ],
          "enum": [
            "DETECTION_CONFIDENCE_LEVEL_UNSPECIFIED",
            "LOW_AND_ABOVE",
            "MEDIUM_AND_ABOVE",
            "HIGH"
          ]
        }
      }
    },
    "MaliciousUriFilterResult": {
      "id": "MaliciousUriFilterResult",
      "description": "Malicious URI Filter Result.",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether Malicious URI filter was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution state is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Match state for this Malicious URI. Value is MATCH_FOUND if at least one Malicious URI is found.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "maliciousUriMatchedItems": {
          "description": "List of Malicious URIs found in data.",
          "type": "array",
          "items": {
            "$ref": "MaliciousUriMatchedItem"
          }
        }
      }
    },
    "MaliciousUriMatchedItem": {
      "id": "MaliciousUriMatchedItem",
      "description": "Information regarding malicious URI and its location within the input content.",
      "type": "object",
      "properties": {
        "uri": {
          "description": "Malicious URI.",
          "type": "string"
        },
        "locations": {
          "description": "List of locations where Malicious URI is identified. The `locations` field is supported only for plaintext content i.e. ByteItemType.PLAINTEXT_UTF8",
          "type": "array",
          "items": {
            "$ref": "RangeInfo"
          }
        }
      }
    },
    "CsamFilterResult": {
      "id": "CsamFilterResult",
      "description": "CSAM (Child Safety Abuse Material) Filter Result",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether the CSAM filter was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution state is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Match state for CSAM.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        }
      }
    },
    "VirusScanFilterResult": {
      "id": "VirusScanFilterResult",
      "description": "Virus scan results.",
      "type": "object",
      "properties": {
        "executionState": {
          "description": "Output only. Reports whether Virus Scan was successfully executed or not.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Filter executed successfully",
            "Filter execution was skipped. This can happen due to server-side error or permission issue."
          ],
          "enum": [
            "FILTER_EXECUTION_STATE_UNSPECIFIED",
            "EXECUTION_SUCCESS",
            "EXECUTION_SKIPPED"
          ]
        },
        "messageItems": {
          "description": "Optional messages corresponding to the result. A message can provide warnings or error details. For example, if execution status is skipped then this field provides related reason/explanation.",
          "type": "array",
          "items": {
            "$ref": "MessageItem"
          }
        },
        "matchState": {
          "description": "Output only. Match status for Virus. Value is MATCH_FOUND if the data is infected with a virus.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Matching criteria is not achieved for filters.",
            "Matching criteria is achieved for the filter."
          ],
          "enum": [
            "FILTER_MATCH_STATE_UNSPECIFIED",
            "NO_MATCH_FOUND",
            "MATCH_FOUND"
          ]
        },
        "scannedContentType": {
          "description": "Type of content scanned.",
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Unknown content",
            "Plaintext",
            "PDF Scanning for only PDF is supported."
          ],
          "enum": [
            "SCANNED_CONTENT_TYPE_UNSPECIFIED",
            "UNKNOWN",
            "PLAINTEXT",
            "PDF"
          ]
        },
        "scannedSize": {
          "description": "Size of scanned content in bytes.",
          "type": "string",
          "format": "int64"
        },
        "virusDetails": {
          "description": "List of Viruses identified. This field will be empty if no virus was detected.",
          "type": "array",
          "items": {
            "$ref": "VirusDetail"
          }
        }
      }
    },
    "VirusDetail": {
      "id": "VirusDetail",
      "description": "Details of an identified virus",
      "type": "object",
      "properties": {
        "vendor": {
          "description": "Name of vendor that produced this virus identification.",
          "type": "string"
        },
        "names": {
          "description": "Names of this Virus.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "threatType": {
          "description": "Threat type of the identified virus",
          "type": "string",
          "enumDescriptions": [
            "Unused",
            "Unable to categorize threat",
            "Virus or Worm threat.",
            "Malicious program. E.g. Spyware, Trojan.",
            "Potentially harmful content. E.g. Injected code, Macro",
            "Potentially unwanted content. E.g. Adware."
          ],
          "enum": [
            "THREAT_TYPE_UNSPECIFIED",
            "UNKNOWN",
            "VIRUS_OR_WORM",
            "MALICIOUS_PROGRAM",
            "POTENTIALLY_HARMFUL_CONTENT",
            "POTENTIALLY_UNWANTED_CONTENT"
          ]
        }
      }
    },
    "SanitizationMetadata": {
      "id": "SanitizationMetadata",
      "description": "Message describing Sanitization metadata.",
      "type": "object",
      "properties": {
        "errorCode": {
          "description": "Error code if any.",
          "type": "string",
          "format": "int64"
        },
        "errorMessage": {
          "description": "Error message if any.",
          "type": "string"
        },
        "ignorePartialInvocationFailures": {
          "description": "Passthrough field defined in TemplateMetadata to indicate whether to ignore partial invocation failures.",
          "type": "boolean"
        }
      }
    },
    "SanitizeModelResponseRequest": {
      "id": "SanitizeModelResponseRequest",
      "description": "Sanitize Model Response request.",
      "type": "object",
      "properties": {
        "modelResponseData": {
          "description": "Required. Model response data to sanitize.",
          "$ref": "DataItem"
        },
        "userPrompt": {
          "description": "Optional. User Prompt associated with Model response.",
          "type": "string"
        },
        "multiLanguageDetectionMetadata": {
          "description": "Optional. Metadata related for multi language detection.",
          "$ref": "MultiLanguageDetectionMetadata"
        }
      }
    },
    "SanitizeModelResponseResponse": {
      "id": "SanitizeModelResponseResponse",
      "description": "Sanitized Model Response Response.",
      "type": "object",
      "properties": {
        "sanitizationResult": {
          "description": "Output only. Sanitization Result.",
          "readOnly": true,
          "$ref": "SanitizationResult"
        }
      }
    },
    "ListLocationsResponse": {
      "id": "ListLocationsResponse",
      "description": "The response message for Locations.ListLocations.",
      "type": "object",
      "properties": {
        "locations": {
          "description": "A list of locations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        }
      }
    },
    "Location": {
      "id": "Location",
      "description": "A resource that represents a Google Cloud location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
          "type": "string"
        },
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        },
        "labels": {
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "metadata": {
          "description": "Service-specific metadata. For example the available capacity at the given location.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        }
      }
    }
  },
  "kind": "discovery#restDescription",
  "fullyEncodeReservedExpansion": true,
  "revision": "20260304",
  "documentationLink": "https://cloud.google.com/security-command-center/docs/model-armor-overview",
  "description": "Model Armor helps you protect against risks like prompt injection, harmful content, and data leakage in generative AI applications by letting you define policies that filter user prompts and model responses.",
  "discoveryVersion": "v1",
  "endpoints": [
    {
      "endpointUrl": "https://modelarmor.africa-south1.rep.googleapis.com/",
      "location": "africa-south1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-east1.rep.googleapis.com/",
      "location": "asia-east1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-east2.rep.googleapis.com/",
      "location": "asia-east2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-northeast1.rep.googleapis.com/",
      "location": "asia-northeast1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-northeast2.rep.googleapis.com/",
      "location": "asia-northeast2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-northeast3.rep.googleapis.com/",
      "location": "asia-northeast3",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-south1.rep.googleapis.com/",
      "location": "asia-south1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-south2.rep.googleapis.com/",
      "location": "asia-south2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-southeast1.rep.googleapis.com/",
      "location": "asia-southeast1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.asia-southeast2.rep.googleapis.com/",
      "location": "asia-southeast2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.australia-southeast1.rep.googleapis.com/",
      "location": "australia-southeast1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.australia-southeast2.rep.googleapis.com/",
      "location": "australia-southeast2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-central2.rep.googleapis.com/",
      "location": "europe-central2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-north1.rep.googleapis.com/",
      "location": "europe-north1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-north2.rep.googleapis.com/",
      "location": "europe-north2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-southwest1.rep.googleapis.com/",
      "location": "europe-southwest1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west1.rep.googleapis.com/",
      "location": "europe-west1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west10.rep.googleapis.com/",
      "location": "europe-west10",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west12.rep.googleapis.com/",
      "location": "europe-west12",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west2.rep.googleapis.com/",
      "location": "europe-west2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west3.rep.googleapis.com/",
      "location": "europe-west3",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west4.rep.googleapis.com/",
      "location": "europe-west4",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west6.rep.googleapis.com/",
      "location": "europe-west6",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west8.rep.googleapis.com/",
      "location": "europe-west8",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.europe-west9.rep.googleapis.com/",
      "location": "europe-west9",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.me-central1.rep.googleapis.com/",
      "location": "me-central1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.me-central2.rep.googleapis.com/",
      "location": "me-central2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.me-west1.rep.googleapis.com/",
      "location": "me-west1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.northamerica-northeast1.rep.googleapis.com/",
      "location": "northamerica-northeast1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.northamerica-northeast2.rep.googleapis.com/",
      "location": "northamerica-northeast2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.northamerica-south1.rep.googleapis.com/",
      "location": "northamerica-south1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.southamerica-east1.rep.googleapis.com/",
      "location": "southamerica-east1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.southamerica-west1.rep.googleapis.com/",
      "location": "southamerica-west1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-central1.rep.googleapis.com/",
      "location": "us-central1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-east1.rep.googleapis.com/",
      "location": "us-east1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-east4.rep.googleapis.com/",
      "location": "us-east4",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-east5.rep.googleapis.com/",
      "location": "us-east5",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-east7.rep.googleapis.com/",
      "location": "us-east7",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-south1.rep.googleapis.com/",
      "location": "us-south1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-west1.rep.googleapis.com/",
      "location": "us-west1",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-west2.rep.googleapis.com/",
      "location": "us-west2",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-west3.rep.googleapis.com/",
      "location": "us-west3",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us-west4.rep.googleapis.com/",
      "location": "us-west4",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.us.rep.googleapis.com/",
      "location": "us",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://modelarmor.eu.rep.googleapis.com/",
      "location": "eu",
      "description": "Regional Endpoint"
    }
  ],
  "version_module": true,
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "batchPath": "batch",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  }
}
