{
  "components": {
    "schemas": {
      "ADOBoardsConfigAuthConfig": {
        "description": "AuthConfig holds the credentials used to authenticate with ADO.",
        "properties": {
          "pat": {
            "$ref": "#/components/schemas/AuthConfigPAT"
          }
        },
        "type": "object"
      },
      "ADOBoardsConfigProjectConfig": {
        "description": "ProjectConfig specifies a single ADO project and work item associated.",
        "properties": {
          "child_work_item_type": {
            "description": "Work item type to create as a child under the parent work item.",
            "type": "string"
          },
          "project_guid": {
            "description": "ADO project GUID. Populated server-side during validation.",
            "readOnly": true,
            "type": "string"
          },
          "project_name": {
            "description": "Project name in ADO.",
            "type": "string"
          },
          "tags": {
            "description": "The tags to apply to the ADO work item.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "work_item_type": {
            "description": "Work item type to create, e.g., \"Bug\", \"Task\", \"Epic\".",
            "type": "string"
          }
        },
        "required": [
          "project_name",
          "work_item_type"
        ],
        "type": "object"
      },
      "ADOBoardsConfigUserConfig": {
        "description": "UserConfig holds org URL and auth provided directly by the user.",
        "properties": {
          "auth": {
            "$ref": "#/components/schemas/ADOBoardsConfigAuthConfig"
          },
          "org_url": {
            "description": "The URL of the ADO organization (e.g. https://dev.azure.com/myorg).",
            "type": "string"
          }
        },
        "required": [
          "org_url",
          "auth"
        ],
        "type": "object"
      },
      "AIProviderKeyServiceCreateAIProviderKeyBody": {
        "description": "AIProviderKey stores a customer-provided (bring-your-own-key) LLM\ncredential and entry point for a specific AI provider. When one is\nconfigured and enabled, the platform routes the tenant's AI requests\nthrough the customer's own provider account instead of Endor-managed\ncredentials.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AIProviderKeySpec"
          },
          "tenant_meta": {
            "description": "The tenant metadata restricts access to a specific tenant.",
            "title": "The tenant metadata restricts access to a specific tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the AI provider key.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "AIProviderKeyServiceUpdateAIProviderKeyBody": {
        "description": "Request to update the AI provider key.",
        "properties": {
          "object": {
            "description": "The AI provider key to update.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1AIProviderKeySpec"
              },
              "tenant_meta": {
                "description": "The tenant metadata restricts access to a specific tenant.",
                "title": "The tenant metadata restricts access to a specific tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the AI provider key.",
                "readOnly": true,
                "type": "string"
              }
            },
            "title": "The AI provider key to update.",
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "AIResultAILevel": {
        "default": "AI_LEVEL_UNSPECIFIED",
        "description": "AI severity level.\n\n - AI_LEVEL_CRITICAL: Critical AI SAST.\n - AI_LEVEL_HIGH: High AI SAST.\n - AI_LEVEL_MEDIUM: Medium AI SAST.\n - AI_LEVEL_LOW: Low AI SAST.",
        "enum": [
          "AI_LEVEL_UNSPECIFIED",
          "AI_LEVEL_CRITICAL",
          "AI_LEVEL_HIGH",
          "AI_LEVEL_MEDIUM",
          "AI_LEVEL_LOW"
        ],
        "type": "string"
      },
      "AIResultSAST": {
        "properties": {
          "attack_vector": {
            "description": "Attack vector breakdown table when no exploit reproduction is emitted (the \"## Attack Vector\" section).",
            "type": "string"
          },
          "classification": {
            "$ref": "#/components/schemas/v1FindingClassification"
          },
          "context": {
            "$ref": "#/components/schemas/v1AISASTContext"
          },
          "cwes": {
            "description": "The CWEs of the vulnerability.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataflow": {
            "description": "Deprecated: use call_stack instead.\nOne or more source locations representing the data flow path from a source to a sink.\nThe locations are ordered and include the source, any intermediate nodes, and the sink.\nIf only a single location is provided, it represents the sink location only.",
            "items": {
              "$ref": "#/components/schemas/v1SourceLocation"
            },
            "type": "array"
          },
          "exploit_reproduction": {
            "description": "Step-by-step exploit reproduction for high/critical true positives (the \"## Exploit Reproduction\" section).",
            "type": "string"
          },
          "fixed_strikes": {
            "description": "Strictly consecutive scheduled-refresh FIXED verdicts. Deletion requires\ntwo: the first only stamps this counter and keeps the finding due. Reset\nby any non-FIXED outcome (STILL_PRESENT, UNKNOWN, agent error).",
            "format": "int32",
            "type": "integer"
          },
          "language": {
            "description": "Programming language of the file where this result was found.",
            "type": "string"
          },
          "last_scan": {
            "description": "When the scheduled AI SAST refresh last revalidated this finding. Unset\nfor findings created before refresh tracking; drives refresh staleness.",
            "format": "date-time",
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/v1SourceLocation"
          },
          "refresh_attempts": {
            "description": "Consecutive inconclusive scheduled-refresh attempts (agent error or\nUNKNOWN verdict); at the retry cap the refresh re-baselines last_scan\ninstead of retrying forever. Reset on a definitive verdict.",
            "format": "int32",
            "type": "integer"
          },
          "remediation": {
            "description": "Recommended remediation, including any unified-diff fix (the \"## Remediation Guidance\" section).",
            "type": "string"
          },
          "security_controls": {
            "description": "Security controls assessment table (the \"## Security Controls\" section).",
            "type": "string"
          },
          "severity_scoring": {
            "description": "Severity scoring breakdown (the \"## Severity Scoring\" section).",
            "type": "string"
          },
          "summary": {
            "description": "Short prose summary of the vulnerability (the \"## Summary\" section).",
            "type": "string"
          },
          "validation_outcome": {
            "description": "Validation outcome for unknown findings (the \"## Validation Outcome\" section).",
            "type": "string"
          },
          "verification_scorecard": {
            "description": "Verification scorecard with per-criterion verdicts (the \"## Verification Scorecard\" section).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "AISASTStatusAISASTScanState": {
        "default": "AISAST_SCAN_STATE_UNSPECIFIED",
        "description": "Tracks the state of the last AI SAST scan pipeline (index + scan).\nWritten before and after each phase so the DB always reflects whether\nthe phase completed, even if the process is killed.",
        "enum": [
          "AISAST_SCAN_STATE_UNSPECIFIED",
          "AISAST_SCAN_STATE_INDEX_STARTED",
          "AISAST_SCAN_STATE_INDEX_SUCCEEDED",
          "AISAST_SCAN_STATE_INDEX_FAILED",
          "AISAST_SCAN_STATE_SCAN_STARTED",
          "AISAST_SCAN_STATE_SCAN_SUCCEEDED",
          "AISAST_SCAN_STATE_SCAN_FAILED"
        ],
        "type": "string"
      },
      "AISastAnalysisParametersAISastAnalysisMode": {
        "default": "AI_SAST_ANALYSIS_MODE_UNSPECIFIED",
        "description": " - AI_SAST_ANALYSIS_MODE_UNSPECIFIED: Options available for peforming AI triage of Sast Findings.\n - AI_SAST_ANALYSIS_MODE_AGENT_FALLBACK: AI_SAST_ANALYSIS_AGENT_ZEROSHOT_CODE_API = 4; // TODO add when ready.",
        "enum": [
          "AI_SAST_ANALYSIS_MODE_UNSPECIFIED",
          "AI_SAST_ANALYSIS_MODE_AGENT",
          "AI_SAST_ANALYSIS_MODE_AGENT_DEEP",
          "AI_SAST_ANALYSIS_MODE_AGENT_FALLBACK"
        ],
        "type": "string"
      },
      "AISastCustomerContextServiceCreateAISastCustomerContextBody": {
        "description": "Customer-provided context scoped to projects using policy-style selectors.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagates system-level context settings to child namespaces when enabled.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AISastCustomerContextSpec"
          },
          "tenant_meta": {
            "description": "Tenant related data for the tenant containing the resource.",
            "type": "object"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "AISastCustomerContextServiceUpdateAISastCustomerContextBody": {
        "description": "Update request for an AI SAST customer context.",
        "properties": {
          "object": {
            "description": "The customer context to update.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Propagates system-level context settings to child namespaces when enabled.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1AISastCustomerContextSpec"
              },
              "tenant_meta": {
                "description": "Tenant related data for the tenant containing the resource.",
                "type": "object"
              },
              "uuid": {
                "readOnly": true,
                "type": "string"
              }
            },
            "title": "The customer context to update.",
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "APIKeyServiceCreateAPIKeyBody": {
        "description": "Manages the system API keys.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether the API key can be used for the child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1APIKeySpec"
          },
          "tenant_meta": {
            "description": "APIKeys are namespaced objects.",
            "title": "APIKeys are namespaced objects.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of an API key resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "AffectedSource": {
        "default": "SOURCE_UNSPECIFIED",
        "enum": [
          "SOURCE_UNSPECIFIED",
          "SOURCE_OSV",
          "SOURCE_ENDOR",
          "SOURCE_OVAL"
        ],
        "type": "string"
      },
      "ArtifactSignatureServiceCreateArtifactSignatureBody": {
        "description": "Represents an artifact signature object.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ArtifactSignatureSpec"
          },
          "tenant_meta": {
            "description": "Tenant metadata required for artifact signature requests.",
            "title": "Tenant metadata required for artifact signature requests.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of an artifact signature object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta",
          "spec"
        ],
        "type": "object"
      },
      "ArtifactSignatureServiceUpdateArtifactSignatureBody": {
        "description": "Request to update an artifact signature.",
        "properties": {
          "object": {
            "description": "Represents an artifact signature object.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ArtifactSignatureSpec"
              },
              "tenant_meta": {
                "description": "Tenant metadata required for artifact signature requests.",
                "title": "Tenant metadata required for artifact signature requests.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of an artifact signature object.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "tenant_meta",
          "spec"
        ],
        "type": "object"
      },
      "AsyncJobServiceCreateAsyncJobBody": {
        "description": "AsyncJob is an asynchronous job — SBOM export or VEX export\ntypes today, with more types added as they ship.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AsyncJobSpec"
          },
          "tenant_meta": {
            "description": "Tenant the async job belongs to.",
            "title": "Tenant the async job belongs to.",
            "type": "object"
          },
          "uuid": {
            "description": "UUID of the AsyncJob. Assigned by the server on Create; use it to\nfetch the job via GetAsyncJob.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "AuthConfigPAT": {
        "description": "PAT authenticates with ADO using a Personal Access Token.",
        "properties": {
          "token": {
            "description": "The Personal Access Token required.",
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "AuthenticationLogServiceCreateAuthenticationLogBody": {
        "description": "Represents a CRUD operation on a message.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AuthenticationLogSpec"
          },
          "tenant_meta": {
            "description": "Namespace of the message that is accessed.",
            "title": "Namespace of the message that is accessed.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the authentication log.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "AuthorizationPolicyServiceCreateAuthorizationPolicyBody": {
        "description": "Represents an authorization policy in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in the child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AuthorizationPolicySpec"
          },
          "tenant_meta": {
            "description": "Authorization policies are associated with a tenant.",
            "title": "Authorization policies are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the AuthorizationPolicy resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "AuthorizationPolicyServiceUpdateAuthorizationPolicyBody": {
        "description": "Request to update an authorization policy.",
        "properties": {
          "object": {
            "description": "Represents an authorization policy in the system.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates that the object should be visible in the child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1AuthorizationPolicySpec"
              },
              "tenant_meta": {
                "description": "Authorization policies are associated with a tenant.",
                "title": "Authorization policies are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the AuthorizationPolicy resource.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "AutoDetectResultDetectedToolChainVersion": {
        "description": "Message for a detected toolchain version.",
        "properties": {
          "file": {
            "description": "File where the version was detected.",
            "type": "string"
          },
          "version": {
            "description": "Version number found in the file.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "AutoDetectResultDetectedToolChainVersionList": {
        "description": "Message for detected toolchain versions.",
        "properties": {
          "values": {
            "description": "Toolchain file versions.",
            "items": {
              "$ref": "#/components/schemas/AutoDetectResultDetectedToolChainVersion"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "AutomatedPRParametersLanguageParameters": {
        "properties": {
          "assignees": {
            "description": "List of assignees for the pull request.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "description": "List of labels for the pull request.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reviewers": {
            "description": "List of reviewers for the pull request.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "AutomatedScanParametersBazelConfiguration": {
        "properties": {
          "bazel_exclude_targets": {
            "description": "targets that should be excluded.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "bazel_include_targets": {
            "description": "targets that should be included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "bazel_show_internal_targets": {
            "description": "show internal targets as dependencies.",
            "type": "boolean"
          },
          "bazel_targets_query": {
            "description": "query that should be used for bazel scans.",
            "type": "string"
          },
          "bazel_workspace_path": {
            "description": "bazel workspace path.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "BatchFileSegmentsServiceCreateBatchFileSegmentsBody": {
        "description": "Request used to create or delete multiple file segment objects.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1BatchFileSegmentsSpec"
          },
          "tenant_meta": {
            "description": "Namespace of the file segments.",
            "title": "Namespace of the file segments.",
            "type": "object"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "BatchNotificationServiceCreateBatchNotificationBody": {
        "description": "Request to create multiple Notification objects.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1BatchNotificationSpec"
          },
          "tenant_meta": {
            "description": "Information about the tenant.",
            "title": "Information about the tenant.",
            "type": "object"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "BomDependency": {
        "properties": {
          "abstract": {
            "description": "Whether this is an abstract dependency, such as a secondary BOM file.",
            "type": "boolean"
          },
          "cocoapod_dependency_scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "composition_metadata": {
            "$ref": "#/components/schemas/v1ContainerCompositionMetadata"
          },
          "conan_dependency_scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "container_layers": {
            "description": "A list of layers where a dependency is introduced in final the container\nimage. It is an optional field. Each entry contains the layer ID (the\nSHA256 digest of the layer) and the file locations within the layer that\nindicate the presence of the dependency in the container.",
            "items": {
              "$ref": "#/components/schemas/v1ContainerDependencyLayer"
            },
            "type": "array"
          },
          "dependency_scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "eol_timestamp": {
            "description": "End of life timestamp of the dependency if known.",
            "format": "date-time",
            "type": "string"
          },
          "file_location_remote_paths": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Maps each entry in file_locations (the local, scanned-workspace path)\nto the matched path in the dependency's own upstream source, when\nknown. Only populated for IMPORTED_TYPE_SEGMENT_MATCH dependencies.",
            "type": "object"
          },
          "file_locations": {
            "description": "An optional field for BOM dependencies that are either\nvendored or discovered in containers and identify the list of file\nlocations that this dependency is seen at.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "gem_dependency_scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyGemDependencySpecScope"
          },
          "github_action_kind": {
            "$ref": "#/components/schemas/PackageVersionDependencyGitHubActionDependencySpecScope"
          },
          "golang_dependency_scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyGoDependencySpecScope"
          },
          "hugging_face_dependency_scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "import_path": {
            "description": "The path the source imports this dependency by, set only when it differs\nfrom the path inside name. Empty whenever the two agree, which is every\nordinary dependency.\n\nA Golang \"replace\" that redirects one module path to another leaves the\nsource importing the original path, so name carries the module that\nsupplied the code and this carries the path the compiler sees.",
            "type": "string"
          },
          "imported_type": {
            "$ref": "#/components/schemas/DependencyImportedType"
          },
          "js_dependency_scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyNpmDependencySpecScope"
          },
          "locked": {
            "description": "Set to true if the dependency is fixed to a specific version by a\nlock file at install time (outcome).\n\nIf a dependency is locked, but not pinned, it could drift if the\nlock file is regenerated (for example, by 'npm update').",
            "type": "boolean"
          },
          "maven_dependency_scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyMavenDependencySpecScope"
          },
          "name": {
            "type": "string"
          },
          "nuget_dependency_scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "packagist_dependency_scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyPackagistDependencySpecScope"
          },
          "patched": {
            "description": "patched indicates whether the dependency version was patched or not.",
            "type": "boolean"
          },
          "pinned": {
            "description": "Set to true of the dependency is fixed to a specific version by a\nmanifest file (intent).\n\nFor example, in package.json, \"lodash\": \"4.17.21\" is pinned while\n\"lodash\": \"^4.0.0\" is not (it's a range, \"any 4.x\").",
            "type": "boolean"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "public": {
            "description": "A boolean to know if the dependency is public or not.\nThis field might not be set.",
            "type": "boolean"
          },
          "purl": {
            "description": "purl is the package URL notation of the dependency. Populated only for\ncontainers and OS packages.",
            "type": "string"
          },
          "pypi_dependency_scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyPypiDependencySpecScope"
          },
          "release_date": {
            "description": "The date that the dependency was released, if known.",
            "format": "date-time",
            "type": "string"
          },
          "runtime_files": {
            "description": "A list of files accessed when a dependency is called at runtime in the container image.\nThis is an optional field. It is only set when a\ndependency is found to be used at runtime in the container image.",
            "items": {
              "$ref": "#/components/schemas/v1ContainerRuntimeDependencyFile"
            },
            "type": "array"
          },
          "rust_dependency_kind": {
            "$ref": "#/components/schemas/CargoDependencySpecDependencyKind"
          },
          "source_repository_http_clone_url": {
            "description": "The HTTP clone URL of the dependency if found. This field might not be\nset.",
            "type": "string"
          },
          "source_repository_ref": {
            "description": "The ref of the source repsotiory. This can be a tag or a commit SHA.\nThis field might not be set.",
            "type": "string"
          },
          "swift_dependency_scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "user_app_dep": {
            "description": "For container BOMs, set to true if this is a user application (i.e. the user associated it with an SCA scan).",
            "type": "boolean"
          },
          "vendored": {
            "description": "Whether this is dependency comes from vendored code or not.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "BomDependencyFile": {
        "properties": {
          "path": {
            "description": "Relative path of the dependency file used to compute the BOM.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "CVSSNodeCpeMatch": {
        "properties": {
          "criteria": {
            "type": "string"
          },
          "match_criteria_id": {
            "type": "string"
          },
          "version_end_excluding": {
            "type": "string"
          },
          "version_end_including": {
            "type": "string"
          },
          "version_start_excluding": {
            "type": "string"
          },
          "version_start_including": {
            "type": "string"
          },
          "vulnerable": {
            "type": "boolean"
          }
        },
        "required": [
          "vulnerable",
          "criteria",
          "match_criteria_id"
        ],
        "type": "object"
      },
      "CVSSV3SeverityLevel": {
        "default": "LEVEL_UNSPECIFIED",
        "enum": [
          "LEVEL_UNSPECIFIED",
          "LEVEL_NONE",
          "LEVEL_LOW",
          "LEVEL_MEDIUM",
          "LEVEL_HIGH",
          "LEVEL_CRITICAL"
        ],
        "type": "string"
      },
      "CVSSV4SeverityV4Level": {
        "default": "V4_LEVEL_UNSPECIFIED",
        "enum": [
          "V4_LEVEL_UNSPECIFIED",
          "V4_LEVEL_NONE",
          "V4_LEVEL_LOW",
          "V4_LEVEL_MEDIUM",
          "V4_LEVEL_HIGH",
          "V4_LEVEL_CRITICAL"
        ],
        "type": "string"
      },
      "CargoDependencySpecCargoVersionReq": {
        "description": "A crate with a matching name and repository can't be bound to a\ndependency if its version does not match this requirement.",
        "properties": {
          "major": {
            "format": "uint64",
            "type": "string"
          },
          "minor": {
            "format": "uint64",
            "type": "string"
          },
          "op": {
            "$ref": "#/components/schemas/CargoVersionReqOp"
          },
          "patch": {
            "description": "/ Patch is only allowed if minor is present.",
            "format": "uint64",
            "type": "string"
          },
          "pre": {
            "type": "string"
          }
        },
        "required": [
          "op",
          "major"
        ],
        "type": "object"
      },
      "CargoDependencySpecCfg": {
        "description": "A cfg expression, like cfg(windows).",
        "properties": {
          "expr": {
            "$ref": "#/components/schemas/CfgCfgExpr"
          }
        },
        "required": [
          "expr"
        ],
        "type": "object"
      },
      "CargoDependencySpecCfgAny": {
        "properties": {
          "expr": {
            "items": {
              "$ref": "#/components/schemas/CfgCfgExpr"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "CargoDependencySpecCfgValue": {
        "properties": {
          "name": {
            "description": "A named cfg value, like unix.",
            "type": "string"
          },
          "pair": {
            "$ref": "#/components/schemas/CfgKeyPair"
          }
        },
        "type": "object"
      },
      "CargoDependencySpecDependencyKind": {
        "default": "DEPENDENCY_KIND_UNSPECIFIED",
        "description": " - DEPENDENCY_KIND_UNSPECIFIED: Unspecified kind indicates that we are unsure about the type of\ndependency.\n - DEPENDENCY_KIND_NORMAL: Normal kind is the default type of dependency.\n - DEPENDENCY_KIND_DEVELOPMENT: Development kind indicates that the dependency is used for testing\npurposes.\n - DEPENDENCY_KIND_BUILD: Build kind indicates that the dependency is solely used for buildingthe\npackage.",
        "enum": [
          "DEPENDENCY_KIND_UNSPECIFIED",
          "DEPENDENCY_KIND_NORMAL",
          "DEPENDENCY_KIND_DEVELOPMENT",
          "DEPENDENCY_KIND_BUILD"
        ],
        "type": "string"
      },
      "CargoDependencySpecNamedPlatform": {
        "description": "A named platform, like x86_64-apple-darwin.",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "CargoVersionReqOp": {
        "default": "OP_UNSPECIFIED",
        "enum": [
          "OP_UNSPECIFIED",
          "OP_EXACT",
          "OP_GREATER",
          "OP_GREATEREQ",
          "OP_LESS",
          "OP_LESSEQ",
          "OP_TILDE",
          "OP_CARET",
          "OP_WILDCARD"
        ],
        "type": "string"
      },
      "CfgAll": {
        "properties": {
          "expr": {
            "items": {
              "$ref": "#/components/schemas/CfgCfgExpr"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "CfgCfgExpr": {
        "properties": {
          "all": {
            "$ref": "#/components/schemas/CfgAll"
          },
          "any": {
            "$ref": "#/components/schemas/CargoDependencySpecCfgAny"
          },
          "not": {
            "$ref": "#/components/schemas/CfgNot"
          },
          "value": {
            "$ref": "#/components/schemas/CargoDependencySpecCfgValue"
          }
        },
        "type": "object"
      },
      "CfgKeyPair": {
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "CfgNot": {
        "properties": {
          "expr": {
            "$ref": "#/components/schemas/CfgCfgExpr"
          }
        },
        "required": [
          "expr"
        ],
        "type": "object"
      },
      "ChecksumHashAlgorithm": {
        "default": "HASH_ALGORITHM_UNSPECIFIED",
        "description": "An enum with the possible hash functions used to create checksum value.\n\n - HASH_ALGORITHM_MD5: HASH_ALGORITHM_MD5 for MD5 hash function.\n - HASH_ALGORITHM_SHA1: HASH_ALGORITHM_SHA1 for SHA1 hash function.\n - HASH_ALGORITHM_SHA224: HASH_ALGORITHM_SHA224 for SHA224 hash function.\n - HASH_ALGORITHM_SHA256: HASH_ALGORITHM_SHA256 for SHA256 hash function.\n - HASH_ALGORITHM_SHA384: HASH_ALGORITHM_SHA384 for SHA384 hash function.\n - HASH_ALGORITHM_SHA512: HASH_ALGORITHM_SHA512 for SHA512 hash function.",
        "enum": [
          "HASH_ALGORITHM_UNSPECIFIED",
          "HASH_ALGORITHM_MD5",
          "HASH_ALGORITHM_SHA1",
          "HASH_ALGORITHM_SHA224",
          "HASH_ALGORITHM_SHA256",
          "HASH_ALGORITHM_SHA384",
          "HASH_ALGORITHM_SHA512"
        ],
        "type": "string"
      },
      "CiCdToolEvidence": {
        "properties": {
          "app_id": {
            "description": "Unigue GitHub application ID.",
            "format": "int64",
            "type": "string"
          },
          "app_permissions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Permissions granted to the GitHub application.",
            "type": "object"
          },
          "app_repo_url": {
            "description": "URL of the repository the GitHub application has access to.",
            "type": "string"
          },
          "app_settings_url": {
            "description": "URL of the app installation settings.",
            "type": "string"
          },
          "app_slug": {
            "description": "Unique GitHub application slug.",
            "type": "string"
          },
          "badge": {
            "description": "Badge URL.",
            "type": "string"
          },
          "badge_regex": {
            "description": "Regex used to identify badge URL.",
            "type": "string"
          },
          "file_path": {
            "description": "Relative path to file.",
            "type": "string"
          },
          "file_regex": {
            "description": "Regex used to identify file name.",
            "type": "string"
          },
          "line_content": {
            "description": "Line content.",
            "type": "string"
          },
          "line_number": {
            "description": "Line number in file.",
            "format": "int32",
            "type": "integer"
          },
          "line_regex": {
            "description": "Regex used to identify line.",
            "type": "string"
          },
          "parent_tool_name": {
            "description": "Name of parent tool that this evidence belongs to.\nFor example, the parent tool is \"ghactions\" if a reference to \"uses: endorlabs\" is found in a GitHub Actions workflow file.",
            "type": "string"
          },
          "url": {
            "description": "Webhook payload URL.",
            "type": "string"
          },
          "url_regex": {
            "description": "Regex used to identify webhook URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "CisScorecardCisBenchmark": {
        "properties": {
          "audit": {
            "description": "CIS benchmark requirement audit procedure.",
            "type": "string"
          },
          "category": {
            "$ref": "#/components/schemas/v1CisCategory"
          },
          "criteria": {
            "description": "CIS benchmark requirement title.",
            "type": "string"
          },
          "description": {
            "description": "CIS benchmark requirement description.",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/v1CisReqId"
          },
          "index": {
            "description": "CIS benchmark requirement index. For example, \"2.1.4\".",
            "type": "string"
          },
          "rationale": {
            "description": "CIS benchmark requirement rationale statement.",
            "type": "string"
          },
          "remediation": {
            "description": "CIS benchmark requirement remediation procedure.",
            "type": "string"
          },
          "satisfied": {
            "description": "True if this CIS benchmark requirement is satisfied.",
            "type": "boolean"
          },
          "sub_category": {
            "$ref": "#/components/schemas/v1CisSubCategory"
          },
          "version": {
            "description": "CIS benchmark requirement version. For example, \"v1.0.0\".",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "ConfigCVSSNode": {
        "properties": {
          "cpe_match": {
            "items": {
              "$ref": "#/components/schemas/CVSSNodeCpeMatch"
            },
            "type": "array"
          },
          "negate": {
            "type": "boolean"
          },
          "operator": {
            "$ref": "#/components/schemas/ConfigOperator"
          }
        },
        "required": [
          "operator",
          "cpe_match"
        ],
        "type": "object"
      },
      "ConfigOperator": {
        "default": "OPERATOR_UNSPECIFIED",
        "enum": [
          "OPERATOR_UNSPECIFIED",
          "OPERATOR_AND",
          "OPERATOR_OR"
        ],
        "type": "string"
      },
      "ContainerContextDiffRecordScope": {
        "default": "RECORD_SCOPE_UNSPECIFIED",
        "description": "Which finding types a stored suppression covers. Members mirror\nFindingRecordScope by number.\n\n - RECORD_SCOPE_UNSPECIFIED: Unset; treated as RECORD_SCOPE_ALL.\n - RECORD_SCOPE_ALL: Every finding common with the baseline.\n - RECORD_SCOPE_VULNERABILITY: Vulnerability findings only.",
        "enum": [
          "RECORD_SCOPE_UNSPECIFIED",
          "RECORD_SCOPE_ALL",
          "RECORD_SCOPE_VULNERABILITY"
        ],
        "type": "string"
      },
      "ContainerProfileDetailsApplicationType": {
        "default": "APPLICATION_TYPE_UNSPECIFIED",
        "description": "ApplicationType represents the type of the application.\n\n - APPLICATION_TYPE_UNSPECIFIED: Unspecified application type.\n - APPLICATION_TYPE_CLI: CLI application type.\nIt is typically set when container image does not have any exposed ports.\n - APPLICATION_TYPE_SERVER: Server application type.\nIt is typically set when container image has exposed ports.",
        "enum": [
          "APPLICATION_TYPE_UNSPECIFIED",
          "APPLICATION_TYPE_CLI",
          "APPLICATION_TYPE_SERVER"
        ],
        "type": "string"
      },
      "ContainerProfileDetailsProfileType": {
        "default": "PROFILE_TYPE_UNSPECIFIED",
        "description": "ProfileType represents the type of the profile.\n\n - PROFILE_TYPE_UNSPECIFIED: Unspecified profile type.\n - PROFILE_TYPE_BASIC: Basic profile type.\nIt Indicates that a container image was profiled using a built in profiling mechanism.\n - PROFILE_TYPE_INSTRUMENTED: Instrumented profile type.\nIt Indicates that a container image was profiled using an instrumented profiling mechanism.",
        "enum": [
          "PROFILE_TYPE_UNSPECIFIED",
          "PROFILE_TYPE_BASIC",
          "PROFILE_TYPE_INSTRUMENTED"
        ],
        "type": "string"
      },
      "ContainerProfileErrorContainerProfileStatus": {
        "default": "CONTAINER_PROFILE_STATUS_UNSPECIFIED",
        "description": "ContainerProfileStatus indicates the result of profiling a container image.\n\n - CONTAINER_PROFILE_STATUS_UNSPECIFIED: CONTAINER_PROFILE_STATUS_UNSPECIFIED indicates that the container profile\nstatus has not been set or is unknown.\n - CONTAINER_PROFILE_STATUS_PLUGIN_NOT_FOUND: CONTAINER_PROFILE_STATUS_PLUGIN_NOT_FOUND indicates that the Mint toolkit\nplugin required for profiling the container image was not found.\nThis typically occurs when the profiling environment is misconfigured\nor the required Mint toolkit plugin is not installed.\n - CONTAINER_PROFILE_STATUS_TIMEOUT: CONTAINER_PROFILE_STATUS_TIMEOUT indicates that the profiling operation\nexceeded the allowed time limit.\nThis typically occurs for complex container images that require\nextensive processing time or when system resources are constrained.\n - CONTAINER_PROFILE_STATUS_IMAGE_TOO_LARGE: CONTAINER_PROFILE_STATUS_IMAGE_TOO_LARGE indicates that the container\nimage exceeds the maximum allowed size for profiling.\nThis typically occurs when the uncompressed container image size\nexceeds the system's configured size limit for profiling operations.\n - CONTAINER_PROFILE_STATUS_IMAGE_NOT_RUNNABLE: CONTAINER_PROFILE_STATUS_IMAGE_NOT_RUNNABLE indicates that the container\nimage cannot be executed without additional configuration.\nThis typically occurs when the container image requires specific\nenvironment variables, volumes, network configuration, or entrypoint\narguments that were not provided during the profiling attempt.\n - CONTAINER_PROFILE_STATUS_MINT_PLUGIN_ERROR: CONTAINER_PROFILE_STATUS_MINT_PLUGIN_ERROR indicates that the Mint plugin\nencountered an error while profiling the container image.\nThis typically occurs when the Mint plugin encounters an unexpected\ncondition, such as incompatible image format, corrupted layers, or\ninternal plugin failures during the profiling process.\n - CONTAINER_PROFILE_STATUS_ARTIFACTS_NOT_FOUND: CONTAINER_PROFILE_STATUS_ARTIFACTS_NOT_FOUND indicates that the expected\nprofiling artifacts were not found after the profiling operation completed.\nThis typically occurs when the profiling process runs successfully but\nfails to produce or persist the expected output artifacts, possibly due\nto storage issues or unexpected container behavior during profiling.\n - CONTAINER_PROFILE_STATUS_INTERNAL_ERROR: CONTAINER_PROFILE_STATUS_INTERNAL_ERROR indicates that an internal error occurred while profiling the container image.\nThis typically occurs when an unexpected error occurs during the profiling process,\nsuch as a programming error or an unexpected system failure.\n - CONTAINER_PROFILE_STATUS_PLUGIN_SETUP: CONTAINER_PROFILE_STATUS_PLUGIN_SETUP indicates that an error occurred while setting up the Mint toolkit plugin.\nThis typically occurs when there is an error in setting up the Mint toolkit plugin.\n - CONTAINER_PROFILE_STATUS_PROFILE_LOAD: CONTAINER_PROFILE_STATUS_PROFILE_LOAD indicates that the profiling data was not found or corrupted.\nIndicates that the profiling is successfully completed but the profiling data was not found or corrupted.\nIt can happen if the creport.json file is not found or corrupted.\n - CONTAINER_PROFILE_STATUS_MINT_VERSION_INCOMPATIBLE: CONTAINER_PROFILE_STATUS_MINT_VERSION_INCOMPATIBLE indicates that the Mint version is incompatible with the profiling requirements.\nThis typically occurs when the Mint version is not compatible with the profiling requirements.\n - CONTAINER_PROFILE_STATUS_IMAGE_TYPE_BASE: CONTAINER_PROFILE_STATUS_IMAGE_TYPE_BASE indicates that the container\nimage was identified as a base image (OS distribution or language runtime)\nand dynamic profiling was skipped because base images contain no\napplication code to profile.",
        "enum": [
          "CONTAINER_PROFILE_STATUS_UNSPECIFIED",
          "CONTAINER_PROFILE_STATUS_PLUGIN_NOT_FOUND",
          "CONTAINER_PROFILE_STATUS_TIMEOUT",
          "CONTAINER_PROFILE_STATUS_IMAGE_TOO_LARGE",
          "CONTAINER_PROFILE_STATUS_IMAGE_NOT_RUNNABLE",
          "CONTAINER_PROFILE_STATUS_MINT_PLUGIN_ERROR",
          "CONTAINER_PROFILE_STATUS_ARTIFACTS_NOT_FOUND",
          "CONTAINER_PROFILE_STATUS_INTERNAL_ERROR",
          "CONTAINER_PROFILE_STATUS_PLUGIN_SETUP",
          "CONTAINER_PROFILE_STATUS_PROFILE_LOAD",
          "CONTAINER_PROFILE_STATUS_MINT_VERSION_INCOMPATIBLE",
          "CONTAINER_PROFILE_STATUS_IMAGE_TYPE_BASE"
        ],
        "type": "string"
      },
      "ContextContextType": {
        "default": "CONTEXT_TYPE_UNSPECIFIED",
        "description": " - CONTEXT_TYPE_MAIN: Objects from a scan of the default branch.\nAll objects in the oss namespace are in the main context.\nThe context id is always \"default\".\n - CONTEXT_TYPE_EXTERNAL: Indicates that this object is a copy/temporary value of an object in\nanother project. Used for same-tenant dependencies. In source code\nreference this is equivalent to \"vendor\" folders. Package versions in\nthe external context are only scanned for call graphs. No other\noperations are performed on them.\n - CONTEXT_TYPE_CI_RUN: Objects from a PR scan. The context id is the PR UUID.\nObjects in this context are deleted after 30 days.\n - CONTEXT_TYPE_SBOM: Objects from an SBOM scan. The context id is the SBOM serial number or\nsome other unique identifier.\n - CONTEXT_TYPE_REF: Objects from a scan of a specific branch. The context id is the branch\nreference name.",
        "enum": [
          "CONTEXT_TYPE_UNSPECIFIED",
          "CONTEXT_TYPE_MAIN",
          "CONTEXT_TYPE_EXTERNAL",
          "CONTEXT_TYPE_CI_RUN",
          "CONTEXT_TYPE_SBOM",
          "CONTEXT_TYPE_REF"
        ],
        "type": "string"
      },
      "CriticalIdentity": {
        "properties": {
          "docker_reference": {
            "description": "The reference used to refer to or download the image.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "CriticalImage": {
        "properties": {
          "docker_manifest_digest": {
            "description": "The manifest digest of the signed container image.",
            "type": "string"
          },
          "docker_manifest_image": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "CvssDataV2AccessComplexity": {
        "default": "ACCESS_COMPLEXITY_UNSPECIFIED",
        "enum": [
          "ACCESS_COMPLEXITY_UNSPECIFIED",
          "ACCESS_COMPLEXITY_HIGH",
          "ACCESS_COMPLEXITY_MEDIUM",
          "ACCESS_COMPLEXITY_LOW"
        ],
        "type": "string"
      },
      "CvssDataV2Auth": {
        "default": "AUTH_UNSPECIFIED",
        "enum": [
          "AUTH_UNSPECIFIED",
          "AUTH_MULTIPLE",
          "AUTH_SINGLE",
          "AUTH_NONE"
        ],
        "type": "string"
      },
      "CvssDataV2CollateralDamagePotential": {
        "default": "COLLATERAL_DAMAGE_POTENTIAL_UNSPECIFIED",
        "enum": [
          "COLLATERAL_DAMAGE_POTENTIAL_UNSPECIFIED",
          "COLLATERAL_DAMAGE_POTENTIAL_NONE",
          "COLLATERAL_DAMAGE_POTENTIAL_LOW",
          "COLLATERAL_DAMAGE_POTENTIAL_LOW_MEDIUM",
          "COLLATERAL_DAMAGE_POTENTIAL_MEDIUM_HIGH",
          "COLLATERAL_DAMAGE_POTENTIAL_HIGH",
          "COLLATERAL_DAMAGE_POTENTIAL_NOT_DEFINED"
        ],
        "type": "string"
      },
      "CvssDataV2Exploitability": {
        "default": "EXPLOITABILITY_UNSPECIFIED",
        "enum": [
          "EXPLOITABILITY_UNSPECIFIED",
          "EXPLOITABILITY_UNPROVEN",
          "EXPLOITABILITY_PROOF_OF_CONCEPT",
          "EXPLOITABILITY_FUNCTIONAL",
          "EXPLOITABILITY_HIGH",
          "EXPLOITABILITY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "CvssDataV2ReportConfidence": {
        "default": "REPORT_CONFIDENCE_UNSPECIFIED",
        "enum": [
          "REPORT_CONFIDENCE_UNSPECIFIED",
          "REPORT_CONFIDENCE_UNCONFIRMED",
          "REPORT_CONFIDENCE_UNCORROBORATED",
          "REPORT_CONFIDENCE_CONFIRMED",
          "REPORT_CONFIDENCE_NOT_DEFINED"
        ],
        "type": "string"
      },
      "CvssDataV2TargetDistribution": {
        "default": "TARGET_DISTRIBUTION_UNSPECIFIED",
        "enum": [
          "TARGET_DISTRIBUTION_UNSPECIFIED",
          "TARGET_DISTRIBUTION_NONE",
          "TARGET_DISTRIBUTION_LOW",
          "TARGET_DISTRIBUTION_MEDIUM",
          "TARGET_DISTRIBUTION_HIGH",
          "TARGET_DISTRIBUTION_NOT_DEFINED"
        ],
        "type": "string"
      },
      "CvssDataV2V2Impact": {
        "default": "V2_IMPACT_IMPACT_UNSPECIFIED",
        "enum": [
          "V2_IMPACT_IMPACT_UNSPECIFIED",
          "V2_IMPACT_IMPACT_NONE",
          "V2_IMPACT_IMPACT_PARTIAL",
          "V2_IMPACT_IMPACT_COMPLETE"
        ],
        "type": "string"
      },
      "DependencyImportedType": {
        "default": "IMPORTED_TYPE_UNSPECIFIED",
        "description": "ImportedType is the state of import.\n\n - IMPORTED_TYPE_UNSPECIFIED: UNSPECIFIED is the default state. This state denotes that imported\ndependency analysis has not been run yet for this dependency.\n - IMPORTED_TYPE_IN_SOURCE: IN_SOURCE means the imported dependency analysis succeeded and found\nthat the dependency is imported in source.\n - IMPORTED_TYPE_NOT_IN_SOURCE: NOT_IN_SOURCE means the imported dependency analysis succeeded and\nfound that the dependency is not imported in source.\n - IMPORTED_TYPE_PHANTOM: PHANTOM means the imported dependency analysis succeeded and found that\nthe dependency is imported only in the source (a phantom dependency).\n - IMPORTED_TYPE_SEGMENT_MATCH: Dependency was discovered through code segment match.\n - IMPORTED_TYPE_INSTALLED_IN_USE: Dependency was discovered through installed dependencies and it is in use.",
        "enum": [
          "IMPORTED_TYPE_UNSPECIFIED",
          "IMPORTED_TYPE_IN_SOURCE",
          "IMPORTED_TYPE_NOT_IN_SOURCE",
          "IMPORTED_TYPE_PHANTOM",
          "IMPORTED_TYPE_SEGMENT_MATCH",
          "IMPORTED_TYPE_INSTALLED_IN_USE"
        ],
        "type": "string"
      },
      "DependencyMetadataDependencyData": {
        "description": "Information about the dependency.",
        "properties": {
          "abstract": {
            "description": "True if the dependency is an abstract dependency, such as a secondary Pom\nfile.",
            "type": "boolean"
          },
          "approximation": {
            "description": "True if this is an approximate dependency based on unresolved package\ndependencies.",
            "type": "boolean"
          },
          "callgraph_available": {
            "description": "True if the call graph is available.",
            "type": "boolean"
          },
          "container_data": {
            "$ref": "#/components/schemas/v1ContainerDependencyMetadata"
          },
          "declared_licenses": {
            "description": "Declared license information for the dependency.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseDependencyMetadata"
            },
            "type": "array"
          },
          "direct": {
            "description": "True if this is a direct dependency.",
            "type": "boolean"
          },
          "discovered_licenses": {
            "description": "Discovered license information for the dependency.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseDependencyMetadata"
            },
            "type": "array"
          },
          "discovery_type": {
            "$ref": "#/components/schemas/DependencyMetadataDiscoveryType"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "eol": {
            "description": "Indicates whether the dependency is end of life.",
            "type": "boolean"
          },
          "eol_timestamp": {
            "description": "End of life timestamp for the dependency package version.",
            "format": "date-time",
            "type": "string"
          },
          "forked": {
            "description": "Set to true if the dependency is a downstream fork of a public dependency.\nTrue exactly when upstream_reference names a package, so both fields are\nwritten together.",
            "type": "boolean"
          },
          "internal": {
            "description": "True if the dependency is in the same namespace or, if the\nnamespace is oss, in the same project as the importer.",
            "type": "boolean"
          },
          "last_commit": {
            "description": "Date that the dependency was last modified.",
            "format": "date-time",
            "type": "string"
          },
          "locked": {
            "description": "Set to true if the dependency is fixed to a specific version by a\nlock file at install time (outcome).\n\nIf a dependency is locked, but not pinned, it could drift if the\nlock file is regenerated (for example, by 'npm update').",
            "type": "boolean"
          },
          "missing": {
            "description": "True if the package version is missing for this dependency.",
            "type": "boolean"
          },
          "namespace": {
            "description": "Namespace to which the dependency package version object belongs.",
            "type": "string"
          },
          "native_scope": {
            "description": "Un-normalized native dependency scope from the package manager (e.g.\nMaven \"provided\"), before it is collapsed into scope. Empty if none.",
            "type": "string"
          },
          "orphan": {
            "description": "Deprecated.",
            "type": "boolean"
          },
          "package_name": {
            "description": "Qualified dependency package name. Does not include the version.\nFor example, for go://package@v1.2.3 this is set to \"go://package\".",
            "type": "string"
          },
          "package_version_uuid": {
            "description": "the UUID of the dependency package version object.",
            "type": "string"
          },
          "parent_count": {
            "description": "Total number of direct parents in dependency graph.",
            "format": "int64",
            "type": "integer"
          },
          "parent_version_name": {
            "description": "Fully qualified name of the direct parent of the dependency. For example,\ngo://package@v1.2.3.",
            "type": "string"
          },
          "patched": {
            "description": "Indicates whether the dependency version was patched or not.",
            "type": "boolean"
          },
          "pinned": {
            "description": "Set to true of the dependency is fixed to a specific version by a\nmanifest file (intent).\n\nFor example, in package.json, \"lodash\": \"4.17.21\" is pinned while\n\"lodash\": \"^4.0.0\" is not (it's a range, \"any 4.x\").",
            "type": "boolean"
          },
          "project_paths": {
            "description": "List of all project paths to this dependency from the root package\nversion (importer).",
            "items": {
              "$ref": "#/components/schemas/v1DependencyMetadataPath"
            },
            "type": "array"
          },
          "project_uuid": {
            "description": "The UUID of the project to which the dependency belongs.",
            "type": "string"
          },
          "public": {
            "description": "True if the dependency is public.",
            "type": "boolean"
          },
          "purl": {
            "description": "The purl for the dependency package version.",
            "type": "string"
          },
          "reachable": {
            "$ref": "#/components/schemas/DependencyMetadataReachabilityType"
          },
          "repo_name": {
            "description": "Name of the repository to which the dependency belongs.",
            "type": "string"
          },
          "resolved_version": {
            "description": "Resolved dependency package version. For example, \"v2.0.0\".",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "unresolved_version": {
            "description": "Unresolved dependency package version string. For example, \"v2.0.0\".",
            "type": "string"
          },
          "upstream_reference": {
            "description": "The public package this private dependency was forked from, so its\nvulnerabilities can be attributed to the fork. Empty means the resolver\nhas not run yet; \"N/A\" means it ran and found no upstream.",
            "type": "string"
          },
          "utilization": {
            "description": "Percent of the dependency used based on the call graph. Implementation\npending.",
            "format": "float",
            "type": "number"
          },
          "vendored": {
            "description": "True if the dependency is a vendored dependency.",
            "type": "boolean"
          }
        },
        "required": [
          "direct"
        ],
        "type": "object"
      },
      "DependencyMetadataDiscoveryType": {
        "default": "DISCOVERY_TYPE_UNSPECIFIED",
        "description": " - DISCOVERY_TYPE_MANIFEST: Dependency was discovered through a manifest file.\n - DISCOVERY_TYPE_PHANTOM: Dependency was discovered through phantom dependency / imported\ndependency analysis.\n - DISCOVERY_TYPE_SEGMENT_MATCH: Dependency was discovered via code segment match.",
        "enum": [
          "DISCOVERY_TYPE_UNSPECIFIED",
          "DISCOVERY_TYPE_MANIFEST",
          "DISCOVERY_TYPE_PHANTOM",
          "DISCOVERY_TYPE_SEGMENT_MATCH"
        ],
        "type": "string"
      },
      "DependencyMetadataImporterData": {
        "description": "Information about the root package version (importer),\nthat imports the dependency in one or more versions,\neither directly or indirectly.",
        "properties": {
          "callgraph_available": {
            "description": "True if the call graph is available for the root package version.",
            "type": "boolean"
          },
          "container_base_image": {
            "$ref": "#/components/schemas/v1ContainerBaseImage"
          },
          "package_name": {
            "description": "Qualified package name of the root package version.\nFor example, for go://package@v1.2.3 this is set to \"go://package\".",
            "type": "string"
          },
          "package_version_name": {
            "description": "Fully qualified name of the root package version. For example,\ngo://package@v1.2.3.",
            "type": "string"
          },
          "package_version_ref": {
            "description": "Resolved ref of the source control version for the root package version.\nCan be a tag, a branch or a SHA.",
            "type": "string"
          },
          "package_version_sha": {
            "description": "SHA of the source control version for the root package version.\nBecause the SHA might not be possible to resolved, this field is\noptional.",
            "type": "string"
          },
          "package_version_uuid": {
            "description": "The UUID of the importer package version object.\nThis is the same as the parent UUID of this object (meta.parent_uuid).",
            "type": "string"
          },
          "project_uuid": {
            "description": "The UUID of the project to which the root package belongs.",
            "type": "string"
          },
          "version_name": {
            "description": "Version number of the root package version.\n\nFor example, for go://package@v1.2.3 this is set to \"v1.2.3\".",
            "type": "string"
          }
        },
        "required": [
          "project_uuid",
          "package_name",
          "package_version_uuid",
          "package_version_name",
          "package_version_ref",
          "callgraph_available"
        ],
        "type": "object"
      },
      "DependencyMetadataReachabilityType": {
        "default": "REACHABILITY_TYPE_UNSPECIFIED",
        "description": " - REACHABILITY_TYPE_REACHABLE: Call graph analysis determined that the dependency is likely reachable.\n - REACHABILITY_TYPE_UNREACHABLE: Call graph analysis determined that the dependency is likely not\nreachable.\n - REACHABILITY_TYPE_UNKNOWN: Not enough information to perform reachability analysis.\n - REACHABILITY_TYPE_REACHABLE_BY_INCLUSION: The vulnerability is assumed reachable due to how the dependency is typically used; no call paths exist for this finding.",
        "enum": [
          "REACHABILITY_TYPE_UNSPECIFIED",
          "REACHABILITY_TYPE_REACHABLE",
          "REACHABILITY_TYPE_UNREACHABLE",
          "REACHABILITY_TYPE_UNKNOWN",
          "REACHABILITY_TYPE_REACHABLE_BY_INCLUSION"
        ],
        "type": "string"
      },
      "EndorIgnoreEntryServiceCreateEndorIgnoreEntryBody": {
        "description": "Represents a single entry in the ignore file.\n\nEndorIgnoreEntry objects are created by the endorctl client after\nreading and processing the ignore file during the git scan,\nand then applied to the findings during the analytics scan.\n\nThe ignore file is either a raw list of vulnerability ids\n(one per line), or a YAML file that contains a list of ignore entries,\neach identifying one or more findings in a repository version.\nThe file is formatted manually or via the endorctl ignore command.\n\nEach entry must specify at least the finding name or the vulnerability ID.\nThe more fields you provide, the more specific the ignore entry is.\nI.e. if you only provide the finding name and there are multiple\nfindings with the same name in the same repository version,\nthe ignore entry is applied to all of them.\nUse the endorctl ignore --finding-uuid option to automatically populate\nall fields of the ignore entry based on a given finding.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1EndorIgnoreEntrySpec"
          },
          "tenant_meta": {
            "description": "Tenant data.",
            "title": "Tenant data.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "EndorIgnoreEntryServiceUpdateEndorIgnoreEntryBody": {
        "description": "Request to update an EndorIgnoreEntry object.",
        "properties": {
          "object": {
            "description": "Represents a single entry in the ignore file.\n\nEndorIgnoreEntry objects are created by the endorctl client after\nreading and processing the ignore file during the git scan,\nand then applied to the findings during the analytics scan.\n\nThe ignore file is either a raw list of vulnerability ids\n(one per line), or a YAML file that contains a list of ignore entries,\neach identifying one or more findings in a repository version.\nThe file is formatted manually or via the endorctl ignore command.\n\nEach entry must specify at least the finding name or the vulnerability ID.\nThe more fields you provide, the more specific the ignore entry is.\nI.e. if you only provide the finding name and there are multiple\nfindings with the same name in the same repository version,\nthe ignore entry is applied to all of them.\nUse the endorctl ignore --finding-uuid option to automatically populate\nall fields of the ignore entry based on a given finding.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1EndorIgnoreEntrySpec"
              },
              "tenant_meta": {
                "description": "Tenant data.",
                "title": "Tenant data.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the object.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "EnvironmentTool": {
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "type": "object"
      },
      "ExporterMessageTypeConfig": {
        "properties": {
          "message_export_format": {
            "$ref": "#/components/schemas/MessageTypeConfigMessageExportFormat"
          },
          "message_type": {
            "$ref": "#/components/schemas/MessageTypeConfigMessageType"
          }
        },
        "required": [
          "message_type",
          "message_export_format"
        ],
        "type": "object"
      },
      "ExporterS3Config": {
        "properties": {
          "allowed_audience": {
            "description": "allowed_audiences is the audience that will be allowed to assume the role.",
            "type": "string"
          },
          "assume_role_arn": {
            "description": "assume_role_arn is the IAM role ARN that will be assumed to access S3.",
            "type": "string"
          },
          "bucket_name": {
            "description": "bucket_name is the name of the S3 bucket to export the data to.",
            "type": "string"
          },
          "object_expiry_days": {
            "description": "object_expiry_days is the number of days for which the exported objects will be kept in S3.\nDeprecated: This field is deprecated and will be removed in a future release.\nThe S3 bucket should be configured with a lifecycle rule to expire objects after a certain number of days.",
            "format": "int32",
            "type": "integer"
          },
          "region": {
            "description": "region is the region to use for the S3 bucket.",
            "type": "string"
          }
        },
        "required": [
          "bucket_name",
          "region",
          "assume_role_arn",
          "allowed_audience"
        ],
        "type": "object"
      },
      "ExporterServiceCreateExporterBody": {
        "description": "Defines a data exporter.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether the object should be visible in the child namespaces or\nnot.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ExporterSpec"
          },
          "tenant_meta": {
            "description": "Exporters are associated with a tenant.",
            "title": "Exporters are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the exporter.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ExporterServiceUpdateExporterBody": {
        "description": "Request to update the exporter.",
        "properties": {
          "object": {
            "description": "Defines a data exporter.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates whether the object should be visible in the child namespaces or\nnot.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ExporterSpec"
              },
              "tenant_meta": {
                "description": "Exporters are associated with a tenant.",
                "title": "Exporters are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the exporter.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ExporterWizConfig": {
        "properties": {
          "api_endpoint_url": {
            "description": "api_endpoint_url is the Wiz API endpoint URL.",
            "type": "string"
          },
          "oauth_client_credentials": {
            "$ref": "#/components/schemas/v1OAuthClientCredentialsAuthConfig"
          }
        },
        "type": "object"
      },
      "FindingFixingUpgradesUpgradeInfo": {
        "description": "Information about one upgrade.",
        "properties": {
          "direct_dependency_name": {
            "description": "Fully qualified name of the direct dependency to be upgraded.",
            "type": "string"
          },
          "from_version": {
            "description": "Current version of the direct dependency.",
            "type": "string"
          },
          "package_name": {
            "description": "Fully qualified name of the root package.",
            "type": "string"
          },
          "to_version": {
            "description": "Version that the direct dependency should be upgraded to.",
            "type": "string"
          },
          "upgrade_risk": {
            "description": "The risk of the upgrade.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "FindingPolicyInfoPolicyResult": {
        "description": "Policy output.",
        "properties": {
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of all key-value fields in the result.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "FindingServiceUpdateFindingBody": {
        "description": "Request used to update a finding.",
        "properties": {
          "object": {
            "description": "A finding contains details of a problem that needs to be fixed.\nThe finding applies to the parent object, which can be one of:\nRepository, RepositoryVersion, or PackageVersion.\nFinding objects are connected to the project via spec.project_uuid.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1FindingSpec"
              },
              "tenant_meta": {
                "description": "Information about the tenant and namespace that the finding belongs to.",
                "title": "Information about the tenant and namespace that the finding belongs to.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the object.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "FindingSpecPath": {
        "description": "Information about one path.",
        "properties": {
          "nodes": {
            "description": "List of structured, annotated function nodes.",
            "items": {
              "$ref": "#/components/schemas/PathNode"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GitHubActionDependencySpecGHActionType": {
        "default": "GH_ACTION_TYPE_UNSPECIFIED",
        "description": "ActionType indicates what type of action is being used.\neg. JS action, Docker action, composite action etc.\n\n - GH_ACTION_TYPE_UNSPECIFIED: Unspecified when it is unlcear what typeof action it is.\n - GH_ACTION_TYPE_GITHUB_REPO: Indicates action's source code is hosted in the GitHub repository.\n - GH_ACTION_TYPE_DOCKER: Indicates action written in Docker and is hosted in the Docker\nregistry.\n - GH_ACTION_TYPE_INTERNAL: Indicates that action is using logic internal to the organization.\nit could be referring to another .yaml file or referring another\ndirectory which contains code for GitHub action.",
        "enum": [
          "GH_ACTION_TYPE_UNSPECIFIED",
          "GH_ACTION_TYPE_GITHUB_REPO",
          "GH_ACTION_TYPE_DOCKER",
          "GH_ACTION_TYPE_INTERNAL"
        ],
        "type": "string"
      },
      "GitHubWorkflowsWorkflow": {
        "description": "Workflow represents one workflow file.",
        "properties": {
          "all_secrets_exposed": {
            "description": "Information about the exposure of 'secrets' object.",
            "items": {
              "$ref": "#/components/schemas/WorkflowAllSecretsExposed"
            },
            "type": "array"
          },
          "file_name": {
            "description": "Name of the workflow file.",
            "type": "string"
          },
          "file_path": {
            "description": "Path of the workflow file.",
            "type": "string"
          },
          "jobs": {
            "description": "All jobs defined in the workflow file.",
            "items": {
              "$ref": "#/components/schemas/GitHubWorkflowsWorkflowJob"
            },
            "type": "array"
          },
          "permissions": {
            "description": "Permissions of the GITHUB_TOKEN defined at the workflow file level.",
            "items": {
              "$ref": "#/components/schemas/WorkflowGHTokenPermission"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GitHubWorkflowsWorkflowJob": {
        "description": "A single job defined in the workflow file.",
        "properties": {
          "actions": {
            "description": "List of all actions used in the job.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cloud_resource_accessed_without_oidc": {
            "description": "Lists all cloud resources accessed without the workflow identity federation.",
            "items": {
              "$ref": "#/components/schemas/JobCloudResourceAccessedWithoutOIDC"
            },
            "type": "array"
          },
          "id": {
            "description": "The Job ID.",
            "type": "string"
          },
          "imposter_commit": {
            "description": "Imposter commit SHA detected for the job.",
            "items": {
              "$ref": "#/components/schemas/JobImposterCommit"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the job.",
            "type": "string"
          },
          "permissions": {
            "description": "Permissions of the GITHUB_TOKEN defined at the job level.",
            "items": {
              "$ref": "#/components/schemas/WorkflowGHTokenPermission"
            },
            "type": "array"
          },
          "script_injection_detected": {
            "description": "Detected script injection in the job's shell script code.",
            "items": {
              "$ref": "#/components/schemas/JobScriptInjectionDetected"
            },
            "type": "array"
          },
          "unpinned_commit_sha_actions": {
            "description": "Unpinned commit SHA action versions used.",
            "items": {
              "$ref": "#/components/schemas/JobUnpinnedCommitShaAction"
            },
            "type": "array"
          },
          "unpinned_runner_version": {
            "$ref": "#/components/schemas/JobUnpinnedRunner"
          },
          "untrusted_code_execution": {
            "description": "Untrusted code execution identified for the job.",
            "items": {
              "$ref": "#/components/schemas/JobUntrustedCodeExecution"
            },
            "type": "array"
          },
          "unverified_gh_actions": {
            "description": "Unverified GitHub actions used.",
            "items": {
              "$ref": "#/components/schemas/JobUnverifiedGHAction"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GroupByTimeGroupByTimeInterval": {
        "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
        "enum": [
          "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
          "GROUP_BY_TIME_INTERVAL_YEAR",
          "GROUP_BY_TIME_INTERVAL_QUARTER",
          "GROUP_BY_TIME_INTERVAL_MONTH",
          "GROUP_BY_TIME_INTERVAL_WEEK",
          "GROUP_BY_TIME_INTERVAL_DAY",
          "GROUP_BY_TIME_INTERVAL_HOUR",
          "GROUP_BY_TIME_INTERVAL_MINUTE",
          "GROUP_BY_TIME_INTERVAL_SECOND"
        ],
        "type": "string"
      },
      "GroupResponseGroupData": {
        "description": "Information about objects matching the given key.",
        "properties": {
          "aggregation_count": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "aggregation_uuids": {
            "description": "List of UUIDs of the objects in the group.\nOnly populated if show_aggregation_uuids is set.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "aggregation_value": {
            "$ref": "#/components/schemas/v1GroupAggregationValueResponse"
          },
          "unique_counts": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1CountResponse"
            },
            "description": "Map of counts for the given unique_count_paths fields.\nOnly populated if unique_count_paths is set.",
            "type": "object"
          },
          "unique_values": {
            "additionalProperties": {
              "items": {
                "type": "object"
              },
              "type": "array"
            },
            "description": "Map of values for the given unique_value_paths fields.\nOnly populated if unique_value_paths is set.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "HttpParamsProfileAllowedTemplateParam": {
        "description": "AllowedTemplateParam defines an allowed template parameter name and regex for validating its value.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/v1TemplateParamName"
          },
          "regex": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "HttpParamsProfileTemplateParams": {
        "description": "TemplateParams contains a list of template parameter name-value pairs that can be used\nfor validation when the required template parameters are not found in the vicinity of the secret.\nFor example, for Azure AD client secrets, this could contain the \"ClientID\" and \"TenantID\" values.",
        "properties": {
          "values": {
            "items": {
              "$ref": "#/components/schemas/TemplateParamsTemplateValue"
            },
            "title": "List of template parameters name-value pairs.\nExample: [{\"name\": \"TEMPLATE_PARAM_NAME_CLIENT_ID\", \"value\": \"abc123\"}, {\"name\": \"TEMPLATE_PARAM_NAME_TENANT_ID\", \"value\": \"xyz789\"}]",
            "type": "array"
          }
        },
        "type": "object"
      },
      "IPAddressPolicyServiceCreateIPAddressPolicyBody": {
        "description": "An IPAddressPolicy creates a restriction on which IP address subnets can\naccess a tenant.\nNote that only one IP address policy is allowed per tenant and IP address\npolicies cannot be declared in child namespaces.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.\nIt should be set to true for most use cases.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1IPAddressPolicySpec"
          },
          "tenant_meta": {
            "description": "Namespace of the ip address policy.",
            "title": "Namespace of the ip address policy.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the ip address policy.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "IdentityProviderOIDCProvider": {
        "properties": {
          "claim_names": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "discover_url": {
            "description": "The well-known URL of the OIDC provider.",
            "type": "string"
          },
          "key": {
            "description": "The key to authenticate with the provider for callbacks.",
            "type": "string"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "secret": {
            "description": "The secret to authenticate with the provider for callbacks.",
            "type": "string"
          }
        },
        "required": [
          "discover_url",
          "key",
          "secret"
        ],
        "type": "object"
      },
      "IdentityProviderServiceCreateIdentityProviderBody": {
        "description": "Represents an identity provider.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1IdentityProviderSpec"
          },
          "tenant_meta": {
            "description": "IdentityProviders are associated with a tenant and namespace.",
            "title": "IdentityProviders are associated with a tenant and namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of an identify provider.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "IdentityProviderServiceUpdateIdentityProviderBody": {
        "description": "Request to update an identity provider.",
        "properties": {
          "object": {
            "description": "Represents an identity provider.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Propagate indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1IdentityProviderSpec"
              },
              "tenant_meta": {
                "description": "IdentityProviders are associated with a tenant and namespace.",
                "title": "IdentityProviders are associated with a tenant and namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of an identify provider.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ImportedRuleSetResultImportedRuleSetResultStatus": {
        "default": "IMPORTED_RULE_SET_RESULT_STATUS_UNSPECIFIED",
        "enum": [
          "IMPORTED_RULE_SET_RESULT_STATUS_UNSPECIFIED",
          "IMPORTED_RULE_SET_RESULT_STATUS_SUCCESS",
          "IMPORTED_RULE_SET_RESULT_STATUS_FAIL"
        ],
        "type": "string"
      },
      "IngestedObjectIngestedObjectStatus": {
        "default": "INGESTED_OBJECT_STATUS_UNSPECIFIED",
        "description": " - INGESTED_OBJECT_STATUS_LIGHT: Example: Use when a user exists because they are attached to a commit,\nbut are not found on a direct lookup.",
        "enum": [
          "INGESTED_OBJECT_STATUS_UNSPECIFIED",
          "INGESTED_OBJECT_STATUS_FOUND",
          "INGESTED_OBJECT_STATUS_NOT_FOUND",
          "INGESTED_OBJECT_STATUS_LIGHT"
        ],
        "type": "string"
      },
      "InstallationServiceCreateInstallationBody": {
        "description": "Installation represents an installation request in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1InstallationSpec"
          },
          "tenant_meta": {
            "description": "Namespaces are associated with a tenant.",
            "title": "Namespaces are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the installation.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta"
        ],
        "type": "object"
      },
      "InstallationServiceUpdateInstallationBody": {
        "description": "Request to update an installation.",
        "properties": {
          "object": {
            "description": "Installation represents an installation request in the system.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "processing_status": {
                "$ref": "#/components/schemas/v1ProcessingStatus"
              },
              "propagate": {
                "description": "Propagate indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1InstallationSpec"
              },
              "tenant_meta": {
                "description": "Namespaces are associated with a tenant.",
                "title": "Namespaces are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the installation.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "tenant_meta"
        ],
        "type": "object"
      },
      "InvitationServiceCreateInvitationBody": {
        "description": "Invitation represents an invitation for a new user in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1InvitationSpec"
          },
          "tenant_meta": {
            "description": "Invitations can be issued per namespace.",
            "title": "Invitations can be issued per namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the invitation.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "JIRAConfigCustomField": {
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "JIRAConfigJiraIssueType": {
        "default": "JIRA_ISSUE_TYPE_UNSPECIFIED",
        "description": "Deprecated: This enum will not be used. A string field will be used instead.\n\n - JIRA_ISSUE_TYPE_TASK: Indicates a Jira task.\n - JIRA_ISSUE_TYPE_BUG: Indicates a Jira Bug.",
        "enum": [
          "JIRA_ISSUE_TYPE_UNSPECIFIED",
          "JIRA_ISSUE_TYPE_TASK",
          "JIRA_ISSUE_TYPE_BUG"
        ],
        "type": "string"
      },
      "JobCloudName": {
        "default": "CLOUD_NAME_UNSPECIFIED",
        "enum": [
          "CLOUD_NAME_UNSPECIFIED",
          "CLOUD_NAME_AWS",
          "CLOUD_NAME_AZURE",
          "CLOUD_NAME_GCP",
          "CLOUD_NAME_HASHICORP"
        ],
        "type": "string"
      },
      "JobCloudResourceAccessedWithoutOIDC": {
        "properties": {
          "action_name": {
            "description": "Name of the action used to access cloud resources.",
            "type": "string"
          },
          "cloud_name": {
            "$ref": "#/components/schemas/JobCloudName"
          },
          "evidence_message": {
            "description": "Contains evidence message for the non-OIDC cloud resource violation.",
            "type": "string"
          },
          "input_parameters": {
            "description": "List of input parameters used to access the cloud resource.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "invoking_script": {
            "description": "Script content if the cloud resource is accessed using a script.",
            "type": "string"
          },
          "location_uri": {
            "description": "Workflow file path with line number for non-OIDC cloud resource access.",
            "type": "string"
          },
          "step_name": {
            "description": "Step name for the non-OIDC cloud resource access.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobImposterCommit": {
        "properties": {
          "action": {
            "description": "Full action reference (e.g. \"actions/checkout@abc123...\").",
            "type": "string"
          },
          "action_repo_clone_url": {
            "description": "Constructed clone URL used for the lookup.",
            "type": "string"
          },
          "action_sha": {
            "description": "The pinned commit SHA.",
            "type": "string"
          },
          "location_uri": {
            "description": "Workflow file path with line number for the imposter action step.",
            "type": "string"
          },
          "step_name": {
            "description": "Step name where the imposter action is used.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobScriptInjectionDetected": {
        "properties": {
          "gh_context_variables": {
            "items": {
              "type": "string"
            },
            "title": "List of GitHub context variable for which the injection was detected.\nhttps://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#understanding-the-risk-of-script-injections",
            "type": "array"
          },
          "location_uris": {
            "description": "Full path of each injection variable detected with line number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "script_content": {
            "description": "Shell script content where the injection was detected.",
            "type": "string"
          },
          "step_name": {
            "description": "Step name where script injection was detected.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobUnpinnedCommitShaAction": {
        "properties": {
          "line_number": {
            "description": "Line number of the workflow file containing the action.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "Name of the action.",
            "type": "string"
          },
          "version": {
            "description": "Version of the action used.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobUnpinnedRunner": {
        "properties": {
          "line_number": {
            "description": "Line number of the workflow file containing the runner version.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "Name of the targeted runner type.",
            "type": "string"
          },
          "version": {
            "description": "Version of the runner used.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobUntrustedCodeExecution": {
        "properties": {
          "build_cmd": {
            "description": "Build cmd used to execute the untrusted code.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "build_cmd_script_content": {
            "description": "Shell script content where the untrusted code is being executed.",
            "type": "string"
          },
          "build_cmd_step": {
            "description": "Step name where the untrusted code is being executed.",
            "type": "string"
          },
          "checkout_cmd": {
            "description": "Checkout command used to checkout the code.",
            "type": "string"
          },
          "checkout_script_content": {
            "description": "Shell script content where the untrusted code is being checked out.",
            "type": "string"
          },
          "checkout_step": {
            "description": "Step name where the untrusted code is being checked out.",
            "type": "string"
          },
          "location_uri": {
            "description": "Workflow file path with the line number for untrusted code execution script.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobUnverifiedGHAction": {
        "properties": {
          "line_number": {
            "description": "Line number of the workflow file containing the action.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "Name of the action.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "LLMContextStructuredContent": {
        "properties": {
          "data": {
            "description": "The actual content data.",
            "type": "string"
          },
          "schema": {
            "description": "The schema defining the structure and validation rules for the content.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "LicenseDependencyServiceCreateLicenseDependencyBody": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LicenseDependencySpec"
          },
          "tenant_meta": {
            "description": "The tenant metadata of the license dependency.",
            "title": "The tenant metadata of the license dependency.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the license dependency.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "LicenseDependencyServiceUpdateLicenseDependencyBody": {
        "description": "Request to update a license dependency.",
        "properties": {
          "object": {
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1LicenseDependencySpec"
              },
              "tenant_meta": {
                "description": "The tenant metadata of the license dependency.",
                "title": "The tenant metadata of the license dependency.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the license dependency.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "LicenseNoticesReportServiceCreateLicenseNoticesReportBody": {
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LicenseNoticesReportSpec"
          },
          "tenant_meta": {
            "description": "Tenant metadata.",
            "title": "Tenant metadata.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the license notices report.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "LicenseNoticesReportSpecGrouping": {
        "default": "GROUPING_UNSPECIFIED",
        "description": "The grouping of the license notices report.\n\n - GROUPING_UNSPECIFIED: Grouping is unspecified.\n - GROUPING_LICENSE: Grouping is by license.\n - GROUPING_DEPENDENCY: Grouping is by dependency.",
        "enum": [
          "GROUPING_UNSPECIFIED",
          "GROUPING_LICENSE",
          "GROUPING_DEPENDENCY"
        ],
        "type": "string"
      },
      "LicenseNoticesReportSpecReportType": {
        "default": "REPORT_TYPE_UNSPECIFIED",
        "description": "The report type of the license notices report.\n\n - REPORT_TYPE_UNSPECIFIED: Report type is undefined.\n - REPORT_TYPE_PDF: Report type is PDF.\n - REPORT_TYPE_HTML: Report type is HTML.\n - REPORT_TYPE_TXT: Report type is plain text.",
        "enum": [
          "REPORT_TYPE_UNSPECIFIED",
          "REPORT_TYPE_PDF",
          "REPORT_TYPE_HTML",
          "REPORT_TYPE_TXT"
        ],
        "type": "string"
      },
      "LicenseSummaryServiceCreateLicenseSummaryBody": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LicenseSummarySpec"
          },
          "tenant_meta": {
            "description": "The tenant metadata of the license summary.",
            "title": "The tenant metadata of the license summary.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the license summary.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "LicenseSummaryServiceUpdateLicenseSummaryBody": {
        "description": "Request to update a license summary.",
        "properties": {
          "object": {
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1LicenseSummarySpec"
              },
              "tenant_meta": {
                "description": "The tenant metadata of the license summary.",
                "title": "The tenant metadata of the license summary.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the license summary.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "LinterCorrectnessAnalysisCodeFix": {
        "description": "CodeFix represents a potential fix to a determined true positive linter result.",
        "properties": {
          "file_path": {
            "description": "The file path of the code fix.",
            "type": "string"
          },
          "line_end": {
            "description": "The end line number of the code fix.",
            "format": "int32",
            "type": "integer"
          },
          "line_start": {
            "description": "The start line number of the code fix.",
            "format": "int32",
            "type": "integer"
          },
          "patch": {
            "description": "The code fix to be applied.",
            "type": "string"
          }
        },
        "required": [
          "patch",
          "file_path",
          "line_start",
          "line_end"
        ],
        "type": "object"
      },
      "LinterCorrectnessAnalysisDataFlowNode": {
        "description": "DataFlowNode represents a node in the data flow trace from source to sink.",
        "properties": {
          "code_line_num": {
            "description": "Line number in the source file.",
            "format": "int32",
            "type": "integer"
          },
          "code_snippet": {
            "description": "Variable or expression at this point in the flow.",
            "type": "string"
          },
          "type": {
            "description": "Type of node in the data flow (source, step, or sink).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ListParametersGroup": {
        "description": "Contains the group parameters.",
        "properties": {
          "aggregation_paths": {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "type": "string"
          },
          "show_aggregation_uuids": {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "type": "boolean"
          },
          "unique_count_paths": {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "type": "string"
          },
          "unique_value_paths": {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ListParametersGroupByTime": {
        "description": "Contains the group_by_time parameters.",
        "properties": {
          "aggregation_operator": {
            "title": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "type": "string"
          },
          "aggregation_paths": {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "type": "string"
          },
          "aggregation_value_field": {
            "title": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "type": "string"
          },
          "end_time": {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "format": "date-time",
            "type": "string"
          },
          "group_size": {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "format": "int32",
            "type": "integer"
          },
          "interval": {
            "$ref": "#/components/schemas/GroupByTimeGroupByTimeInterval"
          },
          "mode": {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "type": "string"
          },
          "show_aggregation_uuids": {
            "description": "Return the UUIDs of the objects in each group.",
            "type": "boolean"
          },
          "start_time": {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ListParametersSortEntry": {
        "description": "Contains the sort parameters.",
        "properties": {
          "order": {
            "$ref": "#/components/schemas/SortEntrySortEntryOrder"
          },
          "path": {
            "description": "Field to sort objects by, for example, meta.name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "MalwareExposureQueryServiceCreateMalwareExposureQueryBody": {
        "description": "Request to get the exposure of one or more Malware objects on a given namespace.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1MalwareExposureQuerySpec"
          },
          "tenant_meta": {
            "description": "Tenant data.",
            "title": "Tenant data.",
            "type": "object"
          },
          "uuid": {
            "description": "UUID of the MalwareExposureQuery object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "MalwareExposureServiceCreateMalwareExposureBody": {
        "description": "Namespace exposure for a given Malware package.\nThe presence of this object indicates that at least one project in the\nNamespace is, or was, potentially affected by the referenced Malware.\nIf all affected projects are in child namespaces, then there are no\nMalwareExposure objects in the parent namespace. Use traverse to\ninclude MalwareExposure objects from child namespaces.\nThe meta.name field contains the fully qualified package name of the\nMalware package. For example, \"npm://package-name\".",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1MalwareExposureSpec"
          },
          "tenant_meta": {
            "description": "Tenant data.",
            "title": "Tenant data.",
            "type": "object"
          },
          "uuid": {
            "description": "UUID of the MalwareExposure object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "MalwareExposureServiceUpdateMalwareExposureBody": {
        "description": "Request to update a MalwareExposure object.",
        "properties": {
          "object": {
            "description": "MalwareExposure object to update.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1MalwareExposureSpec"
              },
              "tenant_meta": {
                "description": "Tenant data.",
                "title": "Tenant data.",
                "type": "object"
              },
              "uuid": {
                "description": "UUID of the MalwareExposure object.",
                "readOnly": true,
                "type": "string"
              }
            },
            "title": "MalwareExposure object to update.",
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "MalwareRangeMalwareRangeType": {
        "default": "MALWARE_RANGE_TYPE_UNSPECIFIED",
        "description": "Type of the version information.",
        "enum": [
          "MALWARE_RANGE_TYPE_UNSPECIFIED",
          "MALWARE_RANGE_TYPE_GIT",
          "MALWARE_RANGE_TYPE_SEMVER",
          "MALWARE_RANGE_TYPE_ECOSYSTEM"
        ],
        "type": "string"
      },
      "MessageTypeConfigMessageExportFormat": {
        "default": "MESSAGE_EXPORT_FORMAT_UNSPECIFIED",
        "description": " - MESSAGE_EXPORT_FORMAT_JSON: MESSAGE_EXPORT_FORMAT_JSON indicates a JSON message format.\n - MESSAGE_EXPORT_FORMAT_SARIF: MESSAGE_EXPORT_FORMAT_SARIF indicates a SARIF message format.",
        "enum": [
          "MESSAGE_EXPORT_FORMAT_UNSPECIFIED",
          "MESSAGE_EXPORT_FORMAT_JSON",
          "MESSAGE_EXPORT_FORMAT_SARIF"
        ],
        "type": "string"
      },
      "MessageTypeConfigMessageType": {
        "default": "MESSAGE_TYPE_UNSPECIFIED",
        "description": " - MESSAGE_TYPE_FINDING: MESSAGE_TYPE_FINDING indicates a finding message.\n - MESSAGE_TYPE_PACKAGE_VERSION: MESSAGE_TYPE_PACKAGE_VERSION indicates a package version message.\n - MESSAGE_TYPE_PROJECT: MESSAGE_TYPE_PROJECT indicates a project message.\n - MESSAGE_TYPE_SCAN_RESULT: MESSAGE_TYPE_SCAN_RESULT indicates a scan result message.\n - MESSAGE_TYPE_ADMISSION_POLICY_FINDING: MESSAGE_TYPE_ADMISSION_POLICY_FINDING indicates an admission policy finding message (blocked or warning).",
        "enum": [
          "MESSAGE_TYPE_UNSPECIFIED",
          "MESSAGE_TYPE_FINDING",
          "MESSAGE_TYPE_PACKAGE_VERSION",
          "MESSAGE_TYPE_PROJECT",
          "MESSAGE_TYPE_SCAN_RESULT",
          "MESSAGE_TYPE_ADMISSION_POLICY_FINDING"
        ],
        "type": "string"
      },
      "NVDVulnerabilityCvssMetricV2": {
        "description": "Based on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/2.0/external/cvss-v2.0.json.",
        "properties": {
          "ac_insuf_info": {
            "type": "boolean"
          },
          "base_severity": {
            "type": "string"
          },
          "cvss_data": {
            "$ref": "#/components/schemas/v1CvssDataV2"
          },
          "exploitability_score": {
            "format": "float",
            "type": "number"
          },
          "impact_score": {
            "format": "float",
            "type": "number"
          },
          "obtain_all_privilege": {
            "type": "boolean"
          },
          "obtain_other_privilege": {
            "type": "boolean"
          },
          "obtain_user_privilege": {
            "type": "boolean"
          },
          "source": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/v1NVDMetricType"
          },
          "user_interaction_required": {
            "type": "boolean"
          }
        },
        "required": [
          "source",
          "type",
          "cvss_data"
        ],
        "type": "object"
      },
      "NVDVulnerabilityCvssMetricV30": {
        "description": "Based on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/3.0/external/cvss-v2.0.json.",
        "properties": {
          "cvss_data": {
            "$ref": "#/components/schemas/v1CvssDataV30"
          },
          "exploitability_score": {
            "format": "float",
            "type": "number"
          },
          "impact_score": {
            "format": "float",
            "type": "number"
          },
          "source": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/v1NVDMetricType"
          }
        },
        "required": [
          "source",
          "type",
          "cvss_data"
        ],
        "type": "object"
      },
      "NVDVulnerabilityCvssMetricV31": {
        "description": "Based on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/2.0/external/cvss-v3.1.json.",
        "properties": {
          "cvss_data": {
            "$ref": "#/components/schemas/v1CvssDataV31"
          },
          "exploitability_score": {
            "format": "float",
            "type": "number"
          },
          "impact_score": {
            "format": "float",
            "type": "number"
          },
          "source": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/v1NVDMetricType"
          }
        },
        "required": [
          "source",
          "type",
          "cvss_data"
        ],
        "type": "object"
      },
      "NVDVulnerabilityCvssMetricV40": {
        "description": "CvssMetricV40. Based on schema definition provided by FIRST.ORG for CVSS v4.0.\nschema in https://csrc.nist.gov/schema/nvd/api/2.0/external/cvss-v4.0.json.",
        "properties": {
          "cvss_data": {
            "$ref": "#/components/schemas/v1CvssDataV40"
          },
          "exploitability_score": {
            "format": "float",
            "type": "number"
          },
          "impact_score": {
            "format": "float",
            "type": "number"
          },
          "source": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/v1NVDMetricType"
          }
        },
        "required": [
          "source",
          "type",
          "cvss_data"
        ],
        "type": "object"
      },
      "NVDVulnerabilityRootCve": {
        "properties": {
          "cisa_action_due": {
            "type": "string"
          },
          "cisa_exploit_add": {
            "type": "string"
          },
          "cisa_required_action": {
            "type": "string"
          },
          "cisa_vulnerability_name": {
            "type": "string"
          },
          "configurations": {
            "items": {
              "$ref": "#/components/schemas/RootCveConfig"
            },
            "type": "array"
          },
          "descriptions": {
            "items": {
              "$ref": "#/components/schemas/RootCveLangString"
            },
            "type": "array"
          },
          "evaluator_comment": {
            "type": "string"
          },
          "evaluator_impact": {
            "type": "string"
          },
          "evaluator_solution": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "last_modified": {
            "format": "date-time",
            "type": "string"
          },
          "metrics": {
            "$ref": "#/components/schemas/RootCveCVSSMetric"
          },
          "published": {
            "format": "date-time",
            "type": "string"
          },
          "references": {
            "items": {
              "$ref": "#/components/schemas/NVDVulnerabilityRootCveReference"
            },
            "type": "array"
          },
          "source_identifier": {
            "type": "string"
          },
          "vendor_comments": {
            "items": {
              "$ref": "#/components/schemas/RootCveVendorComment"
            },
            "type": "array"
          },
          "vuln_status": {
            "type": "string"
          },
          "vuln_typed_status": {
            "$ref": "#/components/schemas/v1NVDStatus"
          },
          "weaknesses": {
            "items": {
              "$ref": "#/components/schemas/RootCveWeakness"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "published",
          "last_modified",
          "descriptions",
          "references"
        ],
        "type": "object"
      },
      "NVDVulnerabilityRootCveReference": {
        "properties": {
          "source": {
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "NamespaceServiceCreateNamespaceBody": {
        "description": "Namespace provides a mechanism for isolating groups of resources.\nNamespaces may be defined in a parent child hierarchy.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1NamespaceSpec"
          },
          "tenant_meta": {
            "description": "Namespaces are associated with a tenant.",
            "title": "Namespaces are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of a namespace.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "NamespaceServiceUpdateNamespaceBody": {
        "description": "Request to update a namespace.",
        "properties": {
          "object": {
            "description": "Namespace provides a mechanism for isolating groups of resources.\nNamespaces may be defined in a parent child hierarchy.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1NamespaceSpec"
              },
              "tenant_meta": {
                "description": "Namespaces are associated with a tenant.",
                "title": "Namespaces are associated with a tenant.",
                "type": "object"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "NodeFunctionRef": {
        "properties": {
          "args": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "classname": {
            "type": "string"
          },
          "declared_type": {
            "type": "string"
          },
          "function_or_attribute_name": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "language_specific": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "product": {
            "type": "string"
          },
          "registry": {
            "type": "string"
          },
          "return_type": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "NotificationActionAggregationType": {
        "default": "AGGREGATION_TYPE_UNSPECIFIED",
        "description": " - AGGREGATION_TYPE_PROJECT: AGGREGATION_TYPE_PROJECT aggregates notifications by project.\n - AGGREGATION_TYPE_DEPENDENCY: AGGREGATION_TYPE_DEPENDENCY aggregates notifications by dependency,\nroot package version, and project.\n - AGGREGATION_TYPE_DEPENDENCY_ACROSS_PKG_VERSIONS: AGGREGATION_TYPE_DEPENDENCY_ACROSS_PKG_VERSIONS aggregates\nnotifications by dependency and project, regardless of the package\nversion.\n - AGGREGATION_TYPE_NONE: AGGREGATION_TYPE_NONE does not aggregate notifications\n - AGGREGATION_TYPE_MANUAL: AGGREGATION_TYPE_MANUAL identifies notifications created directly from findings via the UI.\nEach finding results in a separate notification.",
        "enum": [
          "AGGREGATION_TYPE_UNSPECIFIED",
          "AGGREGATION_TYPE_PROJECT",
          "AGGREGATION_TYPE_DEPENDENCY",
          "AGGREGATION_TYPE_DEPENDENCY_ACROSS_PKG_VERSIONS",
          "AGGREGATION_TYPE_NONE",
          "AGGREGATION_TYPE_MANUAL"
        ],
        "type": "string"
      },
      "NotificationDismissNotificationDismissCategory": {
        "default": "NOTIFICATION_DISMISS_CATEGORY_UNSPECIFIED",
        "description": " - NOTIFICATION_DISMISS_CATEGORY_FALSE_POSITIVE: The notification is a false alarm.\n - NOTIFICATION_DISMISS_CATEGORY_MITIGATED: The notification has been taken care of.\n - NOTIFICATION_DISMISS_CATEGORY_LOW_PRIORITY: The notification is of low priority and doesn't need immediate attention.",
        "enum": [
          "NOTIFICATION_DISMISS_CATEGORY_UNSPECIFIED",
          "NOTIFICATION_DISMISS_CATEGORY_FALSE_POSITIVE",
          "NOTIFICATION_DISMISS_CATEGORY_MITIGATED",
          "NOTIFICATION_DISMISS_CATEGORY_LOW_PRIORITY"
        ],
        "type": "string"
      },
      "NotificationTargetActionActionType": {
        "default": "ACTION_TYPE_UNSPECIFIED",
        "description": " - ACTION_TYPE_WEBHOOK: ACTION_TYPE_WEBHOOK indicates a webhook call action.\n - ACTION_TYPE_JIRA: ACTION_TYPE_JIRA indicates a JIRA action.\n - ACTION_TYPE_EMAIL: ACTION_TYPE_EMAIL indicates an email action.\n - ACTION_TYPE_VANTA: ACTION_TYPE_VANTA indicates configuration of a Vanta plugin.\n - ACTION_TYPE_SLACK: ACTION_TYPE_SLACK indicates a Slack integration.\n - ACTION_TYPE_GITHUB_PR: ACTION_TYPE_GITHUB_PR indicates a GitHub PR action.\nDeprecated: Use ACTION_TYPE_REMEDIATION_PR, which supports all SCM platforms.\n - ACTION_TYPE_ADO_BOARDS: ACTION_TYPE_ADO_BOARDS indicates an ADO board action.\n - ACTION_TYPE_REMEDIATION_PR: ACTION_TYPE_REMEDIATION_PR indicates an automated remediation pull request action.\nThe pull request is opened on the SCM platform of the violating project,\nfor example a GitHub pull request or a GitLab merge request.",
        "enum": [
          "ACTION_TYPE_UNSPECIFIED",
          "ACTION_TYPE_WEBHOOK",
          "ACTION_TYPE_JIRA",
          "ACTION_TYPE_EMAIL",
          "ACTION_TYPE_VANTA",
          "ACTION_TYPE_SLACK",
          "ACTION_TYPE_GITHUB_PR",
          "ACTION_TYPE_ADO_BOARDS",
          "ACTION_TYPE_REMEDIATION_PR"
        ],
        "type": "string"
      },
      "NotificationTargetNotificationTargetAction": {
        "properties": {
          "action_type": {
            "$ref": "#/components/schemas/NotificationTargetActionActionType"
          },
          "ado_boards_config": {
            "$ref": "#/components/schemas/v1ADOBoardsConfig"
          },
          "email_config": {
            "$ref": "#/components/schemas/v1EMailConfig"
          },
          "exclude_endor_url": {
            "description": "Excludes the URL to access the Endor Labs app which provides the notification details.",
            "type": "boolean"
          },
          "github_pr_config": {
            "$ref": "#/components/schemas/v1GitHubPRConfig"
          },
          "jira_config": {
            "$ref": "#/components/schemas/v1JIRAConfig"
          },
          "public": {
            "description": "Indicates if the action endpoint is public.\nIf the endpoint not public, then endorctl attempts to create the action as if the endpoint is running on-prem.",
            "type": "boolean"
          },
          "remediation_pr_config": {
            "$ref": "#/components/schemas/v1RemediationPRConfig"
          },
          "slack_config": {
            "$ref": "#/components/schemas/v1SlackConfig"
          },
          "vanta_config": {
            "$ref": "#/components/schemas/v1VantaConfig"
          },
          "webhook_config": {
            "$ref": "#/components/schemas/v1WebhookConfig"
          }
        },
        "required": [
          "action_type"
        ],
        "type": "object"
      },
      "NotificationTargetServiceCreateNotificationTargetBody": {
        "description": "Indicates actions taken when a corresponding notification is raised.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether the object should be visible in the child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1NotificationTargetSpec"
          },
          "tenant_meta": {
            "description": "Notification Targets are associated with a tenant.",
            "title": "Notification Targets are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the notification target.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "NotificationTargetServiceUpdateNotificationTargetBody": {
        "description": "Request to update the notification target.",
        "properties": {
          "object": {
            "description": "Indicates actions taken when a corresponding notification is raised.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates whether the object should be visible in the child namespaces or not.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1NotificationTargetSpec"
              },
              "tenant_meta": {
                "description": "Notification Targets are associated with a tenant.",
                "title": "Notification Targets are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the notification target.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "OnPremSchedulerServiceCreateOnPremSchedulerBody": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1OnPremSchedulerSpec"
          },
          "tenant_meta": {
            "description": "Contains the namespace.",
            "title": "Contains the namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the onprem scheduler.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "OnPremSchedulerServiceUpdateOnPremSchedulerBody": {
        "description": "Request to update an onprem scheduler.",
        "properties": {
          "object": {
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1OnPremSchedulerSpec"
              },
              "tenant_meta": {
                "description": "Contains the namespace.",
                "title": "Contains the namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the onprem scheduler.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PRCommentConfigServiceCreatePRCommentConfigBody": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Whether the object should be visible in child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PRCommentConfigSpec"
          },
          "tenant_meta": {
            "description": "PR comment configurations are associated with a tenant.",
            "title": "PR comment configurations are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of a PR comment configuration.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PRCommentConfigServiceUpdatePRCommentConfigBody": {
        "description": "Request to update a PR comment configuration.",
        "properties": {
          "object": {
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Whether the object should be visible in child namespaces or not.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1PRCommentConfigSpec"
              },
              "tenant_meta": {
                "description": "PR comment configurations are associated with a tenant.",
                "title": "PR comment configurations are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of a PR comment configuration.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PackageFirewallConfigException": {
        "description": "Exception defines an allowlist rule for a specific package and optional version constraints.\nIf any exception matches the request, all checks are skipped immediately.",
        "properties": {
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "exact_versions": {
            "description": "Optional list of exact version strings to except.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "package_name": {
            "description": "Name of the excepted package (e.g. \"lodash\" for npm, \"requests\" for pypi).\nDoes not include version or ecosystem prefix.",
            "type": "string"
          },
          "version_ranges": {
            "description": "Optional version ranges. A package version matches if it falls within any of these ranges.\nIf both version_ranges and exact_versions are empty, all versions of the package are excepted.",
            "items": {
              "$ref": "#/components/schemas/PackageFirewallConfigVersionRange"
            },
            "type": "array"
          }
        },
        "required": [
          "ecosystem",
          "package_name"
        ],
        "type": "object"
      },
      "PackageFirewallConfigFirewallNotificationRule": {
        "description": "FirewallNotificationRule maps firewall block/warn events to NotificationTarget(s).",
        "properties": {
          "name": {
            "description": "Optional name for the notification rule.",
            "type": "string"
          },
          "notification_target_uuids": {
            "description": "UUIDs of the NotificationTarget(s) to send to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "on_actions": {
            "description": "Firewall actions that trigger this rule. Empty matches all actions.",
            "items": {
              "$ref": "#/components/schemas/v1PackageFirewallAction"
            },
            "type": "array"
          },
          "reasons": {
            "description": "Firewall reasons that trigger this rule. Empty matches all reasons.",
            "items": {
              "$ref": "#/components/schemas/v1PackageFirewallReason"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "PackageFirewallConfigVersionRange": {
        "description": "VersionRange defines an inclusive lower bound and an exclusive upper bound for a version range.\nEither boundary may be omitted.",
        "properties": {
          "end": {
            "description": "Exclusive upper bound (e.g. \"2.0.0\"). Omit to match to the end.",
            "type": "string"
          },
          "start": {
            "description": "Inclusive lower bound (e.g. \"1.0.0\"). Omit to match from the beginning.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PackageFirewallLogFilteredVersion": {
        "description": "FilteredVersion records a single package version suppressed from a metadata response\nduring a package curation event.",
        "properties": {
          "malware_uuid": {
            "description": "UUID of detected malware (populated when reason = MALWARE_DETECTED).",
            "type": "string"
          },
          "min_age_hours": {
            "description": "Configured minimum age threshold in hours, snapshotted from PackageFirewallConfig.min_age_hours\nat suppression time (populated when reason = MIN_AGE_NOT_MET). Combine with the parent Spec's\naction_at and this version's package_age_hours to derive when the version becomes eligible.",
            "format": "int32",
            "type": "integer"
          },
          "package_age_hours": {
            "description": "Age of package in hours at suppression time (populated when reason = MIN_AGE_NOT_MET).",
            "format": "int32",
            "type": "integer"
          },
          "reason": {
            "$ref": "#/components/schemas/v1PackageFirewallReason"
          },
          "version": {
            "description": "Version string that was suppressed from the metadata response.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PackageLicenseInfoLicenseInfoMapping": {
        "description": "Additional context about the raw license description.",
        "properties": {
          "confidence": {
            "description": "Confidence level of the mapping.",
            "format": "float",
            "type": "number"
          },
          "mapping_info": {
            "$ref": "#/components/schemas/v1LicenseMappingInfo"
          },
          "notes": {
            "description": "Additional notes about the mapping.",
            "type": "string"
          },
          "source": {
            "description": "Source of the license mapping information.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PackageLicenseOverrideCopyrightOverride": {
        "description": "CopyrightOverride represents an override for a single copyright.\nThis is used when the user edits the copyright text or adds a new copyright.",
        "properties": {
          "copyright_text": {
            "description": "The copyright text override (as edited by the user).\nThis is the full copyright text that will be used instead of the original.",
            "type": "string"
          },
          "file_locations": {
            "description": "The file locations where the copyright was found in the source code.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseFileLocation"
            },
            "type": "array"
          }
        },
        "required": [
          "copyright_text"
        ],
        "type": "object"
      },
      "PackageLicenseOverrideLicenseOverride": {
        "description": "LicenseOverride represents an override for a single license.\nThis is used when the user edits the license text or adds a new license.",
        "properties": {
          "copyrights": {
            "description": "The copyrights within the license text.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "file_locations": {
            "description": "The file locations where the license was found in the source code.\nThis helps identify where the original license was located.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseFileLocation"
            },
            "type": "array"
          },
          "license_text": {
            "description": "The license text override (raw license text as edited by the user).\nThis is the full text of the license that will be used instead of the original.",
            "type": "string"
          },
          "original_hash": {
            "description": "Hash of the original license from PackageLicenseInfo.hash (if overriding existing license).\nThis is the hash that maps to the key in PackageLicense.spec.license_text map.\nFor new licenses added by user, this will be empty (the hash is calculated from license_text and used as the map key).",
            "type": "string"
          },
          "source": {
            "description": "Source of the original license (e.g., \"code\", \"package_manager\", \"declared\").\nThis helps identify which original license this override corresponds to.",
            "type": "string"
          },
          "spdx_expr": {
            "description": "The SPDX expression of the license (e.g., \"MIT OR Apache-2.0\").",
            "type": "string"
          },
          "spdx_ids": {
            "description": "The SPDX IDs of the license (e.g., [\"MIT\", \"Apache-2.0\"]).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "License classification (based on licenseclassifier by Google).\nExamples: \"notice\", \"reciprocal\", \"permissive\", \"restricted\", etc.",
            "type": "string"
          },
          "url": {
            "description": "The URL link to the license details (if available).",
            "type": "string"
          }
        },
        "required": [
          "license_text"
        ],
        "type": "object"
      },
      "PackageLicenseOverrideNoticeOverride": {
        "description": "NoticeOverride represents an override for a single notice.\nThis is used when the user edits the notice text or adds a new notice.",
        "properties": {
          "file_locations": {
            "description": "The file locations where the notice was found in the source code.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseFileLocation"
            },
            "type": "array"
          },
          "notices_text": {
            "description": "The notices text override (as edited by the user).\nThis is the full notice text that will be used instead of the original.",
            "type": "string"
          }
        },
        "required": [
          "notices_text"
        ],
        "type": "object"
      },
      "PackageLicenseOverrideServiceCreatePackageLicenseOverrideBody": {
        "description": "PackageLicenseOverride represents user edits and selections for licenses, copyrights, and notices\nat the package version level. Edits made at this level apply across all projects in the namespace\nthat use the same package version.\nThe package version UUID is stored in spec.package_version_uuid.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether this override should be visible in child namespaces.\nWhen querying from a descendant namespace, handlers should include parent\noverrides only when this flag is set to true (same inheritance pattern as policies).",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageLicenseOverrideSpec"
          },
          "tenant_meta": {
            "description": "Tenant metadata.",
            "title": "Tenant metadata.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the package license override.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PackageLicenseOverrideServiceUpdatePackageLicenseOverrideBody": {
        "description": "Request to update a package license override.",
        "properties": {
          "object": {
            "description": "PackageLicenseOverride represents user edits and selections for licenses, copyrights, and notices\nat the package version level. Edits made at this level apply across all projects in the namespace\nthat use the same package version.\nThe package version UUID is stored in spec.package_version_uuid.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates whether this override should be visible in child namespaces.\nWhen querying from a descendant namespace, handlers should include parent\noverrides only when this flag is set to true (same inheritance pattern as policies).",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1PackageLicenseOverrideSpec"
              },
              "tenant_meta": {
                "description": "Tenant metadata.",
                "title": "Tenant metadata.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the package license override.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PackageLicenseQueryAppliedOverride": {
        "description": "All overrides that contributed to the final result, ordered root -\u003e target.",
        "properties": {
          "namespace": {
            "description": "Namespace where the contributing override resides.",
            "type": "string"
          },
          "override_uuid": {
            "description": "UUID of the contributing PackageLicenseOverride in that namespace.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PackageLicenseQueryMergedCopyrightEntry": {
        "description": "MergedCopyrightEntry represents a single copyright with override and selection state.",
        "properties": {
          "copyright_text": {
            "description": "The copyright text (from override if edited, otherwise from original).\nThis is the actual copyright text that will be used.",
            "readOnly": true,
            "type": "string"
          },
          "file_locations": {
            "description": "File locations where the copyright was found (from override if edited, otherwise from original).",
            "items": {
              "$ref": "#/components/schemas/v1LicenseFileLocation"
            },
            "readOnly": true,
            "type": "array"
          },
          "identifier": {
            "description": "Stable identifier/key for this copyright (file path from PackageLicense.spec.copyrights map or generated UUID for new copyrights).\nThis identifier is used as the key in copyright_overrides and deselected_copyrights maps.\nFor copyrights from PackageLicense: uses the file path key from PackageLicense.spec.copyrights map.\nFor new copyrights added by user: uses generated UUID prefixed with \"new-\".\nTo determine if a copyright is new: check if identifier starts with \"new-\" or does not exist in original PackageLicense.",
            "readOnly": true,
            "type": "string"
          },
          "is_edited": {
            "description": "Whether this copyright has been edited/overridden.\ntrue = copyright text has been modified from original, false = using original copyright text.\nCan be derived by checking if identifier exists in copyright_overrides map.",
            "readOnly": true,
            "type": "boolean"
          },
          "resolved_namespace": {
            "description": "Origin of the effective value for this entry.",
            "readOnly": true,
            "type": "string"
          },
          "resolved_override_uuid": {
            "readOnly": true,
            "type": "string"
          },
          "selected": {
            "description": "Whether this copyright is selected for inclusion in notice file.\ntrue = selected (will be included), false = deselected (will be excluded).\nDefaults to true if not present in deselected_copyrights map.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "PackageLicenseQueryMergedLicenseEntry": {
        "description": "MergedLicenseEntry represents a single license with override and selection state.",
        "properties": {
          "file_locations": {
            "description": "File locations where the license was found (from override if edited, otherwise from original).",
            "items": {
              "$ref": "#/components/schemas/v1LicenseFileLocation"
            },
            "readOnly": true,
            "type": "array"
          },
          "identifier": {
            "description": "Stable identifier for this license (hash calculated from normalized license text).\nThis identifier is used as the key in license_overrides and deselected_licenses maps.\nFor licenses from PackageLicense: uses PackageLicenseInfo.hash.\nFor new licenses added by user: hash is calculated from license_text using SHA256(MakeLicenseKey(normalized_text)).\nTo determine if a license is new: check if identifier does not exist in original PackageLicense.",
            "readOnly": true,
            "type": "string"
          },
          "is_edited": {
            "description": "Whether this license has been edited/overridden.\ntrue = license text has been modified from original, false = using original license text.\nCan be derived by checking if identifier exists in license_overrides map.",
            "readOnly": true,
            "type": "boolean"
          },
          "license_text": {
            "description": "Effective license text resolved after applying propagation across the namespace chain.",
            "readOnly": true,
            "type": "string"
          },
          "resolved_namespace": {
            "description": "Origin of the effective value for this entry.\nIf no override is applied, resolved_namespace will typically be \"oss\" and\nresolved_override_uuid will be empty.",
            "readOnly": true,
            "type": "string"
          },
          "resolved_override_uuid": {
            "readOnly": true,
            "type": "string"
          },
          "selected": {
            "description": "Whether this license is selected for inclusion in notice file.\ntrue = selected (will be included), false = deselected (will be excluded).\nDefaults to true if not present in deselected_licenses map.",
            "readOnly": true,
            "type": "boolean"
          },
          "source": {
            "description": "Source of the original license (e.g., \"code\", \"package_manager\", \"declared\").\nHelps identify which category the license belongs to.",
            "readOnly": true,
            "type": "string"
          },
          "spdx_expr": {
            "description": "SPDX expression for the license.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "PackageLicenseQueryMergedNoticeEntry": {
        "description": "MergedNoticeEntry represents a single notice with override and selection state.",
        "properties": {
          "file_locations": {
            "description": "File locations where the notice was found (from override if edited, otherwise from original).",
            "items": {
              "$ref": "#/components/schemas/v1LicenseFileLocation"
            },
            "readOnly": true,
            "type": "array"
          },
          "identifier": {
            "description": "Stable identifier for this notice (hash calculated from normalized notice text, or generated UUID for new notices).\nThis identifier is used as the key in notice_overrides and deselected_notices maps.\nFor notices from PackageLicense: uses hash or composite identifier from original.\nFor new notices added by user: hash is calculated from notices_text using SHA256(MakeLicenseKey(normalized_text)).\nTo determine if a notice is new: check if identifier does not exist in original PackageLicense.",
            "readOnly": true,
            "type": "string"
          },
          "is_edited": {
            "description": "Whether this notice has been edited/overridden.\ntrue = notice text has been modified from original, false = using original notice text.\nCan be derived by checking if identifier exists in notice_overrides map.",
            "readOnly": true,
            "type": "boolean"
          },
          "notices_text": {
            "description": "The notice text (from override if edited, otherwise from original).\nThis is the actual notice text that will be used.",
            "readOnly": true,
            "type": "string"
          },
          "resolved_namespace": {
            "description": "Origin of the effective value for this entry.",
            "readOnly": true,
            "type": "string"
          },
          "resolved_override_uuid": {
            "readOnly": true,
            "type": "string"
          },
          "selected": {
            "description": "Whether this notice is selected for inclusion in notice file.\ntrue = selected (will be included), false = deselected (will be excluded).\nDefaults to true if not present in deselected_notices map.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "PackageLicenseQueryServiceCreatePackageLicenseQueryBody": {
        "description": "PackageLicenseQuery represents the merged result of PackageLicense + PackageLicenseOverride.\nThis response combines original license data from PackageLicense with any overrides and\nselection states from PackageLicenseOverride across all namespaces in the namespace chain,\nproviding a complete view for the UI.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageLicenseQuerySpec"
          },
          "tenant_meta": {
            "title": "tenant metadata",
            "type": "object"
          },
          "uuid": {
            "description": "The uuid of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "PackageLicenseServiceCreatePackageLicenseBody": {
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageLicenseSpec"
          },
          "tenant_meta": {
            "description": "The tenant metadata of the package license.",
            "title": "The tenant metadata of the package license.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the package license.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "PackageLicenseServiceUpdatePackageLicenseBody": {
        "description": "Request to update a package license.",
        "properties": {
          "object": {
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1PackageLicenseSpec"
              },
              "tenant_meta": {
                "description": "The tenant metadata of the package license.",
                "title": "The tenant metadata of the package license.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the package license.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "PackageManagerAWSAuthProvider": {
        "description": "AWSAuthProvider represents a configuration for the authentication with the\nAWS Code Artifact repository.",
        "properties": {
          "allowed_audience": {
            "description": "allowed_audience is the allowed audience value to retrieve the role.",
            "type": "string"
          },
          "domain": {
            "description": "domain name of the AWS Code Artifact repository.",
            "type": "string"
          },
          "domain_owner": {
            "description": "domain_owner of the AWS Code Artifact repository.",
            "type": "string"
          },
          "region": {
            "description": "region is the region of the AWS Code Artifact repository.",
            "type": "string"
          },
          "repository": {
            "description": "repositiry of the AWS Code Artifact repository.",
            "type": "string"
          },
          "target_role_arn": {
            "description": "target_role_arn is the role that we need to assume in AWS.",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "domain_owner",
          "repository",
          "target_role_arn",
          "allowed_audience",
          "region"
        ],
        "type": "object"
      },
      "PackageManagerAuthProvider": {
        "properties": {
          "aws": {
            "$ref": "#/components/schemas/PackageManagerAWSAuthProvider"
          },
          "gar": {
            "$ref": "#/components/schemas/PackageManagerGARAuthProvider"
          },
          "package_manager_type": {
            "$ref": "#/components/schemas/PackageManagerAuthProviderPackageManagerType"
          }
        },
        "required": [
          "package_manager_type"
        ],
        "type": "object"
      },
      "PackageManagerAuthProviderPackageManagerType": {
        "default": "PACKAGE_MANAGER_TYPE_UNSPECIFIED",
        "enum": [
          "PACKAGE_MANAGER_TYPE_UNSPECIFIED",
          "PACKAGE_MANAGER_TYPE_NPM",
          "PACKAGE_MANAGER_TYPE_MVN",
          "PACKAGE_MANAGER_TYPE_CARGO",
          "PACKAGE_MANAGER_TYPE_PYPI",
          "PACKAGE_MANAGER_TYPE_GEM",
          "PACKAGE_MANAGER_TYPE_NUGET",
          "PACKAGE_MANAGER_TYPE_PACKAGIST",
          "PACKAGE_MANAGER_TYPE_GRADLE",
          "PACKAGE_MANAGER_TYPE_COCOAPOD",
          "PACKAGE_MANAGER_TYPE_SWIFT",
          "PACKAGE_MANAGER_TYPE_CONAN"
        ],
        "type": "string"
      },
      "PackageManagerGARAuthProvider": {
        "description": "GARAuthProvider represents a configuration for authentication with\nGoogle Artifact Registry.\nSupported package manager types: NPM, MVN, GRADLE, PYPI.\nUnsupported types (CARGO, GEM, NUGET, PACKAGIST, COCOAPOD, SWIFT)\nare rejected at runtime.",
        "properties": {
          "location": {
            "description": "location is the GCP region or multi-region where the repository is hosted\n(e.g., \"us-central1\", \"europe-west1\", \"us\").",
            "type": "string"
          },
          "project_id": {
            "description": "project_id is the GCP project ID that hosts the Artifact Registry repository.",
            "type": "string"
          },
          "repository": {
            "description": "repository is the name of the Artifact Registry repository.",
            "type": "string"
          },
          "service_account_key": {
            "description": "service_account_key is the JSON key for a GCP service account with\nartifactregistry.reader permissions. Encrypted at rest.",
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "location",
          "repository",
          "service_account_key"
        ],
        "type": "object"
      },
      "PackageManagerServiceCreatePackageManagerBody": {
        "description": "PackageManager holds the data for the various package\nmanagers of the enterprise. Mainly locations and\naccess credentials when needed to resolve/scan packages\nfrom private package managers.\nAn enterprise can create one or more package managers\nin a namespace. All the package managers of the given\nnamespace will be taken into account when resolving.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageManagerSpec"
          },
          "tenant_meta": {
            "description": "Git repositories are associated tenant.",
            "title": "Git repositories are associated tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the package manager.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PackageManagerServiceUpdatePackageManagerBody": {
        "description": "Request to update the package manager.",
        "properties": {
          "object": {
            "description": "PackageManager holds the data for the various package\nmanagers of the enterprise. Mainly locations and\naccess credentials when needed to resolve/scan packages\nfrom private package managers.\nAn enterprise can create one or more package managers\nin a namespace. All the package managers of the given\nnamespace will be taken into account when resolving.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Propagate indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1PackageManagerSpec"
              },
              "tenant_meta": {
                "description": "Git repositories are associated tenant.",
                "title": "Git repositories are associated tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the package manager.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PackageVersionDependencyCargoDependencySpec": {
        "description": "CargoDependencySpec specifies a dependency for\ntype defined in the Rust cargo_metadata crate.",
        "properties": {
          "cfg": {
            "$ref": "#/components/schemas/CargoDependencySpecCfg"
          },
          "features": {
            "description": "The list of features enabled for this dependency.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "$ref": "#/components/schemas/CargoDependencySpecDependencyKind"
          },
          "name": {
            "description": "The name of dependency.",
            "type": "string"
          },
          "named": {
            "$ref": "#/components/schemas/CargoDependencySpecNamedPlatform"
          },
          "optional": {
            "description": "Whether this dependency is required or optional.",
            "type": "boolean"
          },
          "path": {
            "description": "/ The file system path for a local path dependency.",
            "type": "string"
          },
          "registry": {
            "description": "/ The URL of the index of the registry where this dependency is from.\n/ If not specified, the dependency is from crates.io.",
            "type": "string"
          },
          "rename": {
            "description": "If the dependency is renamed, this is the new name for the dependency.",
            "type": "string"
          },
          "req": {
            "description": "The required version, specified as a list of version requirements.\nthat all have to be satisfied.",
            "items": {
              "$ref": "#/components/schemas/CargoDependencySpecCargoVersionReq"
            },
            "type": "array"
          },
          "source": {
            "description": "The source repository query string to use, if any.",
            "type": "string"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all\nthe targets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "uses_default_features": {
            "description": "Whether the default features in this dependency are used or not.",
            "type": "boolean"
          },
          "version_constraints": {
            "description": "Package version number rules.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "kind",
          "optional",
          "uses_default_features",
          "version_constraints"
        ],
        "type": "object"
      },
      "PackageVersionDependencyCocoapodDependencySpec": {
        "description": "CocoapodDependencySpec specifies storing a dependency for\ncocoapod packages.",
        "properties": {
          "name": {
            "title": "The name of the package.\nExample: Alamofire",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "title": "The Cocoapod version that is defined in the\nPodfile. Example: (~\u003e 1.2)",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionDependencyConanDependencySpec": {
        "description": "ConanDependencySpec specifies storing an unresolved dependency for Conan packages.",
        "properties": {
          "name": {
            "description": "Package name, for example, zlib.",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "targets": {
            "description": "Targets that this dependency applies to.\nIf there is no target then this dependency applies to all targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "description": "Conan version constraints, for example, \u003e=1.2 \u003c2.0.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionDependencyGemDependencySpec": {
        "description": "GemDependencySpec specifies storing a dependency for Ruby based\nrepositories or packages.",
        "properties": {
          "name": {
            "title": "The name of the Ruby dependency (name of a gem).\nExample: nokogiri",
            "type": "string"
          },
          "scope_type": {
            "$ref": "#/components/schemas/PackageVersionDependencyGemDependencySpecScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "title": "Package version number rules.\nExample-1: ~= 1.2\nExample-2: \u003e= 4.0.0, \u003c 6.0.0\nExample-3: == 5.4.7",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version_constraints"
        ],
        "type": "object"
      },
      "PackageVersionDependencyGemDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "description": "Scope.\n\n - SCOPE_UNSPECIFIED: Unspecified scope when it is unclear what the scope is.\n - SCOPE_NORMAL: Default scope when no other scope is provided.\n - SCOPE_DEVELOPMENT: All development and test dependencies.",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_NORMAL",
          "SCOPE_DEVELOPMENT"
        ],
        "type": "string"
      },
      "PackageVersionDependencyGitHubActionDependencySpec": {
        "description": "GitHubActionDependencySpec specifies storing a dependency for\nGitHub action packages.",
        "properties": {
          "action_type": {
            "$ref": "#/components/schemas/GitHubActionDependencySpecGHActionType"
          },
          "name": {
            "title": "The name of the GitHub action\nExample: actions/checkout",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyGitHubActionDependencySpecScope"
          },
          "version": {
            "title": "The version of the GitHub action\nExample: v1, v2, main",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionDependencyGitHubActionDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "description": "The scope of the GitHub action dependency.\n\n - SCOPE_UNSPECIFIED: unspecified scope when it is unclear what the scope is.\n - SCOPE_NORMAL: NORMAL indicates that the GitHub action is being used in prod context.\n - SCOPE_TEST: TEST indicates that the GitHub action is being used in test context.",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_NORMAL",
          "SCOPE_TEST"
        ],
        "type": "string"
      },
      "PackageVersionDependencyGoDependencySpec": {
        "description": "GoDependencySpec specifies a dependency for\nGo packages or repositories.",
        "properties": {
          "package": {
            "title": "The package url of the go dependency.\nExample: go://github.com/hashicorp/golang-lru/simplelru@v0.5.4",
            "type": "string"
          },
          "ref": {
            "description": "The ref of the dependency package version.",
            "type": "string"
          },
          "scope_type": {
            "$ref": "#/components/schemas/PackageVersionDependencyGoDependencySpecScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          }
        },
        "required": [
          "package",
          "ref"
        ],
        "type": "object"
      },
      "PackageVersionDependencyGoDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_NORMAL",
          "SCOPE_TEST"
        ],
        "type": "string"
      },
      "PackageVersionDependencyHuggingFaceDependencySpec": {
        "description": "HuggingFaceDependencySpec specifies storing a dependency\nfor hugging face models.",
        "properties": {
          "name": {
            "title": "The name of the model or package.\nExample: meta-llama/Meta-Llama-3-8B-Instruct",
            "type": "string"
          },
          "version": {
            "title": "The version of the model or package.\nExample: main",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionDependencyMavenDependencySpec": {
        "description": "MavenDependencySpec specifies a dependency for\nMaven repositories or packages.",
        "properties": {
          "artifact_id": {
            "description": "The name of a Maven project.",
            "type": "string"
          },
          "classifier": {
            "description": "Differentiates Maven artifacts that were built from the same\nPOM for different contexts. Some examples are \"tests\", \"client\", and\n\"sources\".",
            "type": "string"
          },
          "exclusions": {
            "description": "Maven dependencies of a package version explicitly excluded.",
            "type": "string"
          },
          "group_id": {
            "description": "A unique identifier for an organization or project in Maven.",
            "type": "string"
          },
          "optional": {
            "description": "Whether a Maven dependency is needed or not for a project to work\ncorrectly.",
            "type": "boolean"
          },
          "scope": {
            "description": "Maven dependency scopes which can help to limit the\ntransitivity of the dependencies and determine build tasks and lifecycle\na dependency applies to. Deprecated. Maintained for compatibility.",
            "type": "string"
          },
          "scope_type": {
            "$ref": "#/components/schemas/PackageVersionDependencyMavenDependencySpecScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "type": {
            "description": "The Maven dependency type. Some examples are \"jar\", \"ear\", and\n\"test-jar\".",
            "type": "string"
          },
          "version_constraints": {
            "description": "Maven version number rules.",
            "type": "string"
          }
        },
        "required": [
          "group_id",
          "artifact_id",
          "version_constraints"
        ],
        "type": "object"
      },
      "PackageVersionDependencyMavenDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "description": " - SCOPE_UNSPECIFIED: Scope is not set.\n - SCOPE_COMPILE: Dependency is required at compile time.\n - SCOPE_PROVIDED: Dependency is provided at runtime by JDK or a container.\n - SCOPE_RUNTIME: Dependency is required at runtime but not at compile time.\n - SCOPE_TEST: Dependency is not required at runtime and is only used for test\npurposes.\n - SCOPE_SYSTEM: Dependency is provided by the host system.\n - SCOPE_CUSTOM: Scope is not predefined and is a customized value for certain\necosystems.\n - SCOPE_VENDORED_CODE: Dependency is provided by source code vendored.\n - SCOPE_IMPORT: Dependency is imported via pom/abstract dependency.",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_COMPILE",
          "SCOPE_PROVIDED",
          "SCOPE_RUNTIME",
          "SCOPE_TEST",
          "SCOPE_SYSTEM",
          "SCOPE_CUSTOM",
          "SCOPE_VENDORED_CODE",
          "SCOPE_IMPORT"
        ],
        "type": "string"
      },
      "PackageVersionDependencyNpmDependencySpec": {
        "description": "NpmDependencySpec specifies storing a dependency for npm\nbased repositories or packages.",
        "properties": {
          "name": {
            "title": "name specifies the package name of the npm package.\nExample: react",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/PackageVersionDependencyNpmDependencySpecScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version": {
            "title": "version specifies the version of the npm dependency if concrete version\nis defined in package.json. Example: 1.0.0",
            "type": "string"
          },
          "version_constraint": {
            "title": "versionConstraints are module version number rules if no concrete version\nis found. Example-1: ~= 3.2 Example-2: \u003e= 2.0.0, \u003c 3.0.0 Example-3:\n== 4.7.0",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionDependencyNpmDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "description": "The scope of the npm dependency.\n\n - SCOPE_UNSPECIFIED: unspecified scope when it is unclear what the scope is.\n - SCOPE_DEPENDENCY: DEPENDENCY indicates that the dependency is required for the package to\nfunction.\n - SCOPE_DEV_DEPENDENCY: DEV_DEPENDENCY indicates that the dependency is required for\ndevelopment purposes.\n - SCOPE_OPTIONAL_DEPENDENCY: OPTIONAL_DEPENDENCY indicates that the dependency is optional.\n - SCOPE_PEER_DEPENDENCY: PEER_DEPENDENCY indicates that the dependency is Peer.",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_DEPENDENCY",
          "SCOPE_DEV_DEPENDENCY",
          "SCOPE_OPTIONAL_DEPENDENCY",
          "SCOPE_PEER_DEPENDENCY"
        ],
        "type": "string"
      },
      "PackageVersionDependencyNugetDependencySpec": {
        "description": "NugetDependencySpec specifies storing a dependency for\nNuGet based repositories or packages.",
        "properties": {
          "name": {
            "title": "The package URL of the NuGet package.\nExample: nuget://System.Text.JSON@1.0.0",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "title": "The NuGet package version that is defined in the\ncsproj file. Example-1: [1.0.0, 2.0.0), Example-2: * Example-3:\n(1.0.0, 2.0.0]",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionDependencyPackagistDependencySpec": {
        "description": "PackagistDependencySpec specifies storing a dependency for php\nbased repositories or packages.",
        "properties": {
          "name": {
            "title": "The name of the PHP package dependency.\nExample: monolog/monolog",
            "type": "string"
          },
          "scope_type": {
            "$ref": "#/components/schemas/PackageVersionDependencyPackagistDependencySpecScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "title": "Package version number rules.\nExample-1: ^1.5.3 || ^2.0\nExample-2: ^1.8.1\nExample-3: ^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version_constraints"
        ],
        "type": "object"
      },
      "PackageVersionDependencyPackagistDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "description": "Scope.\n\n - SCOPE_UNSPECIFIED: unspecified scope when it is unclear what the scope is.\n - SCOPE_NORMAL: default scope when no other scope is provided.\n - SCOPE_DEVELOPMENT: all development and test dependencies.",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_NORMAL",
          "SCOPE_DEVELOPMENT"
        ],
        "type": "string"
      },
      "PackageVersionDependencyPypiDependencySpec": {
        "description": "PypiDependencySpec specifies a dependency for\nPython based repositories or packages.",
        "properties": {
          "name": {
            "title": "The package name of the python dependency.\nExample: multidict",
            "type": "string"
          },
          "package_manager_type": {
            "$ref": "#/components/schemas/PackageVersionDependencyPypiDependencySpecPackageManagerType"
          },
          "scope_type": {
            "$ref": "#/components/schemas/PackageVersionDependencyPypiDependencySpecScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.\nIf there is no target then this dependency will be applicable for all the\ntargets. A dependency can be valid for multiple targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "title": "Package version number rules.\nExample-1: ~= 3.2\nExample-2: \u003e= 2.0.0, \u003c 3.0.0\nExample-3: == 4.7.0",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version_constraints"
        ],
        "type": "object"
      },
      "PackageVersionDependencyPypiDependencySpecPackageManagerType": {
        "default": "PACKAGE_MANAGER_TYPE_UNSPECIFIED",
        "description": "Python package manager.\n\n - PACKAGE_MANAGER_TYPE_PIP: PIP package manager\n - PACKAGE_MANAGER_TYPE_PIPENV: PIPENV package manager\n - PACKAGE_MANAGER_TYPE_POETRY: POETRY package manager\n - PACKAGE_MANAGER_TYPE_PDM: PDM package manager\n - PACKAGE_MANAGER_TYPE_UV: UV package manager",
        "enum": [
          "PACKAGE_MANAGER_TYPE_UNSPECIFIED",
          "PACKAGE_MANAGER_TYPE_PIP",
          "PACKAGE_MANAGER_TYPE_PIPENV",
          "PACKAGE_MANAGER_TYPE_POETRY",
          "PACKAGE_MANAGER_TYPE_PDM",
          "PACKAGE_MANAGER_TYPE_UV"
        ],
        "type": "string"
      },
      "PackageVersionDependencyPypiDependencySpecScope": {
        "default": "SCOPE_UNSPECIFIED",
        "description": "Scope.\n\n - SCOPE_UNSPECIFIED: Unspecified scope when it is unclear what the scope is.\n - SCOPE_NORMAL: Default scope when no other scope is provided.\n - SCOPE_OPTIONAL: All optional dependencies and extras related to features, dev, test or\nany other.",
        "enum": [
          "SCOPE_UNSPECIFIED",
          "SCOPE_NORMAL",
          "SCOPE_OPTIONAL"
        ],
        "type": "string"
      },
      "PackageVersionDependencySwiftDependencySpec": {
        "description": "SwiftDependencySpec specifies storing a dependency for Swift packages.",
        "properties": {
          "branch": {
            "minLength": 1,
            "type": "string"
          },
          "exact": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "title": "The name of the Swift package.\nExample: github.com/Alamofire/Alamofire",
            "type": "string"
          },
          "range": {
            "$ref": "#/components/schemas/PackageVersionDependencySwiftDependencySpecRange"
          },
          "revision": {
            "minLength": 1,
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "targets": {
            "description": "The targets to which this dependency applies.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "exact",
          "revision",
          "branch",
          "range"
        ],
        "type": "object"
      },
      "PackageVersionDependencySwiftDependencySpecRange": {
        "description": "Range represents a version range.",
        "properties": {
          "lower_bound": {
            "minLength": 1,
            "type": "string"
          },
          "upper_bound": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "lower_bound",
          "upper_bound"
        ],
        "type": "object"
      },
      "PackageVersionDependencyUnresolvedDependencySpec": {
        "description": "Unresolved dependency data.",
        "properties": {
          "name": {
            "description": "Package name, for example, Alamofire.",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "targets": {
            "description": "Targets that this dependency applies to.\nIf there is no target then this dependency applies to all targets.",
            "items": {
              "$ref": "#/components/schemas/v1Target"
            },
            "type": "array"
          },
          "version_constraints": {
            "description": "Version constraints, for example, ~\u003e 1.2.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "PackageVersionResolutionErrors": {
        "description": "ResolutionErrors captures the error results.",
        "properties": {
          "call_graph": {
            "$ref": "#/components/schemas/v1ResolutionStatus"
          },
          "resolved": {
            "$ref": "#/components/schemas/v1ResolutionStatus"
          },
          "unresolved": {
            "$ref": "#/components/schemas/v1ResolutionStatus"
          }
        },
        "type": "object"
      },
      "PackageVersionServiceUpdatePackageVersionBody": {
        "description": "The request to update a package version.",
        "properties": {
          "object": {
            "description": "PackageVersion represents a version of a package.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "processing_status": {
                "$ref": "#/components/schemas/v1ProcessingStatus"
              },
              "spec": {
                "$ref": "#/components/schemas/v1PackageVersionSpec"
              },
              "tenant_meta": {
                "description": "PackageVersions are associated with a tenant.",
                "title": "PackageVersions are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the package version resource.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "PackageVersionSourceCodeReference": {
        "properties": {
          "http_clone_url": {
            "description": "The URL of the source code repository.",
            "type": "string"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "version": {
            "$ref": "#/components/schemas/v1Version"
          }
        },
        "type": "object"
      },
      "PackagistSpecAuthKind": {
        "default": "AUTH_KIND_UNSPECIFIED",
        "description": "Auth methods for Packagist - reference\nhttps://getcomposer.org/doc/articles/authentication-for-private-packages.md.",
        "enum": [
          "AUTH_KIND_UNSPECIFIED",
          "AUTH_KIND_HTTP_BASIC",
          "AUTH_KIND_HTTP_BEARER",
          "AUTH_KIND_GITHUB_OAUTH",
          "AUTH_KIND_GITLAB_OAUTH",
          "AUTH_KIND_GITLAB_TOKEN",
          "AUTH_KIND_BITBUCKET_OAUTH"
        ],
        "type": "string"
      },
      "PathNode": {
        "description": "Information about one function node.",
        "properties": {
          "function_ref": {
            "$ref": "#/components/schemas/NodeFunctionRef"
          },
          "internal": {
            "type": "boolean"
          },
          "package_version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "PermissionsMethods": {
        "description": "An array of allowed methods.",
        "properties": {
          "methods": {
            "items": {
              "$ref": "#/components/schemas/v1Method"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "PolicyAdmissionAction": {
        "properties": {
          "bypass_exceptions": {
            "description": "Set to true if exception policies should be ignored for findings\nmatching this policy.",
            "type": "boolean"
          },
          "disable_enforcement": {
            "description": "If disable_enforcement is set the policy will just log the result\nand not enforce an action. This allows debugging and observation\nof the system.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "PolicyExceptionAction": {
        "properties": {
          "expiration_time": {
            "description": "Expiration time of the exception policy.",
            "format": "date-time",
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/v1ExceptionReason"
          },
          "tags": {
            "description": "[Optional] List of tags to add to spec.exception.tags in matching\nfindings.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "PolicyFindingAction": {
        "properties": {
          "categories": {
            "description": "List of categories that capture the use cases the finding fits in.\nFor policy templates, this is used as the default value but\nit can be changed.",
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "explanation": {
            "description": "Explanation provides information about the reason this is considered\nnoteworthy. For policy templates this is used as the default value but\nit can be changed to any free form string.",
            "type": "string"
          },
          "external_name": {
            "description": "External finding name.\nFor policy templates this is used as the default value but\nit can be changed to any free form string.",
            "type": "string"
          },
          "level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "meta_tags": {
            "description": "Additional meta tags for the finding that is created.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "remediation": {
            "description": "Remediation instructions.\nFor policy templates this is used as the default value but\nit can be changed to any free form string.",
            "type": "string"
          },
          "summary": {
            "description": "Summary of the finding that is created.\nFor policy templates this is used as the default value but\nit can be changed to any free form string.",
            "type": "string"
          },
          "tags": {
            "description": "Additional tags for the finding that is created.\nFor policy templates, this is used as the default value but\nit can be changed.",
            "items": {
              "$ref": "#/components/schemas/v1FindingTags"
            },
            "type": "array"
          },
          "target_kind": {
            "description": "Repository, RepositoryVersion, or PackageVersion.\nThis is usually the same as the finding parent kind.",
            "type": "string"
          }
        },
        "required": [
          "level",
          "summary",
          "explanation",
          "remediation"
        ],
        "type": "object"
      },
      "PolicyPolicyType": {
        "default": "POLICY_TYPE_UNSPECIFIED",
        "description": " - POLICY_TYPE_ADMISSION: POLICY_TYPE_ADMISSION will admit/reject pipeline runs.\nAdmission policies operate on Findings and are run during\na CI/CD pipeline. They may return data such as the uuids\nof findings that violate the policy.\n - POLICY_TYPE_NOTIFICATION: POLICY_TYPE_NOTIFICATION is for policies that generate notifications.\n - POLICY_TYPE_ML_FINDING: ML finding policies enable or disable algorithmic findings.\nNote that there is no input data for these policies,\nthey always return output, and the allowed value is ignored.\n - POLICY_TYPE_SYSTEM_FINDING: A system finding policy is created from a system policy\ntemplate. It processes data and creates new findings.\nSystem finding policies are run together with user and\nML (a.k.a. algorithmic) findings.\nSystem finding policies can only be enabled, disabled, and\nedited. They cannot be created or deleted.\n - POLICY_TYPE_USER_FINDING: A user finding policy is created from scratch or from a customer\npolicy template. It processes data and creates new findings.\nUser finding policies are run together with system and\nML (a.k.a. algorithmic) findings.\nUser finding policies can be created, enabled, disabled, edited,\nand deleted.\n - POLICY_TYPE_EXCEPTION: An exception policy identifies findings which should be\nexcluded from admission and notification policies. It is\ncreated from scratch or from an exception policy template.\n - POLICY_TYPE_REMEDIATION: A remediation policy identifies findings which should be\nremediated. It is created from scratch or from a remediation\npolicy template.",
        "enum": [
          "POLICY_TYPE_UNSPECIFIED",
          "POLICY_TYPE_ADMISSION",
          "POLICY_TYPE_NOTIFICATION",
          "POLICY_TYPE_FINDING",
          "POLICY_TYPE_FINDING_CFG",
          "POLICY_TYPE_ML_FINDING",
          "POLICY_TYPE_SYSTEM_FINDING",
          "POLICY_TYPE_USER_FINDING",
          "POLICY_TYPE_EXCEPTION",
          "POLICY_TYPE_REMEDIATION"
        ],
        "type": "string"
      },
      "PolicyServiceCreatePolicyBody": {
        "description": "Policy represents a policy in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Whether the object should be visible in child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PolicySpec"
          },
          "tenant_meta": {
            "description": "Policies can be issued per namespace.",
            "title": "Policies can be issued per namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the policy.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PolicyServiceUpdatePolicyBody": {
        "description": "Request to update a policy.",
        "properties": {
          "object": {
            "description": "Policy represents a policy in the system.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Whether the object should be visible in child namespaces or not.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1PolicySpec"
              },
              "tenant_meta": {
                "description": "Policies can be issued per namespace.",
                "title": "Policies can be issued per namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the policy.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PolicyTemplateParameter": {
        "properties": {
          "default_values": {
            "description": "List of default values, if applicable.\nUsed by the UI to pre-populate input values.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the field.",
            "type": "string"
          },
          "multiple_ok": {
            "description": "Is true if multiple possible values are allowed to be set as a list.",
            "type": "boolean"
          },
          "name": {
            "description": "The parameter name displayed to the user.",
            "type": "string"
          },
          "possible_values": {
            "description": "A list of possible values that are accepted\nby the template. Can be used by the UI as a selector.\nIgnored by UI if possible_values_from_db is set.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "possible_values_from_db": {
            "$ref": "#/components/schemas/TemplateParameterQueryApiData"
          },
          "required": {
            "description": "Set to true if the parameter must have an input value.",
            "type": "boolean"
          },
          "value": {
            "description": "The actual template parameter name and\nthe key in the policy template_values map.",
            "type": "string"
          }
        },
        "required": [
          "value",
          "description",
          "name"
        ],
        "type": "object"
      },
      "PolicyTemplateParameterValues": {
        "properties": {
          "values": {
            "items": {
              "type": "string"
            },
            "title": "List of template parameter values",
            "type": "array"
          }
        },
        "type": "object"
      },
      "ProjectServiceCreateProjectBody": {
        "description": "Logical root object that serves as the basis for organizing and managing all\ninformation related to a repository.\n\nA project corresponds to a repository.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ProjectSpec"
          },
          "tenant_meta": {
            "description": "The tenant to which the project belongs.",
            "title": "The tenant to which the project belongs.",
            "type": "object"
          },
          "uuid": {
            "description": "The unique identifier of the project.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ProjectServiceUpdateProjectBody": {
        "description": "Request used to update a project.",
        "properties": {
          "object": {
            "description": "Logical root object that serves as the basis for organizing and managing all\ninformation related to a repository.\n\nA project corresponds to a repository.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "processing_status": {
                "$ref": "#/components/schemas/v1ProcessingStatus"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ProjectSpec"
              },
              "tenant_meta": {
                "description": "The tenant to which the project belongs.",
                "title": "The tenant to which the project belongs.",
                "type": "object"
              },
              "uuid": {
                "description": "The unique identifier of the project.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "PullRequestSecurityReviewResultInfoChangeDescription": {
        "description": "ChangeDescription provides a detailed explanation of specific changes made within a file.\nUsed to track and document individual modifications for better understanding of the changes.",
        "properties": {
          "change_kind": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoChangeKind"
          },
          "description": {
            "title": "Human-readable description of the change",
            "type": "string"
          },
          "line": {
            "format": "int32",
            "title": "Starting line number of the change",
            "type": "integer"
          },
          "line_end": {
            "format": "int32",
            "title": "Ending line number of the change",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "PullRequestSecurityReviewResultInfoChangeKind": {
        "default": "CHANGE_KIND_UNSPECIFIED",
        "description": "ChangeKind indicates the type of modification made to a code element (file, function, or snippet)\nwithin the pull request. This helps track whether items are newly added, modified, or removed.\n\n - CHANGE_KIND_UNSPECIFIED: Default state when the change type is unknown\n - CHANGE_KIND_NEW: Indicates a newly added element\n - CHANGE_KIND_MODIFIED: Indicates an existing element that was modified\n - CHANGE_KIND_REMOVED: Indicates an element that was removed",
        "enum": [
          "CHANGE_KIND_UNSPECIFIED",
          "CHANGE_KIND_NEW",
          "CHANGE_KIND_MODIFIED",
          "CHANGE_KIND_REMOVED"
        ],
        "type": "string"
      },
      "PullRequestSecurityReviewResultInfoCodeSnippet": {
        "description": "CodeSnippet represents a specific portion of code that has security implications.\nThis could be sensitive operations, security controls, or potential vulnerabilities.",
        "properties": {
          "change_kind": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoChangeKind"
          },
          "description": {
            "title": "Description of what the code snippet does",
            "type": "string"
          },
          "file": {
            "title": "File path where the snippet is located",
            "type": "string"
          },
          "impact": {
            "title": "Security impact or implications of this code",
            "type": "string"
          },
          "language": {
            "title": "Code language of the snippet",
            "type": "string"
          },
          "line": {
            "format": "int32",
            "title": "Starting line number of the snippet",
            "type": "integer"
          },
          "line_end": {
            "format": "int32",
            "title": "Ending line number of the snippet",
            "type": "integer"
          },
          "snippet": {
            "title": "The actual code content of the snippet",
            "type": "string"
          }
        },
        "required": [
          "file",
          "line"
        ],
        "type": "object"
      },
      "PullRequestSecurityReviewResultInfoFileChanges": {
        "description": "FileChanges tracks all modifications made to a specific file in the pull request.\nProvides a comprehensive view of how a file was changed and its security implications.",
        "properties": {
          "added_lines": {
            "format": "int32",
            "title": "Number of lines added to the file",
            "type": "integer"
          },
          "change_kind": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoChangeKind"
          },
          "changed_functions": {
            "items": {
              "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoSecurityRelevantFunction"
            },
            "title": "List of security-relevant functions affected",
            "type": "array"
          },
          "code_change_description": {
            "items": {
              "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoChangeDescription"
            },
            "title": "Detailed descriptions of individual changes",
            "type": "array"
          },
          "path": {
            "title": "Path to the modified file",
            "type": "string"
          },
          "purpose": {
            "title": "Overall purpose or role of the file",
            "type": "string"
          },
          "removed_lines": {
            "format": "int32",
            "title": "Number of lines removed from the file",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "PullRequestSecurityReviewResultInfoSecurityAspectMetric": {
        "description": "SecurityAspectMetric represents a specific security concern or aspect identified during review.\nUsed to quantify and qualify various security characteristics of the changes.",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoSecurityReviewCategory"
          },
          "confidence_justification": {
            "title": "Explanation of the confidence score",
            "type": "string"
          },
          "confidence_level": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoSecurityReviewConfidenceLevel"
          },
          "description": {
            "title": "Detailed description of the security concern",
            "type": "string"
          },
          "justification": {
            "title": "Reasoning behind the security assessment",
            "type": "string"
          },
          "security_impact": {
            "$ref": "#/components/schemas/SecurityAspectMetricSecurityImpactType"
          },
          "severity_level": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoSecuritySeverityLevel"
          },
          "snippets": {
            "items": {
              "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoCodeSnippet"
            },
            "title": "Code snippets related to this security aspect",
            "type": "array"
          },
          "title": {
            "title": "Short title describing the security aspect",
            "type": "string"
          }
        },
        "required": [
          "category",
          "title",
          "severity_level",
          "confidence_level"
        ],
        "type": "object"
      },
      "PullRequestSecurityReviewResultInfoSecurityRelevantFunction": {
        "description": "SecurityRelevantFunction represents a function or method that performs security-sensitive operations.\nor requires special security consideration during review.",
        "properties": {
          "change_kind": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoChangeKind"
          },
          "description": {
            "title": "Description of the function's purpose",
            "type": "string"
          },
          "name": {
            "title": "Name of the function",
            "type": "string"
          },
          "security_labels": {
            "items": {
              "type": "string"
            },
            "title": "Security classification or sensitivity level of the function",
            "type": "array"
          }
        },
        "type": "object"
      },
      "PullRequestSecurityReviewResultInfoSecurityReviewCategory": {
        "default": "SECURITY_REVIEW_CATEGORY_UNSPECIFIED",
        "description": "SecurityCategory represents the different categories of security aspects that can be evaluated.\n\n - SECURITY_REVIEW_CATEGORY_UNSPECIFIED: Default when category is unknown\n - SECURITY_REVIEW_CATEGORY_DEPENDENCY: Integration of external code, packages, and frameworks\n - SECURITY_REVIEW_CATEGORY_ACCESS_CONTROL: Authentication, authorization mechanisms and session management\n - SECURITY_REVIEW_CATEGORY_API_ENDPOINT: API and service entry points\n - SECURITY_REVIEW_CATEGORY_DATABASE: Database architecture and security\n - SECURITY_REVIEW_CATEGORY_CRYPTOGRAPHIC: Cryptographic systems and implementations\n - SECURITY_REVIEW_CATEGORY_PAYMENT_PROCESSING: Payment processing and financial systems\n - SECURITY_REVIEW_CATEGORY_MEMORY_PROTECTION: Memory management and protection\n - SECURITY_REVIEW_CATEGORY_PII_DATA_HANDLING: Processing of PII and sensitive information\n - SECURITY_REVIEW_CATEGORY_INPUT_VALIDATION: Input validation and processing security\n - SECURITY_REVIEW_CATEGORY_INFRASTRUCTURE: Infrastructure security\n - SECURITY_REVIEW_CATEGORY_CI_CD: CI/CD pipeline security\n - SECURITY_REVIEW_CATEGORY_CONFIGURATION: Application and infrastructure configuration\n - SECURITY_REVIEW_CATEGORY_NETWORK: Network security and communication protocols\n - SECURITY_REVIEW_CATEGORY_AI: AI/LLM integration security\n - SECURITY_REVIEW_CATEGORY_IMPROVEMENT: Improvement to the security posture\n - SECURITY_REVIEW_CATEGORY_VULNERABILITY: Vulnerability found in the code\n - SECURITY_REVIEW_CATEGORY_BUG: Bug found in the code",
        "enum": [
          "SECURITY_REVIEW_CATEGORY_UNSPECIFIED",
          "SECURITY_REVIEW_CATEGORY_DEPENDENCY",
          "SECURITY_REVIEW_CATEGORY_ACCESS_CONTROL",
          "SECURITY_REVIEW_CATEGORY_API_ENDPOINT",
          "SECURITY_REVIEW_CATEGORY_DATABASE",
          "SECURITY_REVIEW_CATEGORY_CRYPTOGRAPHIC",
          "SECURITY_REVIEW_CATEGORY_PAYMENT_PROCESSING",
          "SECURITY_REVIEW_CATEGORY_MEMORY_PROTECTION",
          "SECURITY_REVIEW_CATEGORY_PII_DATA_HANDLING",
          "SECURITY_REVIEW_CATEGORY_INPUT_VALIDATION",
          "SECURITY_REVIEW_CATEGORY_INFRASTRUCTURE",
          "SECURITY_REVIEW_CATEGORY_CI_CD",
          "SECURITY_REVIEW_CATEGORY_CONFIGURATION",
          "SECURITY_REVIEW_CATEGORY_NETWORK",
          "SECURITY_REVIEW_CATEGORY_AI",
          "SECURITY_REVIEW_CATEGORY_IMPROVEMENT",
          "SECURITY_REVIEW_CATEGORY_VULNERABILITY",
          "SECURITY_REVIEW_CATEGORY_BUG"
        ],
        "type": "string"
      },
      "PullRequestSecurityReviewResultInfoSecurityReviewConfidenceLevel": {
        "default": "SECURITY_REVIEW_CONFIDENCE_LEVEL_UNSPECIFIED",
        "description": "SecurityReviewConfidenceLevel represents the confidence level in the security assessment.\n\n - SECURITY_REVIEW_CONFIDENCE_LEVEL_UNSPECIFIED: Default confidence level when confidence is unknown\n - SECURITY_REVIEW_CONFIDENCE_LEVEL_LOW: Low confidence level\n - SECURITY_REVIEW_CONFIDENCE_LEVEL_MEDIUM: Medium confidence level\n - SECURITY_REVIEW_CONFIDENCE_LEVEL_HIGH: High confidence level",
        "enum": [
          "SECURITY_REVIEW_CONFIDENCE_LEVEL_UNSPECIFIED",
          "SECURITY_REVIEW_CONFIDENCE_LEVEL_LOW",
          "SECURITY_REVIEW_CONFIDENCE_LEVEL_MEDIUM",
          "SECURITY_REVIEW_CONFIDENCE_LEVEL_HIGH"
        ],
        "type": "string"
      },
      "PullRequestSecurityReviewResultInfoSecuritySeverityLevel": {
        "default": "SECURITY_SEVERITY_LEVEL_UNSPECIFIED",
        "description": "Level represents the severity or importance level of a security aspect or finding\nUsed to prioritize security concerns and determine the urgency of required actions.\n\n - SECURITY_SEVERITY_LEVEL_UNSPECIFIED: Default level when severity is unknown\n - SECURITY_SEVERITY_LEVEL_LOW: Minor security concerns with minimal impact\n - SECURITY_SEVERITY_LEVEL_MEDIUM: Moderate security concerns that should be addressed\n - SECURITY_SEVERITY_LEVEL_HIGH: Significant security concerns requiring prompt attention\n - SECURITY_SEVERITY_LEVEL_CRITICAL: Critical security issues that need immediate remediation",
        "enum": [
          "SECURITY_SEVERITY_LEVEL_UNSPECIFIED",
          "SECURITY_SEVERITY_LEVEL_LOW",
          "SECURITY_SEVERITY_LEVEL_MEDIUM",
          "SECURITY_SEVERITY_LEVEL_HIGH",
          "SECURITY_SEVERITY_LEVEL_CRITICAL"
        ],
        "type": "string"
      },
      "QueryJoinFilters": {
        "properties": {
          "filter": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "QueryMalwareServiceCreateQueryMalwareBody": {
        "description": "QueryMalware is used to do query request on malware that are\nnot supported by ListMalware and the filter. For instance, you must\nuse this method to get a list of malware based on a version.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListMalwareResponse"
          },
          "responses": {
            "$ref": "#/components/schemas/v1QueryMalwareResponseMap"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QueryMalwareSpec"
          },
          "tenant_meta": {
            "description": "Tenant related data for the tenant containing the resource.",
            "type": "object"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "QueryQuerySpec": {
        "properties": {
          "kind": {
            "description": "The parent object kind of the metric.",
            "type": "string"
          },
          "list_parameters": {
            "$ref": "#/components/schemas/v1ListParameters"
          },
          "references": {
            "items": {
              "$ref": "#/components/schemas/v1QueryReference"
            },
            "type": "array"
          },
          "return_as": {
            "description": "Determines the alias name for reference\nthat should be returned. If not specified,\nthe value of kind is used.\nThis field can be used to query a same kind\nseveral times. For instance, you can use this field to\nlist and do a count on a same kind.",
            "type": "string"
          },
          "with": {
            "description": "A list of join filters that identify the kind + filter\nof the other collections that should be joined.\nFor example, if we are looking for projects\nthat are also have repositories with specific attributes, we can\nuse\n\"with\" : [{\n   \"Kind\" : \"Repository\",\n   \"Filter\" : \"filter for the repository\",\n}]\nWith is only available for the PackageVersion and Project resource kinds\nat this time.",
            "items": {
              "$ref": "#/components/schemas/QueryJoinFilters"
            },
            "type": "array"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "QueryServiceCreateQueryBody": {
        "description": "Query implements the metric query requests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QuerySpec"
          },
          "tenant_meta": {
            "description": "The Tenant Metadata restricts access to a specific tenant.",
            "title": "The Tenant Metadata restricts access to a specific tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "QuerySimilarPackagesQueryResponse": {
        "properties": {
          "age": {
            "format": "int64",
            "type": "string"
          },
          "dependents_count": {
            "format": "int64",
            "type": "string"
          },
          "edit_distance": {
            "format": "int64",
            "type": "string"
          },
          "jaccard_distance": {
            "format": "float",
            "type": "number"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "QuerySimilarPackagesServiceCreateQuerySimilarPackagesBody": {
        "description": "QuerySimilarPackages implements the similar packages query requests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "query_response": {
            "description": "Aggregates the results of the query.",
            "items": {
              "$ref": "#/components/schemas/QuerySimilarPackagesQueryResponse"
            },
            "readOnly": true,
            "type": "array"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QuerySimilarPackagesSpec"
          },
          "tenant_meta": {
            "description": "The tenant metadata restricts access to a specific tenant.",
            "title": "The tenant metadata restricts access to a specific tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "QueryVulnerabilityServiceCreateQueryVulnerabilityBody": {
        "description": "QueryVulnerability is used to do query request on vulnerabilities that are\nnot supported by ListVulnerabilities and the filter. For instance, you must\nuse this method to get a list of vulnerabilities based on a version.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListVulnerabilitiesResponse"
          },
          "responses": {
            "$ref": "#/components/schemas/v1QueryVulnerabilityResponseMap"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QueryVulnerabilitySpec"
          },
          "tenant_meta": {
            "description": "Tenant related data for the tenant containing the resource.",
            "type": "object"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "QueryVulnerabilityVulnerabilityNameQuery": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "RangeRangeType": {
        "default": "RANGE_TYPE_UNSPECIFIED",
        "description": "Type of the version information.",
        "enum": [
          "RANGE_TYPE_UNSPECIFIED",
          "RANGE_TYPE_GIT",
          "RANGE_TYPE_SEMVER",
          "RANGE_TYPE_ECOSYSTEM"
        ],
        "type": "string"
      },
      "ReferenceReferenceType": {
        "default": "REFERENCE_TYPE_UNSPECIFIED",
        "enum": [
          "REFERENCE_TYPE_UNSPECIFIED",
          "REFERENCE_TYPE_WEB",
          "REFERENCE_TYPE_ADVISORY",
          "REFERENCE_TYPE_REPORT",
          "REFERENCE_TYPE_FIX",
          "REFERENCE_TYPE_PACKAGE",
          "REFERENCE_TYPE_ARTICLE"
        ],
        "type": "string"
      },
      "RegistryIngestionCheckpointServiceCreateRegistryIngestionCheckpointBody": {
        "description": "RegistryIngestionCheckpoint represents ingestion progress checkpoints per ecosystem/registry.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1RegistryIngestionCheckpointSpec"
          },
          "tenant_meta": {
            "description": "RegistryIngestionCheckpoint is associated with a tenant and namespace.",
            "title": "RegistryIngestionCheckpoint is associated with a tenant and namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the registry ingestion checkpoint.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "RegistryIngestionCheckpointServiceUpdateRegistryIngestionCheckpointBody": {
        "description": "Request to update a registry ingestion checkpoint.",
        "properties": {
          "object": {
            "description": "RegistryIngestionCheckpoint represents ingestion progress checkpoints per ecosystem/registry.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1RegistryIngestionCheckpointSpec"
              },
              "tenant_meta": {
                "description": "RegistryIngestionCheckpoint is associated with a tenant and namespace.",
                "title": "RegistryIngestionCheckpoint is associated with a tenant and namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the registry ingestion checkpoint.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "RemediationParametersAutomatedPRParameters": {
        "description": "AutomatedPRParameters holds the settings for automated PRs.",
        "properties": {
          "language_parameters": {
            "additionalProperties": {
              "$ref": "#/components/schemas/AutomatedPRParametersLanguageParameters"
            },
            "description": "Language-specific parameters for the pull request.",
            "type": "object"
          },
          "max_open_prs": {
            "description": "Maximum number of open pull requests allowed.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RepositoryServiceCreateRepositoryBody": {
        "description": "Repository represents the ingested information about a source control repository.\nA repository may refer to any type of source control repository, such as GitLab or GitHub.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1RepositorySpec"
          },
          "tenant_meta": {
            "description": "Repositories are associated with a tenant.\nPublic repositories are created as repositories under a public tenant.",
            "title": "Repositories are associated with a tenant.\nPublic repositories are created as repositories under a public tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the source control repository.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "ingested_object"
        ],
        "type": "object"
      },
      "RepositoryServiceUpdateRepositoryBody": {
        "description": "Request to update the repository.",
        "properties": {
          "object": {
            "description": "Repository represents the ingested information about a source control repository.\nA repository may refer to any type of source control repository, such as GitLab or GitHub.",
            "properties": {
              "ingested_object": {
                "$ref": "#/components/schemas/v1IngestedObject"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1RepositorySpec"
              },
              "tenant_meta": {
                "description": "Repositories are associated with a tenant.\nPublic repositories are created as repositories under a public tenant.",
                "title": "Repositories are associated with a tenant.\nPublic repositories are created as repositories under a public tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the source control repository.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "ingested_object"
        ],
        "type": "object"
      },
      "RepositoryVersionScanObject": {
        "properties": {
          "aisast_status": {
            "$ref": "#/components/schemas/ScanObjectAISASTStatus"
          },
          "endor_ignore_file_hash_map": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The SHA1 hash of the ignore file(s) in the repository version,\nindexed by file name.\nUsed to track changes to the ignore file between scans.",
            "type": "object"
          },
          "scan_time": {
            "description": "The time at which this repository version was scanned.",
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/RepositoryVersionScanObjectStatus"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "RepositoryVersionScanObjectStatus": {
        "default": "STATUS_UNSPECIFIED",
        "description": "Indicates the status of an Endor Labs scan.",
        "enum": [
          "STATUS_UNSPECIFIED",
          "STATUS_SCANNED",
          "STATUS_NOT_SCANNED"
        ],
        "type": "string"
      },
      "RepositoryVersionServiceCreateRepositoryVersionBody": {
        "description": "The ingested information about a repository version.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "scan_object": {
            "$ref": "#/components/schemas/RepositoryVersionScanObject"
          },
          "spec": {
            "$ref": "#/components/schemas/v1RepositoryVersionSpec"
          },
          "tenant_meta": {
            "description": "Repository versions are associated with a tenant.",
            "title": "Repository versions are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the repository version.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "RepositoryVersionServiceUpdateRepositoryVersionBody": {
        "description": "Request to update the repository version.",
        "properties": {
          "object": {
            "description": "The ingested information about a repository version.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "scan_object": {
                "$ref": "#/components/schemas/RepositoryVersionScanObject"
              },
              "spec": {
                "$ref": "#/components/schemas/v1RepositoryVersionSpec"
              },
              "tenant_meta": {
                "description": "Repository versions are associated with a tenant.",
                "title": "Repository versions are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the repository version.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "ResolutionStatusErrorAnalysis": {
        "description": "ErrorAnalysis is the analysis of the error based on the error parsing\nrules.",
        "properties": {
          "error_category": {
            "$ref": "#/components/schemas/SpecErrorCategory"
          },
          "explanation": {
            "description": "Explanation of the error based on the error parsing rules.",
            "type": "string"
          },
          "fixable": {
            "description": "Fixable indicates if the error is fixable through configuration.",
            "type": "boolean"
          },
          "fixable_notes": {
            "description": "notes about the fixable status.",
            "type": "string"
          },
          "matching_rule": {
            "description": "matching_rule is the rule that matched the error.",
            "type": "string"
          },
          "matching_snippet": {
            "description": "matching_snippet is the snippet of the error that matched the rule.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ResolutionStatusStatusError": {
        "default": "STATUS_ERROR_UNSPECIFIED",
        "description": "StatusError is the type of issue discovered.\n\n - STATUS_ERROR_MANIFEST_LOAD: MANIFEST_LOAD indicates that the system is unable to find the manifest of\nthe language (pom.xml, packages.json, etc). This status error is only\nused for unresolved dependencies.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will not be computed by the system.\n- The resolved dependencies will not be computed by the system.\n- The callgraph will not be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version is marked as failed and\nendorctl will log an error.\n\nFor OSS packages:\nWhen it happens and if the package version is in the OSS namespace, the\npackage version will not be scanned anymore. When it happens, the scan of\nthe package version is marked as failed and endorctl will log an error.\n - STATUS_ERROR_MANIFEST_PARSE: MANIFEST_PARSE indicates that the system failed to parse the manifest.\nThis status error is only used for unresolved dependencies.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will not be computed by the system.\n- The resolved dependencies will not be computed by the system.\n- The callgraph will be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version is marked as failed and\nendorctl will log an error.\n\nFor OSS packages:\nWhen it happens and if the package version is in the OSS namespace, the\npackage version will not be scanned anymore. When it happens, the scan of\nthe package version is marked as failed and endorctl will log an error.\n - STATUS_ERROR_MANIFEST_EMPTY: MANIFEST_EMPTY indicates that the system failed to find\nany dependencies and is returning empty results on purpose.\nDEPRECATED: use STATUS_ERROR_MANIFEST_PARSE instead.\n - STATUS_ERROR_DEPENDENCY: DEPENDENCY indicates that the system failed to resolve a dependency.\nUsually this happens when a manifest contains bad associations of\ndependencies and versions. This status error is only used for resolved\ndependencies.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will be computed by the system.\n- The resolved dependencies will not be computed by the system.\n- The callgraph will be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version is marked as failed and\nendorctl will log an error.\n\nFor OSS packages:\nWhen it happens and if the package version is in the OSS namespace, the\npackage version will not be scanned anymore. When it happens, the scan of\nthe package version is marked as failed and endorctl will log an error.\n - STATUS_ERROR_CALL_GRAPH: CALL_GRAPH indicates that the system failed to construct the call graph.\nThis status error is only used for callgraph computation.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will be computed by the system.\n- The resolved dependencies will be computed by the system.\n- The callgraph will not be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version will not be marked as\nfailed, only a warning log will be emitted by the system.\n\nFor OSS packages:\nWhen it happens, the scan of the package version will not be marked as\nfailed, only a warning log will be emitted by the system.\n - STATUS_ERROR_MISSING_ARTIFACT: MISSING_ARTIFACT indicates that the system failed to compute the\ncallgraph because the package is not built. This status error is only\nused for callgraph computation.\n\nFor OSS packages:\nWhen it happens, the system will try to build the package and the\ncomputation of the callgraph will be launched again.\n\nIt should be noted that we should never have this state set in a package\nversion. This is a transient state only used by the system. This state\ncan not happen for tenant packages, we always expect that tenant packages\nwill be built for us.\n - STATUS_ERROR_BUILD: BUILD indicates that the plugin failed to build the package version.\nThis status error is only used for unresolved dependencies.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will not be computed by the system.\n- The resolved dependencies will not be computed by the system.\n- The callgraph will not be computed by the system.\n\nFor OSS packages:\nWhen it happens and if the package version is in the OSS namespace, the\npackage version will not be scanned anymore. When it happens, the scan of\nthe package version is marked as failed and endorctl will log an error.\n\nIt should be noted that this state can not happen for tenant packages, we\nalways expect that tenant packages will be built for us.\n - STATUS_ERROR_PACKAGE_VERSION_UNAVAILABLE: PACKAGE_VERSION_UNAVAILABLE indicates that the package version is not\navailable from the package manager. This status error is only used for\nunresolved dependencies.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will not be computed by the system.\n- The resolved dependencies will not be computed by the system.\n- The callgraph will not be computed by the system.\n\nFor OSS packages::\nWhen it happens and if the package version is in the OSS namespace, the\npackage version will not be scanned anymore. When it happens, the scan of\nthe package version is marked as failed and endorctl will log an error.\n\nIt should be noted that this state can not happen for tenant packages,\nfor tenant we scan based on the source code and we never download a\npackage from a package manager.\n - STATUS_ERROR_NO_CODE_ARTIFACT: NO_CODE_ARTIFACT indicates that package version do not have any source\ncode. The status error is only used for call graphs.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will be computed by the system.\n- The resolved dependencies will be computed by the system.\n- The call graph will not be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version will not be marked as a\ncall graph failure, only a warning log will be emitted by the system.\n\nFor OSS packages:\nWhen it happens, the scan of the package version will not be marked as a\ncall graph failure, only a warning log will be emitted by the system.\n - STATUS_ERROR_VENV: STATUS_ERROR_VENV indicates that the system failed to create the virtual\nenvironment required to generate the call graph.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will be computed by the system.\n- The resolved dependencies will be computed by the system.\n- The call graph will not be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version will be not be marked as\na call graph failure. This indicates that the client code was not setup\ncorrectly.\n\nFor OSS packages:\nWhen it happens, the scan of the package version will not be marked as a\ncall graph failure, only a warning log will be emitted by the system.\n - STATUS_ERROR_INTERNAL: STATUS_ERROR_INTERNAL indicates that there was an internal system failure\nsuch as a data stream error.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will be computed by the system.\n- The resolved dependencies will be computed by the system.\n- The call graph will not be computed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version will be not be marked as\na call graph failure.\n\nFor OSS packages:\nWhen it happens, the scan of the package version will not be marked as a\ncall graph failure, only a warning log will be emitted by the system.\n - STATUS_ERROR_UNSUPPORTED: STATUS_ERROR_UNSUPPORTED indicates that we scanned a package version\nhaving an unsupported language.\n\nWhen it happens, the state of the package version will be as follows:\n- The unresolved dependencies will not be computed by the system.\n- The resolved dependencies will not be computed by the system.\n- The call graph will not not becomputed by the system.\n\nFor tenant packages:\nWhen it happens, the scan of the package version is marked as\nunsupported.\n\nFor OSS packages:\nWhen it happens, the scan of the package version is marked as\nunsupported.",
        "enum": [
          "STATUS_ERROR_UNSPECIFIED",
          "STATUS_ERROR_MANIFEST_LOAD",
          "STATUS_ERROR_MANIFEST_PARSE",
          "STATUS_ERROR_MANIFEST_EMPTY",
          "STATUS_ERROR_DEPENDENCY",
          "STATUS_ERROR_CALL_GRAPH",
          "STATUS_ERROR_MISSING_ARTIFACT",
          "STATUS_ERROR_BUILD",
          "STATUS_ERROR_PACKAGE_VERSION_UNAVAILABLE",
          "STATUS_ERROR_NO_CODE_ARTIFACT",
          "STATUS_ERROR_VENV",
          "STATUS_ERROR_INTERNAL",
          "STATUS_ERROR_UNSUPPORTED"
        ],
        "type": "string"
      },
      "ResponseCounts": {
        "description": "Definitely and potentially affected counts.",
        "properties": {
          "definitely_affected": {
            "description": "Definitely affected count.",
            "format": "int32",
            "type": "integer"
          },
          "potentially_affected": {
            "description": "Potentially affected count.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RootCveCVSSMetric": {
        "properties": {
          "cvss_metric_v2": {
            "items": {
              "$ref": "#/components/schemas/NVDVulnerabilityCvssMetricV2"
            },
            "type": "array"
          },
          "cvss_metric_v30": {
            "items": {
              "$ref": "#/components/schemas/NVDVulnerabilityCvssMetricV30"
            },
            "type": "array"
          },
          "cvss_metric_v31": {
            "items": {
              "$ref": "#/components/schemas/NVDVulnerabilityCvssMetricV31"
            },
            "type": "array"
          },
          "cvss_metric_v40": {
            "items": {
              "$ref": "#/components/schemas/NVDVulnerabilityCvssMetricV40"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RootCveConfig": {
        "properties": {
          "negate": {
            "type": "boolean"
          },
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/ConfigCVSSNode"
            },
            "type": "array"
          },
          "operator": {
            "$ref": "#/components/schemas/ConfigOperator"
          }
        },
        "type": "object"
      },
      "RootCveLangString": {
        "properties": {
          "lang": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "lang",
          "value"
        ],
        "type": "object"
      },
      "RootCveVendorComment": {
        "properties": {
          "comment": {
            "type": "string"
          },
          "last_modified": {
            "format": "date-time",
            "type": "string"
          },
          "organization": {
            "type": "string"
          }
        },
        "required": [
          "organization",
          "comment",
          "last_modified"
        ],
        "type": "object"
      },
      "RootCveWeakness": {
        "properties": {
          "description": {
            "items": {
              "$ref": "#/components/schemas/RootCveLangString"
            },
            "type": "array"
          },
          "source": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "type",
          "description"
        ],
        "type": "object"
      },
      "RuleSetImportServiceCreateRuleSetImportBody": {
        "description": "ImportedRuleSet represents a request to import a set of rules.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ImportedRuleSetSpec"
          },
          "tenant_meta": {
            "description": "Rule set is associated with a tenant and tenant information must be provided.",
            "title": "Rule set is associated with a tenant and tenant information must be provided.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "RuleSetImportServiceUpdateRuleSetImportBody": {
        "description": "Request to update an object.",
        "properties": {
          "object": {
            "description": "ImportedRuleSet represents a request to import a set of rules.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ImportedRuleSetSpec"
              },
              "tenant_meta": {
                "description": "Rule set is associated with a tenant and tenant information must be provided.",
                "title": "Rule set is associated with a tenant and tenant information must be provided.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the object.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "SBOMExportServiceCreateSBOMExportBody": {
        "description": "This is the request to the SBOM export API.\nIt consists of the request resource kind.\nThe UUID is the UUID of the resource.\nThe output is the format to export the SBOM.\nThe SBOM kind is the kind of the SBOM requested by the user. Currently we support only CycloneDx.\nThe meta parent_kind can take one of two values - PackageVersion or RepositoryVersion.\nThe Meta parent_uuid corresponds to the parent UUID of the parent kind.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ExportedSBOMSpec"
          },
          "tenant_meta": {
            "description": "SBOM are associated with a tenant and tenant information must be provided.",
            "title": "SBOM are associated with a tenant and tenant information must be provided.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the SBOM.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "SBOMImportServiceCreateSBOMImportBody": {
        "description": "ImportedSBOM represents an SBOM that has been imported.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ImportedSBOMSpec"
          },
          "tenant_meta": {
            "description": "SBOM are associated with a tenant and tenant information must be provided.",
            "title": "SBOM are associated with a tenant and tenant information must be provided.",
            "type": "object"
          },
          "uuid": {
            "readOnly": true,
            "title": "The UUID of the SBOM",
            "type": "string"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "SBOMImportServiceUpdateSBOMImportBody": {
        "description": "Request to update an SBOM.",
        "properties": {
          "object": {
            "description": "ImportedSBOM represents an SBOM that has been imported.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "processing_status": {
                "$ref": "#/components/schemas/v1ProcessingStatus"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ImportedSBOMSpec"
              },
              "tenant_meta": {
                "description": "SBOM are associated with a tenant and tenant information must be provided.",
                "title": "SBOM are associated with a tenant and tenant information must be provided.",
                "type": "object"
              },
              "uuid": {
                "readOnly": true,
                "title": "The UUID of the SBOM",
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "SCMCredentialServiceCreateSCMCredentialBody": {
        "description": "SCMCredential represents SCM org/repo credentials for private dependency resolution.\nCustomers configure these credentials to allow endorctl to authenticate with\nprivate Git repositories during agentless or SCM-integrated scans, eliminating\nresolution failures for cross-org private dependencies.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SCMCredentialSpec"
          },
          "tenant_meta": {
            "description": "Namespaces are associated with a tenant.",
            "title": "Namespaces are associated with a tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the SCM credential.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta",
          "spec"
        ],
        "type": "object"
      },
      "SCMCredentialServiceUpdateSCMCredentialBody": {
        "description": "Request to update an SCM credential.",
        "properties": {
          "object": {
            "description": "SCMCredential represents SCM org/repo credentials for private dependency resolution.\nCustomers configure these credentials to allow endorctl to authenticate with\nprivate Git repositories during agentless or SCM-integrated scans, eliminating\nresolution failures for cross-org private dependencies.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Propagate indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1SCMCredentialSpec"
              },
              "tenant_meta": {
                "description": "Namespaces are associated with a tenant.",
                "title": "Namespaces are associated with a tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the SCM credential.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "tenant_meta",
          "spec"
        ],
        "type": "object"
      },
      "SandboxConfigCustomScriptConfig": {
        "description": "Message for custom script configuration.",
        "properties": {
          "exit_code": {
            "description": "Custom script exit code.",
            "format": "int32",
            "type": "integer"
          },
          "stderr": {
            "description": "Custom script stderr.",
            "type": "string"
          },
          "stdout": {
            "description": "Custom script stdout.",
            "type": "string"
          },
          "tool_chains": {
            "$ref": "#/components/schemas/v1ToolChains"
          }
        },
        "type": "object"
      },
      "SandboxConfigSandboxStrategyType": {
        "default": "SANDBOX_STRATEGY_TYPE_UNSPECIFIED",
        "description": "Sandbox strategy types.",
        "enum": [
          "SANDBOX_STRATEGY_TYPE_UNSPECIFIED",
          "SANDBOX_STRATEGY_TYPE_PROCESSWRAPPER",
          "SANDBOX_STRATEGY_TYPE_LINUX",
          "SANDBOX_STRATEGY_TYPE_DARWIN"
        ],
        "type": "string"
      },
      "SarifLocationPhysicalLocation": {
        "properties": {
          "artifact_location": {
            "$ref": "#/components/schemas/v1SarifArtifactLocation"
          },
          "properties": {
            "description": "Key-value pairs that provide additional information.",
            "type": "object"
          },
          "region": {
            "$ref": "#/components/schemas/v1SarifRegion"
          }
        },
        "type": "object"
      },
      "SarifSuppressionKind": {
        "default": "KIND_UNSPECIFIED",
        "description": " - KIND_IN_SOURCE: Suppression is in the source code.\n - KIND_EXTERNAL: Suppression is external to the source code.",
        "enum": [
          "KIND_UNSPECIFIED",
          "KIND_IN_SOURCE",
          "KIND_EXTERNAL"
        ],
        "type": "string"
      },
      "SarifThreadFlowLocationImportance": {
        "default": "IMPORTANCE_UNSPECIFIED",
        "description": "Specifies the importance of this location in understanding the code flow.",
        "enum": [
          "IMPORTANCE_UNSPECIFIED",
          "IMPORTANCE_IMPORTANT",
          "IMPORTANCE_ESSENTIAL",
          "IMPORTANCE_UNIMPORTANT"
        ],
        "type": "string"
      },
      "SavedQueryServiceCreateSavedQueryBody": {
        "description": "SavedQuery implements the metric query requests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SavedQuerySpec"
          },
          "tenant_meta": {
            "description": "The Tenant Metadata restricts access to a specific tenant.",
            "title": "The Tenant Metadata restricts access to a specific tenant.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of a saved query.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "SavedQueryServiceUpdateSavedQueryBody": {
        "description": "Request to update a saved query.",
        "properties": {
          "object": {
            "description": "SavedQuery implements the metric query requests.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1SavedQuerySpec"
              },
              "tenant_meta": {
                "description": "The Tenant Metadata restricts access to a specific tenant.",
                "title": "The Tenant Metadata restricts access to a specific tenant.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of a saved query.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "SavedQuerySpecQueryType": {
        "default": "QUERY_TYPE_UNSPECIFIED",
        "description": "Type of the query.\n\n - QUERY_TYPE_DASHBOARD: QUERY_TYPE_DASHBOARD selects queries for the dashboard.\n - QUERY_TYPE_USER: QUERY_TYPE_USER is generic user queries.",
        "enum": [
          "QUERY_TYPE_UNSPECIFIED",
          "QUERY_TYPE_DASHBOARD",
          "QUERY_TYPE_USER"
        ],
        "type": "string"
      },
      "ScanCreditUsageScanCreditBreakdown": {
        "description": "ScanCreditBreakdown holds the six (context x component) credit counters\nthat make up either a window or cumulative total. Components collapse to\nSCA vs code (SAST + AI_SAST + SECRETS) per the New License Model.",
        "properties": {
          "code_ci_run_credits": {
            "description": "Code scan credits (SAST + AI_SAST + SECRETS collapsed) from PR scans.",
            "format": "int64",
            "type": "string"
          },
          "code_main_overflow_credits": {
            "description": "Code scan credits from default-branch scans on projects beyond the\n5x-seats repo cap. Always zero when onboarded_project_count \u003c= 5 * seats.",
            "format": "int64",
            "type": "string"
          },
          "code_ref_credits": {
            "description": "Code scan credits from non-default ref scans.",
            "format": "int64",
            "type": "string"
          },
          "sca_ci_run_credits": {
            "description": "SCA scan credits from PR scans (Context.type = CONTEXT_TYPE_CI_RUN).",
            "format": "int64",
            "type": "string"
          },
          "sca_main_overflow_credits": {
            "description": "SCA scan credits from default-branch scans (Context.type = CONTEXT_TYPE_MAIN)\non projects beyond the 5x-seats repo cap. Always zero when\nonboarded_project_count \u003c= 5 * seats.",
            "format": "int64",
            "type": "string"
          },
          "sca_ref_credits": {
            "description": "SCA scan credits from non-default ref scans (Context.type = CONTEXT_TYPE_REF).",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ScanLogRequestServiceCreateScanLogRequestBody": {
        "description": "ScanLogRequest represents a CRUD operation on a message.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanLogRequestSpec"
          },
          "tenant_meta": {
            "description": "Namespace of the message that is accessed.",
            "title": "Namespace of the message that is accessed.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of scan log request.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ScanObjectAISASTStatus": {
        "description": "AISAST status information for the repository version.",
        "properties": {
          "force_full_indexing": {
            "title": "Indicates if the code of the repository version should be fully reindexed.\nSet to true to indicate to reindex the code of the repository version.\nTODO (dogild): update the documentation once it is not internal anymore",
            "type": "boolean"
          },
          "full_index_started_time": {
            "description": "Deprecated: was used as a distributed lock for concurrent indexing, but the\nlock had a TOCTOU race and content-addressed indexing makes it unnecessary.\nField kept for backward compatibility; no longer read or written.",
            "format": "date-time",
            "type": "string"
          },
          "last_full_index_sha": {
            "description": "Format: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "title": "The SHA of the last commit that was fully indexed into a vector store.\nNote: this is only used for aisast feature.\nTODO (dogild): update the documentation once it is not internal anymore",
            "type": "string"
          },
          "last_full_index_time": {
            "description": "Format: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "title": "Last time the code of the repository version was fully indexed into a vector store.\nNote: this is only used for aisast feature.\nTODO (dogild): update the documentation once it is not internal anymore",
            "type": "string"
          },
          "last_partial_index_sha": {
            "description": "Deprecated: use last_full_index_sha instead. The indexer now uses a single\nIndex method; the full/partial distinction no longer exists.",
            "type": "string"
          },
          "last_partial_index_time": {
            "description": "Deprecated: use last_full_index_time instead. The indexer now uses a single\nIndex method; the full/partial distinction no longer exists.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "type": "string"
          },
          "last_scan_state": {
            "$ref": "#/components/schemas/AISASTStatusAISASTScanState"
          }
        },
        "type": "object"
      },
      "ScanProfileServiceCreateScanProfileBody": {
        "description": "ScanProfile represents the scan configuration to use across different\nprojects.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in the child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanProfileSpec"
          },
          "tenant_meta": {
            "description": "Tenant related data for the tenant containing the resource.",
            "type": "object"
          },
          "uuid": {
            "description": "UUID is a universally unique identifier for the tool chain profile.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ScanProfileServiceUpdateScanProfileBody": {
        "description": "UpdateScanProfileRequest is used by UpdateScanProfile.",
        "properties": {
          "object": {
            "description": "ScanProfile represents the scan configuration to use across different\nprojects.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates that the object should be visible in the child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ScanProfileSpec"
              },
              "tenant_meta": {
                "description": "Tenant related data for the tenant containing the resource.",
                "type": "object"
              },
              "uuid": {
                "description": "UUID is a universally unique identifier for the tool chain profile.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ScanResultServiceCreateScanResultBody": {
        "description": "Contains the results of an endorctl scan.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanResultSpec"
          },
          "tenant_meta": {
            "description": "Information about the tenant and namespace that the scan ran in.",
            "title": "Information about the tenant and namespace that the scan ran in.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "ScanResultServiceUpdateScanResultBody": {
        "description": "Request to update a scan result.",
        "properties": {
          "object": {
            "description": "Contains the results of an endorctl scan.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ScanResultSpec"
              },
              "tenant_meta": {
                "description": "Information about the tenant and namespace that the scan ran in.",
                "title": "Information about the tenant and namespace that the scan ran in.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the object.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "ScanResultSpecStatus": {
        "default": "STATUS_UNSPECIFIED",
        "description": "Success state.",
        "enum": [
          "STATUS_UNSPECIFIED",
          "STATUS_SUCCESS",
          "STATUS_PARTIAL_SUCCESS",
          "STATUS_FAILURE",
          "STATUS_RUNNING"
        ],
        "type": "string"
      },
      "ScanResultSpecType": {
        "default": "TYPE_UNSPECIFIED",
        "description": "Scan type. Only used for runtime statistics.\n\n - TYPE_DOCTOR: Deprecated.\n - TYPE_ALERT_POLICIES: Deprecated.\n - TYPE_FINDING_REFRESH: Lightweight re-evaluation of findings from persisted DependencyMetadata,\nwithout a full repository re-scan.",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_GITHUB",
          "TYPE_GIT",
          "TYPE_ORG",
          "TYPE_PACKAGE",
          "TYPE_ANALYTICS",
          "TYPE_FINDINGS",
          "TYPE_SBOM_IMPORT",
          "TYPE_LINTER",
          "TYPE_ADMISSION_POLICIES",
          "TYPE_DOCTOR",
          "TYPE_NOTIFICATION_POLICIES",
          "TYPE_ALERT_POLICIES",
          "TYPE_ALL_SCANS",
          "TYPE_HOST_CHECK",
          "TYPE_DEPENDENCY_RESOLUTION",
          "TYPE_CALL_GRAPH",
          "TYPE_EXCEPTION_POLICIES",
          "TYPE_FILE_ANALYTICS",
          "TYPE_HUGGING_FACE",
          "TYPE_PROVISIONING",
          "TYPE_WORKFLOW_SCAN",
          "TYPE_PR_SECURITY_REVIEW",
          "TYPE_UIA",
          "TYPE_ANALYTICS_CHECK",
          "TYPE_LICENSE_DISCOVERY",
          "TYPE_FINDING_REFRESH"
        ],
        "type": "string"
      },
      "ScanWorkflowResultServiceCreateScanWorkflowResultBody": {
        "description": "ScanWorkflowResult corresponds to a workflow scan result.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanWorkflowResultSpec"
          },
          "tenant_meta": {
            "description": "The tenant to which the scan workflow result belongs.",
            "title": "The tenant to which the scan workflow result belongs.",
            "type": "object"
          },
          "uuid": {
            "description": "The unique identifier of the scan workflow result.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "ScanWorkflowResultServiceUpdateScanWorkflowResultBody": {
        "description": "Request used to update a scan workflow result.",
        "properties": {
          "object": {
            "description": "ScanWorkflowResult corresponds to a workflow scan result.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ScanWorkflowResultSpec"
              },
              "tenant_meta": {
                "description": "The tenant to which the scan workflow result belongs.",
                "title": "The tenant to which the scan workflow result belongs.",
                "type": "object"
              },
              "uuid": {
                "description": "The unique identifier of the scan workflow result.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "ScanWorkflowServiceCreateScanWorkflowBody": {
        "description": "ScanWorkflow corresponds to a workflow of scan steps.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanWorkflowSpec"
          },
          "tenant_meta": {
            "description": "The tenant to which the scan workflow belongs.",
            "title": "The tenant to which the scan workflow belongs.",
            "type": "object"
          },
          "uuid": {
            "description": "The unique identifier of the scan workflow.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ScanWorkflowServiceUpdateScanWorkflowBody": {
        "description": "Request used to update a scan workflow.",
        "properties": {
          "object": {
            "description": "ScanWorkflow corresponds to a workflow of scan steps.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1ScanWorkflowSpec"
              },
              "tenant_meta": {
                "description": "The tenant to which the scan workflow belongs.",
                "title": "The tenant to which the scan workflow belongs.",
                "type": "object"
              },
              "uuid": {
                "description": "The unique identifier of the scan workflow.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "ScpmDataRunner": {
        "properties": {
          "allows_public_repos": {
            "type": "boolean"
          },
          "id": {
            "format": "uint64",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "visibility": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ScpmDataWebhook": {
        "properties": {
          "active": {
            "type": "boolean"
          },
          "config_url": {
            "type": "string"
          },
          "deliveries_url": {
            "type": "string"
          },
          "events": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "format": "uint64",
            "type": "string"
          },
          "insecure_ssl": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "ping_url": {
            "type": "string"
          },
          "secret": {
            "type": "string"
          },
          "test_url": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "SecretRuleServiceCreateSecretRuleBody": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in\nchildren namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SecretRuleSpec"
          },
          "tenant_meta": {
            "description": "Rules are associated with a tenant and namespace.",
            "title": "Rules are associated with a tenant and namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the secret rule.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "SecretRuleServiceUpdateSecretRuleBody": {
        "description": "Request to update a secret rule.",
        "properties": {
          "object": {
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Propagate indicates that the object should be visible in\nchildren namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1SecretRuleSpec"
              },
              "tenant_meta": {
                "description": "Rules are associated with a tenant and namespace.",
                "title": "Rules are associated with a tenant and namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the secret rule.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "SecurityAspectMetricSecurityImpactType": {
        "default": "SECURITY_IMPACT_TYPE_UNSPECIFIED",
        "description": "Indicates whether a code change improves security, introduces regression, or is neutral.\n\n - SECURITY_IMPACT_TYPE_UNSPECIFIED: Default unspecified value.\n - SECURITY_IMPACT_TYPE_IMPROVEMENT: The change improves security.\n - SECURITY_IMPACT_TYPE_REGRESSION: The change introduces security regression.\n - SECURITY_IMPACT_TYPE_NEUTRAL: The change has neutral security impact.",
        "enum": [
          "SECURITY_IMPACT_TYPE_UNSPECIFIED",
          "SECURITY_IMPACT_TYPE_IMPROVEMENT",
          "SECURITY_IMPACT_TYPE_REGRESSION",
          "SECURITY_IMPACT_TYPE_NEUTRAL"
        ],
        "type": "string"
      },
      "SemgrepRuleServiceCreateSemgrepRuleBody": {
        "properties": {
          "disabled": {
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SemgrepRuleSpec"
          },
          "tenant_meta": {
            "description": "Rules are associated with a tenant and namespace.",
            "title": "Rules are associated with a tenant and namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the Semgrep rule.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "SemgrepRuleServiceUpdateSemgrepRuleBody": {
        "description": "Request to update Semgrep rule.",
        "properties": {
          "object": {
            "properties": {
              "disabled": {
                "type": "boolean"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Propagate indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1SemgrepRuleSpec"
              },
              "tenant_meta": {
                "description": "Rules are associated with a tenant and namespace.",
                "title": "Rules are associated with a tenant and namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the Semgrep rule.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "SortEntrySortEntryOrder": {
        "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
        "enum": [
          "SORT_ENTRY_ORDER_UNSPECIFIED",
          "SORT_ENTRY_ORDER_ASC",
          "SORT_ENTRY_ORDER_DESC"
        ],
        "type": "string"
      },
      "SpecAMFRecord": {
        "description": "Raw record as received from the AMF (Aikido) malware feed.",
        "properties": {
          "detected_on": {
            "description": "Epoch-seconds timestamp of when AMF detected the malware.",
            "format": "int64",
            "type": "string"
          },
          "ecosystem": {
            "description": "Ecosystem as reported by AMF.",
            "type": "string"
          },
          "id": {
            "description": "AMF's internal identifier for the record.",
            "format": "int64",
            "type": "string"
          },
          "last_updated": {
            "description": "Epoch-seconds timestamp of the last update to the record by AMF.",
            "format": "int64",
            "type": "string"
          },
          "package_name": {
            "description": "Package name as reported by AMF.",
            "type": "string"
          },
          "reasons": {
            "description": "Reasons for flagging the package, as reported by AMF.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "release_date": {
            "description": "Epoch-seconds timestamp of the flagged package version's release.",
            "format": "int64",
            "type": "string"
          },
          "status": {
            "description": "Status of the record as reported by AMF.",
            "type": "string"
          },
          "version": {
            "description": "Package version as reported by AMF.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecAffectedPackage": {
        "description": "Package information and version.",
        "properties": {
          "cpe": {
            "type": "string"
          },
          "cpes": {
            "description": "List of CPEs associated with the affected package.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "name": {
            "type": "string"
          },
          "purl": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "ecosystem"
        ],
        "type": "object"
      },
      "SpecAffectedRange": {
        "description": "Affected ranges.",
        "properties": {
          "fixed": {
            "description": "The version or commit in which this vulnerability was fixed.",
            "type": "string"
          },
          "introduced": {
            "description": "The earliest version or commit in which this vulnerability was\nintroduced.",
            "type": "string"
          },
          "last_affected": {
            "description": "The last version known to be affected. Versions strictly after this\nare assumed to be fixed. Used when an explicit fixed version is unavailable.",
            "type": "string"
          },
          "repo": {
            "description": "The repository URL.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/RangeRangeType"
          }
        },
        "type": "object"
      },
      "SpecAggregationDetails": {
        "description": "The findings are aggregated and notifications are sent based on the aggregation details.",
        "properties": {
          "aggregation_target_name": {
            "title": "The name of the aggregation target based on the aggregation type.\nFor example, it is the project_name if the aggregation type is project",
            "type": "string"
          },
          "aggregation_type": {
            "$ref": "#/components/schemas/NotificationActionAggregationType"
          },
          "pkg_version_name": {
            "title": "The name of the package version",
            "type": "string"
          },
          "pkg_version_uuid": {
            "description": "The UUID of the package version.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecArchType": {
        "default": "ARCH_TYPE_UNSPECIFIED",
        "description": "The architecture suitable for the binary.",
        "enum": [
          "ARCH_TYPE_UNSPECIFIED",
          "ARCH_TYPE_LINUX_AMD64",
          "ARCH_TYPE_MACOS_AMD64",
          "ARCH_TYPE_MACOS_ARM64",
          "ARCH_TYPE_WINDOWS_AMD64",
          "ARCH_TYPE_LINUX_ARM64",
          "ARCH_TYPE_LINUX_AMD64_MUSL",
          "ARCH_TYPE_LINUX_ARM64_MUSL"
        ],
        "type": "string"
      },
      "SpecAvailableLLM": {
        "default": "AVAILABLE_LLM_UNSPECIFIED",
        "description": "LLMs available to AgentConfig.\n\n - AVAILABLE_LLM_OPENAI_GPT_5_CHAT: GPT-5 chat is a variant of GPT-5 that is optimized for chat use cases and\ndoes not support reasoning.\n - AVAILABLE_LLM_OPENAI_GPT_5_6_LUNA: GPT-5.6 Luna is the cost-efficient GPT-5.6 tier.\n - AVAILABLE_LLM_OPENAI_GPT_5_6_SOL: GPT-5.6 Sol is the highest-capability GPT-5.6 tier.\n - AVAILABLE_LLM_OPENAI_GPT_5_6_TERRA: GPT-5.6 Terra balances GPT-5.6 cost and capability.\n - AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_PREVIEW: deprecated: use AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE instead.\n - AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LITE_LATEST: NEVER USE: use AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE instead.\n - AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE_PREVIEW: deprecated: use AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE instead.\n - AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE: GA Gemini 3.1 Flash Lite; in the EU it is served from the eu.rep data-residency endpoint.\n - AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH_LITE: Generally available Gemini 3.5 Flash Lite model on Vertex AI: the\nhigh-throughput tier of the 3.5 generation.\n - AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH: Generally available Gemini 3.5 Flash model on Vertex AI.\n - AVAILABLE_LLM_GOOGLE_GEMINI_3_6_FLASH: Generally available Gemini 3.6 Flash model on Vertex AI: the successor to\n3.5 Flash.\n - AVAILABLE_LLM_GOOGLE_GEMINI_3_7_FLASH: Generally available Gemini 3.7 Flash model on Vertex AI: the successor to\n3.6 Flash.",
        "enum": [
          "AVAILABLE_LLM_UNSPECIFIED",
          "AVAILABLE_LLM_OPENAI_GPT_5",
          "AVAILABLE_LLM_OPENAI_GPT_5_MINI",
          "AVAILABLE_LLM_OPENAI_GPT_5_NANO",
          "AVAILABLE_LLM_OPENAI_GPT_5_CHAT",
          "AVAILABLE_LLM_OPENAI_GPT_5_1",
          "AVAILABLE_LLM_OPENAI_GPT_5_1_CHAT",
          "AVAILABLE_LLM_OPENAI_GPT_5_1_CODEX",
          "AVAILABLE_LLM_OPENAI_GPT_5_1_CODEX_MINI",
          "AVAILABLE_LLM_OPENAI_GPT_5_2_CODEX",
          "AVAILABLE_LLM_OPENAI_GPT_5_2",
          "AVAILABLE_LLM_OPENAI_GPT_5_3_CODEX",
          "AVAILABLE_LLM_OPENAI_GPT_5_3_CHAT",
          "AVAILABLE_LLM_OPENAI_GPT_5_4_MINI",
          "AVAILABLE_LLM_OPENAI_GPT_5_4_NANO",
          "AVAILABLE_LLM_OPENAI_GPT_5_4",
          "AVAILABLE_LLM_OPENAI_GPT_5_5",
          "AVAILABLE_LLM_OPENAI_GPT_5_6_LUNA",
          "AVAILABLE_LLM_OPENAI_GPT_5_6_SOL",
          "AVAILABLE_LLM_OPENAI_GPT_5_6_TERRA",
          "AVAILABLE_LLM_OPENAI_GPT_4",
          "AVAILABLE_LLM_OPENAI_GPT_4O_MINI",
          "AVAILABLE_LLM_OPENAI_GPT_4_1",
          "AVAILABLE_LLM_OPENAI_GPT_4_1_MINI",
          "AVAILABLE_LLM_OPENAI_GPT_4_1_NANO",
          "AVAILABLE_LLM_OPENAI_O1",
          "AVAILABLE_LLM_OPENAI_O3",
          "AVAILABLE_LLM_OPENAI_GPT_4O",
          "AVAILABLE_LLM_OPENAI_O3_MINI",
          "AVAILABLE_LLM_OPENAI_O4_MINI",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_0",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LATEST",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_PREVIEW",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_5_LITE",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_2_0_LITE",
          "AVAILABLE_LLM_GOOGLE_GEMINI_FLASH_LITE_LATEST",
          "AVAILABLE_LLM_GOOGLE_GEMINI_2_5_PRO",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_PRO_PREVIEW",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_1_PRO_PREVIEW",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE_PREVIEW",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_1_FLASH_LITE",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH_LITE",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_5_FLASH",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_6_FLASH",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_7_FLASH",
          "AVAILABLE_LLM_GOOGLE_GEMINI_3_FLASH_PREVIEW",
          "AVAILABLE_LLM_ANTHROPIC_CLAUDE_3_5_SONNET",
          "AVAILABLE_LLM_ANTHROPIC_CLAUDE_4_5_SONNET",
          "AVAILABLE_LLM_ANTHROPIC_CLAUDE_4_5_HAIKU",
          "AVAILABLE_LLM_GROQ_LLAMA_3_2_90B",
          "AVAILABLE_LLM_GROQ_COMPOUND",
          "AVAILABLE_LLM_GROQ_COMPOUND_MINI",
          "AVAILABLE_LLM_GROQ_LLAMA_3_3_70B_VERSATILE",
          "AVAILABLE_LLM_GROQ_LLAMA_4_MAVERICK_17B",
          "AVAILABLE_LLM_GROQ_LLAMA_4_SCOUT_17B",
          "AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_20B",
          "AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_120B",
          "AVAILABLE_LLM_GROQ_OPENAI_GPT_OSS_SAFEGUARD_20B",
          "AVAILABLE_LLM_GROQ_QWEN_3_32B",
          "AVAILABLE_LLM_GROQ_LLAMA_PROMPT_GUARD_2_22M",
          "AVAILABLE_LLM_GROQ_LLAMA_PROMPT_GUARD_2_86M",
          "AVAILABLE_LLM_GROQ_LLAMA_GUARD_4_12B",
          "AVAILABLE_LLM_ENDOR_DEEPSEEK_R1",
          "AVAILABLE_LLM_GOOGLE_GEMMA_4_26B_A4B_IT",
          "AVAILABLE_LLM_GOOGLE_GEMINI_R2D2_LATEST",
          "AVAILABLE_LLM_FIREWORKS_GPT_OSS_20B",
          "AVAILABLE_LLM_FIREWORKS_GPT_OSS_120B",
          "AVAILABLE_LLM_FIREWORKS_KIMI_K25",
          "AVAILABLE_LLM_FIREWORKS_MINIMAX_M27",
          "AVAILABLE_LLM_FIREWORKS_QWEN_3_6_PLUS"
        ],
        "type": "string"
      },
      "SpecBinaryType": {
        "default": "BINARY_TYPE_UNSPECIFIED",
        "description": "The type of the binary.\n\n - BINARY_TYPE_YARA: Yara binary used by the malware analysis engine to parse and validate Yara rules.",
        "enum": [
          "BINARY_TYPE_UNSPECIFIED",
          "BINARY_TYPE_JAVA_PLUGIN",
          "BINARY_TYPE_RUST_PLUGIN",
          "BINARY_TYPE_ENDORCTL_BINARY",
          "BINARY_TYPE_PYTHON_PLUGIN",
          "BINARY_TYPE_DOTNET_CIL_PLUGIN",
          "BINARY_TYPE_KOTLIN_PLUGIN",
          "BINARY_TYPE_JAVASCRIPT_ANALYZER",
          "BINARY_TYPE_OPENGREP",
          "BINARY_TYPE_BAZEL_ASPECTS_PACKAGE",
          "BINARY_TYPE_MINT_TOOLKIT",
          "BINARY_TYPE_YARA"
        ],
        "type": "string"
      },
      "SpecCVSSSeverityLevel": {
        "default": "CVSS_SEVERITY_LEVEL_UNSPECIFIED",
        "description": "Common severity level enum used across different CVSS versions.",
        "enum": [
          "CVSS_SEVERITY_LEVEL_UNSPECIFIED",
          "CVSS_SEVERITY_LEVEL_NONE",
          "CVSS_SEVERITY_LEVEL_LOW",
          "CVSS_SEVERITY_LEVEL_MEDIUM",
          "CVSS_SEVERITY_LEVEL_HIGH",
          "CVSS_SEVERITY_LEVEL_CRITICAL"
        ],
        "type": "string"
      },
      "SpecCVSSV3Severity": {
        "properties": {
          "level": {
            "$ref": "#/components/schemas/CVSSV3SeverityLevel"
          },
          "score": {
            "description": "The Common Vulnerability Scoring System (CVSS score) provides a\nnumerical (0-10) representation of the severity of an information\nsecurity vulnerability.",
            "format": "float",
            "type": "number"
          },
          "temporal_level": {
            "$ref": "#/components/schemas/CVSSV3SeverityLevel"
          },
          "temporal_score": {
            "description": "The Common Vulnerability Scoring System (CVSS score) provides a\nnumerical (0-10) representation of the severity of an information\nsecurity vulnerability.",
            "format": "float",
            "type": "number"
          },
          "temporal_vector": {
            "description": "A specially formatted vector indicating the attack surface and severity\nof the vulnerability. Format is here:\nhttps://www.first.org/cvss/specification-document.",
            "type": "string"
          },
          "vector": {
            "description": "A specially formatted vector indicating the attack surface and severity\nof the vulnerability. Format is here:\nhttps://www.first.org/cvss/specification-document.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecCVSSV4Severity": {
        "properties": {
          "base_level": {
            "$ref": "#/components/schemas/CVSSV4SeverityV4Level"
          },
          "base_score": {
            "description": "The Common Vulnerability Scoring System v4.0 base score provides a\nnumerical (0-10) representation of the severity of an information\nsecurity vulnerability.",
            "format": "float",
            "type": "number"
          },
          "environmental_level": {
            "$ref": "#/components/schemas/CVSSV4SeverityV4Level"
          },
          "environmental_score": {
            "description": "The CVSS v4.0 environmental score provides context-specific scoring\nbased on the deployment environment.",
            "format": "float",
            "type": "number"
          },
          "threat_level": {
            "$ref": "#/components/schemas/CVSSV4SeverityV4Level"
          },
          "threat_score": {
            "description": "The CVSS v4.0 threat score provides additional context about the\nexploitability of the vulnerability.",
            "format": "float",
            "type": "number"
          },
          "vector": {
            "description": "A specially formatted vector indicating the attack surface and severity\nof the vulnerability. Format is here:\nhttps://www.first.org/cvss/v4.0/specification-document.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecCVSSVersion": {
        "default": "CVSS_VERSION_UNSPECIFIED",
        "description": "The CVSS version.",
        "enum": [
          "CVSS_VERSION_UNSPECIFIED",
          "CVSS_VERSION_V2",
          "CVSS_VERSION_V3",
          "CVSS_VERSION_V4"
        ],
        "type": "string"
      },
      "SpecConnectionState": {
        "default": "CONNECTION_STATE_UNSPECIFIED",
        "enum": [
          "CONNECTION_STATE_UNSPECIFIED",
          "CONNECTION_STATE_CONNECTED",
          "CONNECTION_STATE_DISCONNECTED"
        ],
        "type": "string"
      },
      "SpecConnectionStatus": {
        "properties": {
          "connection_state": {
            "$ref": "#/components/schemas/SpecConnectionState"
          },
          "last_updated": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecEPSSRecord": {
        "properties": {
          "cve_id": {
            "type": "string"
          },
          "ingestion_time": {
            "format": "date-time",
            "type": "string"
          },
          "percentile": {
            "format": "double",
            "type": "number"
          },
          "probability": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "SpecEPSSScore": {
        "properties": {
          "percentile_score": {
            "format": "double",
            "type": "number"
          },
          "probability_score": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "SpecEmbeddingModelAlias": {
        "description": "EmbeddingModelAlias maps a platform embedding model to the name the\ncustomer's provider serves it under. Embedding models live in their own\nenum and never appear in ModelAlias, so they need their own list.",
        "properties": {
          "alias": {
            "description": "Name the customer's provider serves the model under, e.g. an Azure\nOpenAI deployment name. Defaults to the model's own name when unset.",
            "type": "string"
          },
          "model": {
            "$ref": "#/components/schemas/v1EmbeddingModel"
          }
        },
        "required": [
          "model"
        ],
        "type": "object"
      },
      "SpecEnabledFeatureType": {
        "default": "ENABLED_FEATURE_TYPE_UNSPECIFIED",
        "description": " - ENABLED_FEATURE_TYPE_AI_SAST_SCAN: Enables AI-powered SAST scanning of source code for security vulnerabilities.",
        "enum": [
          "ENABLED_FEATURE_TYPE_UNSPECIFIED",
          "ENABLED_FEATURE_TYPE_GIT_SCAN",
          "ENABLED_FEATURE_TYPE_GITHUB_SCAN",
          "ENABLED_FEATURE_TYPE_SECRETS_SCAN",
          "ENABLED_FEATURE_TYPE_TOOLS_SCAN",
          "ENABLED_FEATURE_TYPE_GITHUB_ACTION_SCAN",
          "ENABLED_FEATURE_TYPE_SAST_SCAN",
          "ENABLED_FEATURE_TYPE_AI_MODELS_SCAN",
          "ENABLED_FEATURE_TYPE_AI_SAST_SCAN"
        ],
        "type": "string"
      },
      "SpecEndorFingerprint": {
        "description": "An engine independent and rule agnostic fingerprint computed based on\nsource location information.",
        "properties": {
          "values": {
            "description": "The fingerprint values.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SpecEndorctlConfig": {
        "properties": {
          "image": {
            "type": "string"
          },
          "max_duration": {
            "description": "Maximum duration of an endorctl job in minutes.",
            "format": "int32",
            "type": "integer"
          },
          "tag": {
            "description": "Default will be set to 'latest'.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecEnvironment": {
        "properties": {
          "arch": {
            "type": "string"
          },
          "config": {
            "description": "Configuration used by endorctl.\nContains everything except credential values.",
            "type": "object"
          },
          "endorctl_version": {
            "type": "string"
          },
          "memory": {
            "format": "double",
            "type": "number"
          },
          "num_cpus": {
            "format": "int32",
            "type": "integer"
          },
          "os": {
            "type": "string"
          },
          "tools": {
            "items": {
              "$ref": "#/components/schemas/EnvironmentTool"
            },
            "type": "array"
          }
        },
        "required": [
          "arch",
          "endorctl_version",
          "config",
          "os",
          "memory",
          "num_cpus"
        ],
        "type": "object"
      },
      "SpecErrorCategory": {
        "default": "ERROR_CATEGORY_UNSPECIFIED",
        "description": "The type of error that the rule is for.",
        "enum": [
          "ERROR_CATEGORY_UNSPECIFIED",
          "ERROR_CATEGORY_PRIVATE_REGISTRY",
          "ERROR_CATEGORY_TOOLCHAIN",
          "ERROR_CATEGORY_REPOSITORY",
          "ERROR_CATEGORY_OTHER"
        ],
        "type": "string"
      },
      "SpecExporterParameters": {
        "properties": {
          "exporter_uuids": {
            "description": "exporter_uuids is the list of exporter objects that will be used for\nexports at the end of the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SpecExporterType": {
        "default": "EXPORTER_TYPE_UNSPECIFIED",
        "description": " - EXPORTER_TYPE_GHAS: EXPORTER_TYPE_GHAS indicates a GitHub Advanced Security exporter.\n - EXPORTER_TYPE_S3: EXPORTER_TYPE_S3 indicates an AWS S3 exporter.\n - EXPORTER_TYPE_WIZ: EXPORTER_TYPE_WIZ indicates a Wiz Security Platform exporter.",
        "enum": [
          "EXPORTER_TYPE_UNSPECIFIED",
          "EXPORTER_TYPE_GHAS",
          "EXPORTER_TYPE_S3",
          "EXPORTER_TYPE_WIZ"
        ],
        "type": "string"
      },
      "SpecFindingData": {
        "description": "Basic finding metadata that can be used to \"plot trends\".",
        "properties": {
          "approximation": {
            "description": "True if this finding is for an approximate dependency\nbased on the unresolved package dependencies.",
            "type": "boolean"
          },
          "categories": {
            "description": "Finding categories.",
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "create_time": {
            "description": "Time the finding was created.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Finding description.",
            "type": "string"
          },
          "level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "name": {
            "description": "Finding name.",
            "type": "string"
          },
          "tags": {
            "description": "Finding tags.",
            "items": {
              "$ref": "#/components/schemas/v1FindingTags"
            },
            "type": "array"
          },
          "target_dependency_package_name": {
            "description": "Fully qualified name of the dependency. For example, eco://package@version.",
            "type": "string"
          },
          "uuid": {
            "description": "Finding UUID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecFindingDetails": {
        "properties": {
          "dependency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "explanation": {
            "type": "string"
          },
          "package_version": {
            "type": "string"
          },
          "remediation": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecFindingLevel": {
        "default": "FINDING_LEVEL_UNSPECIFIED",
        "description": "Finding severity level.\n\n - FINDING_LEVEL_CRITICAL: Critical finding.\n - FINDING_LEVEL_HIGH: Very important findings.\n - FINDING_LEVEL_MEDIUM: Important findings.\n - FINDING_LEVEL_LOW: Low priority finding.",
        "enum": [
          "FINDING_LEVEL_UNSPECIFIED",
          "FINDING_LEVEL_CRITICAL",
          "FINDING_LEVEL_HIGH",
          "FINDING_LEVEL_MEDIUM",
          "FINDING_LEVEL_LOW"
        ],
        "type": "string"
      },
      "SpecImportedRuleSetResult": {
        "properties": {
          "errors": {
            "description": "Any errors encountered during the operation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "processing_time": {
            "description": "The total time in seconds that it took to process the request.",
            "format": "float",
            "type": "number"
          },
          "status": {
            "$ref": "#/components/schemas/ImportedRuleSetResultImportedRuleSetResultStatus"
          }
        },
        "type": "object"
      },
      "SpecInternalRecord": {
        "description": "Sanitized projection of the internal malware detection assessment. Deliberately\nNOT the full MalwareDetectionAssessment: that message carries internal-only\nfields (prompt_compressed, llm_call_stats, total_llm_cost, review state) that\nmust never reach GetMalware/ListMalware, which are public, unmasked-by-default\nAPIs. Only add fields here that are safe to return to any Malware caller.",
        "properties": {
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "human_reviewed": {
            "description": "Whether a human reviewed this assessment.",
            "type": "boolean"
          },
          "package_name": {
            "description": "Name of the assessed package.",
            "type": "string"
          },
          "reasons": {
            "description": "Reasons for the assessment's verdict.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "$ref": "#/components/schemas/v1MalwareAssessmentResultType"
          },
          "version": {
            "description": "Version of the assessed package.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecInvitationState": {
        "default": "INVITATION_STATE_UNSPECIFIED",
        "enum": [
          "INVITATION_STATE_UNSPECIFIED",
          "INVITATION_STATE_PENDING",
          "INVITATION_STATE_ACCEPTED",
          "INVITATION_STATE_EMAIL_FAILURE"
        ],
        "type": "string"
      },
      "SpecJobState": {
        "default": "JOB_STATE_UNSPECIFIED",
        "description": " - JOB_STATE_NEW: The job was just created but never executed.\n - JOB_STATE_RUNNING: The job is running.\n - JOB_STATE_SUCCESS: The job has been successfully executed.\n - JOB_STATE_FAILED: The job has failed and will not be retried.\n - JOB_STATE_CANCELLED: The job has been cancelled/aborted by the service and will be retried.\n - JOB_STATE_RETRY: The job has failed but will be retried up to the max_retries limit.",
        "enum": [
          "JOB_STATE_UNSPECIFIED",
          "JOB_STATE_NEW",
          "JOB_STATE_RUNNING",
          "JOB_STATE_SUCCESS",
          "JOB_STATE_FAILED",
          "JOB_STATE_CANCELLED",
          "JOB_STATE_RETRY"
        ],
        "type": "string"
      },
      "SpecKEVRecord": {
        "properties": {
          "cve_id": {
            "type": "string"
          },
          "date_added": {
            "format": "date-time",
            "type": "string"
          },
          "due_date": {
            "format": "date-time",
            "type": "string"
          },
          "known_ransomware_campaign_use": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "product": {
            "type": "string"
          },
          "required_action": {
            "type": "string"
          },
          "short_description": {
            "type": "string"
          },
          "vendor_project": {
            "type": "string"
          },
          "vulnerability_name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecLinterResultLevel": {
        "default": "LINTER_RESULT_LEVEL_UNSPECIFIED",
        "description": "The severity level of the linter result. Crafted using the Semgrep specification.\n\n - LINTER_RESULT_LEVEL_ERROR: ERROR indicates that a serious problem was found.\n - LINTER_RESULT_LEVEL_WARNING: WARNING indicates that a problem that is not considered serious was found.\n - LINTER_RESULT_LEVEL_INFO: INFO indicates that the notification is purely informational.\n - LINTER_RESULT_LEVEL_DEBUG: DEBUG indicates that this is a trace notification (debug).",
        "enum": [
          "LINTER_RESULT_LEVEL_UNSPECIFIED",
          "LINTER_RESULT_LEVEL_ERROR",
          "LINTER_RESULT_LEVEL_WARNING",
          "LINTER_RESULT_LEVEL_INFO",
          "LINTER_RESULT_LEVEL_DEBUG"
        ],
        "type": "string"
      },
      "SpecLinterResultOrigin": {
        "default": "LINTER_RESULT_ORIGIN_UNSPECIFIED",
        "description": "The origin of the linter result.\n\n - LINTER_RESULT_ORIGIN_SEMGREP: The semgrep tool reported this result.\n - LINTER_RESULT_ORIGIN_SECRETS_SCANNER: The secrets scanner reported this result.\n - LINTER_RESULT_ORIGIN_SAST_SCANNER: The SAST scanner reported this result.\n - LINTER_RESULT_ORIGIN_LLM_SCANNER: The LLM scanner reported this result.\n - LINTER_RESULT_ORIGIN_AI_SAST_SCANNER: The AI SAST scanner reported this result.",
        "enum": [
          "LINTER_RESULT_ORIGIN_UNSPECIFIED",
          "LINTER_RESULT_ORIGIN_SEMGREP",
          "LINTER_RESULT_ORIGIN_SECRETS_SCANNER",
          "LINTER_RESULT_ORIGIN_SAST_SCANNER",
          "LINTER_RESULT_ORIGIN_LLM_SCANNER",
          "LINTER_RESULT_ORIGIN_AI_SAST_SCANNER"
        ],
        "type": "string"
      },
      "SpecMalwareRange": {
        "description": "Affected ranges.",
        "properties": {
          "fixed": {
            "description": "The version or commit in which malicious behaviour was fixed.",
            "type": "string"
          },
          "introduced": {
            "description": "The earliest version or commit in which malicious behaviour was\nintroduced.",
            "type": "string"
          },
          "last_affected": {
            "description": "The last version in which malicious behaviour was observed. Used as an\ninclusive upper bound when no fixed version is known (OSV last_affected):\nversions at or below it are affected, versions strictly above are not.",
            "type": "string"
          },
          "osv_id": {
            "description": "The OSV ID for the malware record.",
            "type": "string"
          },
          "repo": {
            "description": "The repository URL.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/MalwareRangeMalwareRangeType"
          }
        },
        "type": "object"
      },
      "SpecMalwareRanges": {
        "properties": {
          "ranges": {
            "items": {
              "$ref": "#/components/schemas/SpecMalwareRange"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SpecMalwareSource": {
        "default": "MALWARE_SOURCE_UNSPECIFIED",
        "description": " - MALWARE_SOURCE_ENDOR: Merged from one or more external malware feeds (OSV, AMF, INTERNAL etc).\n - MALWARE_SOURCE_INTERNAL: Endor security research team assessments.",
        "enum": [
          "MALWARE_SOURCE_UNSPECIFIED",
          "MALWARE_SOURCE_ENDOR",
          "MALWARE_SOURCE_OSV",
          "MALWARE_SOURCE_AMF",
          "MALWARE_SOURCE_INTERNAL"
        ],
        "type": "string"
      },
      "SpecMalwareVersion": {
        "properties": {
          "osv_id": {
            "description": "The status of the malware record.",
            "type": "string"
          },
          "version": {
            "description": "The version of the malware record.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecModelAlias": {
        "description": "ModelAlias maps a platform model to the name the customer's provider\nserves it under.",
        "properties": {
          "alias": {
            "description": "Name the customer's provider serves the model under, e.g. an Azure\nOpenAI deployment name. Defaults to the model's own name when unset.",
            "type": "string"
          },
          "model": {
            "$ref": "#/components/schemas/SpecAvailableLLM"
          }
        },
        "required": [
          "model"
        ],
        "type": "object"
      },
      "SpecNotificationDismiss": {
        "properties": {
          "category": {
            "$ref": "#/components/schemas/NotificationDismissNotificationDismissCategory"
          },
          "comment": {
            "type": "string"
          },
          "time": {
            "description": "The time is when the notification was last dismissed.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecNotificationState": {
        "default": "NOTIFICATION_STATE_UNSPECIFIED",
        "description": " - NOTIFICATION_STATE_OPEN_NOTIFICATION_PENDING: New Notification has been created but notification is pending.\n - NOTIFICATION_STATE_OPEN: New Notification has been created and notification has been sent.\n - NOTIFICATION_STATE_DISMISSED: Notification has been dismissed by the user.\n - NOTIFICATION_STATE_SNOOZED: Notification has been snoozed by the user. Not used yet.\n - NOTIFICATION_STATE_RESOLVED_NOTIFICATION_PENDING: Notification has been resolved but notification is pending.\n - NOTIFICATION_STATE_RESOLVED: Notification has been resolved and the notification has been sent.\n - NOTIFICATION_STATE_DELETED: Notification has been marked for deletion.",
        "enum": [
          "NOTIFICATION_STATE_UNSPECIFIED",
          "NOTIFICATION_STATE_OPEN_NOTIFICATION_PENDING",
          "NOTIFICATION_STATE_OPEN",
          "NOTIFICATION_STATE_DISMISSED",
          "NOTIFICATION_STATE_SNOOZED",
          "NOTIFICATION_STATE_RESOLVED_NOTIFICATION_PENDING",
          "NOTIFICATION_STATE_RESOLVED",
          "NOTIFICATION_STATE_DELETED"
        ],
        "type": "string"
      },
      "SpecNpm": {
        "properties": {
          "last_seen_sequence_number": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecPackageManagerStatus": {
        "properties": {
          "error_message": {
            "description": "error_message if any was found.",
            "readOnly": true,
            "type": "string"
          },
          "last_tested_at": {
            "description": "last_tested_at is the time when the package manager was last tested.",
            "format": "date-time",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/SpecPackageManagerStatusState"
          }
        },
        "type": "object"
      },
      "SpecPackageManagerStatusState": {
        "default": "STATE_UNSPECIFIED",
        "description": "The status of the package manager.",
        "enum": [
          "STATE_UNSPECIFIED",
          "STATE_SUCCESS",
          "STATE_FAIL"
        ],
        "type": "string"
      },
      "SpecPackageVersionData": {
        "description": "Data about a deleted package version that helps justify the\nnumber of dependencies and findings deleted by the scan.",
        "properties": {
          "dependency_count": {
            "description": "Dependency count.",
            "format": "int32",
            "type": "integer"
          },
          "finding_count": {
            "description": "Finding count.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "Package version name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecPlatformSourceType": {
        "default": "PLATFORM_SOURCE_TYPE_UNSPECIFIED",
        "description": "Deprecated: Use platform_type instead.",
        "enum": [
          "PLATFORM_SOURCE_TYPE_UNSPECIFIED",
          "PLATFORM_SOURCE_TYPE_AZURE",
          "PLATFORM_SOURCE_TYPE_BITBUCKET",
          "PLATFORM_SOURCE_TYPE_GITHUB",
          "PLATFORM_SOURCE_TYPE_GITLAB"
        ],
        "type": "string"
      },
      "SpecProvider": {
        "default": "PROVIDER_UNSPECIFIED",
        "description": "AI providers that support customer-supplied credentials.\n\n - PROVIDER_UNSPECIFIED: No provider selected.\n - PROVIDER_AZURE_OPENAI: OpenAI-family models served from the customer's Azure OpenAI resource.\n - PROVIDER_OPENAI: OpenAI platform (api.openai.com) or an OpenAI-compatible endpoint.\n - PROVIDER_VERTEX_AI: Gemini-family models served from the customer's GCP project through\nVertex AI.\n - PROVIDER_GEMINI: Gemini API accessed with a Google AI Studio API key.",
        "enum": [
          "PROVIDER_UNSPECIFIED",
          "PROVIDER_AZURE_OPENAI",
          "PROVIDER_OPENAI",
          "PROVIDER_VERTEX_AI",
          "PROVIDER_GEMINI"
        ],
        "type": "string"
      },
      "SpecProvisioningConfig": {
        "description": "Message for provisioning configuration.",
        "properties": {
          "bazel_remote_cache": {
            "description": "GRPC address of the bazel remote cache. If enabled, tool chain downloads are cached locally in the cluster.",
            "type": "string"
          },
          "enable_build_tools_version_detection": {
            "description": "Whether build tool detection was enabled.",
            "type": "boolean"
          },
          "endorctl_version": {
            "description": "Endorctl version.",
            "type": "string"
          },
          "insecure_sandbox": {
            "description": "Whether an insecure scanbox was specified.",
            "type": "boolean"
          },
          "install_build_tools": {
            "description": "Whether build tools where installed.",
            "type": "boolean"
          },
          "install_build_tools_dependencies": {
            "description": "Whether install build tools dependencies was enabled.",
            "type": "boolean"
          },
          "sandbox_debug": {
            "description": "Whether sandbox debugging was enabled.",
            "type": "boolean"
          },
          "use_automated_scan_parameters": {
            "description": "Whether use automated scan parameters was enabled.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SpecProvisioningResultData": {
        "properties": {
          "auto_detect_result": {
            "$ref": "#/components/schemas/v1AutoDetectResult"
          },
          "automated_scan_parameters_config": {
            "$ref": "#/components/schemas/v1AutomatedScanParametersConfig"
          },
          "error": {
            "description": "Provisioning error message.",
            "type": "string"
          },
          "exit_code": {
            "description": "Provisioning exit code.",
            "format": "int32",
            "type": "integer"
          },
          "provisioning_result_uuid": {
            "description": "UUID of the provisioning result.",
            "type": "string"
          },
          "scan_profile": {
            "$ref": "#/components/schemas/v1ScanProfile"
          },
          "tool_chains": {
            "$ref": "#/components/schemas/v1ToolChains"
          },
          "tool_chains_source": {
            "$ref": "#/components/schemas/v1ToolChainsSource"
          }
        },
        "required": [
          "provisioning_result_uuid"
        ],
        "type": "object"
      },
      "SpecPypi": {
        "properties": {
          "last_processed_package_name": {
            "type": "string"
          },
          "last_processed_time": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecRaw": {
        "properties": {
          "endor_vulnerability": {
            "$ref": "#/components/schemas/endorv1Vulnerability"
          },
          "epss_record": {
            "$ref": "#/components/schemas/SpecEPSSRecord"
          },
          "kev_record": {
            "$ref": "#/components/schemas/SpecKEVRecord"
          },
          "nvd_vulnerability": {
            "$ref": "#/components/schemas/v1NVDVulnerability"
          },
          "osv_vulnerability": {
            "$ref": "#/components/schemas/osvVulnerability"
          }
        },
        "type": "object"
      },
      "SpecRawMalware": {
        "description": "Raw source records for accountability, one field per contributing feed.\nOnly the field(s) matching the record's actual source(s) are populated.\nNamed MalwareRaw, not Raw, so its generated OpenAPI definition doesn't collide\nwith Vuln.Spec.Raw's (both are Spec.Raw, which would force the swagger generator\nto fall back to fully-qualified names and rename Vuln's existing definition).",
        "properties": {
          "amf": {
            "$ref": "#/components/schemas/SpecAMFRecord"
          },
          "internal": {
            "$ref": "#/components/schemas/SpecInternalRecord"
          },
          "osv": {
            "$ref": "#/components/schemas/osvVulnerability"
          }
        },
        "type": "object"
      },
      "SpecSCMCredentialStatus": {
        "properties": {
          "error_message": {
            "description": "error_message if any was found.",
            "readOnly": true,
            "type": "string"
          },
          "last_tested_at": {
            "description": "last_tested_at is the time when the credential was last tested.",
            "format": "date-time",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/SpecSCMCredentialStatusState"
          }
        },
        "type": "object"
      },
      "SpecSCMCredentialStatusState": {
        "default": "STATE_UNSPECIFIED",
        "description": "The status of the SCM credential.\n\n - STATE_FAIL: STATE_FAIL covers all failure modes: unreachable host, invalid token,\nand expired token. Inspect error_message for the specific cause.",
        "enum": [
          "STATE_UNSPECIFIED",
          "STATE_SUCCESS",
          "STATE_FAIL"
        ],
        "type": "string"
      },
      "SpecSandboxConfig": {
        "description": "Message for sandbox configuration.",
        "properties": {
          "bazel_version": {
            "description": "Bazel version.",
            "type": "string"
          },
          "custom_script_config": {
            "$ref": "#/components/schemas/SandboxConfigCustomScriptConfig"
          },
          "environment_variables": {
            "description": "Sanbox environment variables.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sandbox_strategy": {
            "$ref": "#/components/schemas/SandboxConfigSandboxStrategyType"
          },
          "writable_paths": {
            "description": "Sandbox writable paths.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SpecScanComponent": {
        "default": "SCAN_COMPONENT_UNSPECIFIED",
        "description": "Identifies an individual scanner component whose execution\ncontributes towards scan credit usage. Used by the licensing\naggregation job to determine how many credits a scan consumed.\n\n - SCAN_COMPONENT_UNSPECIFIED: No component recorded.\n - SCAN_COMPONENT_SCA: Software Composition Analysis scanner ran.\n - SCAN_COMPONENT_SAST: Static Application Security Testing (semgrep) scanner ran.\n - SCAN_COMPONENT_AI_SAST: AI-assisted SAST scanner ran.\n - SCAN_COMPONENT_SECRETS: Secrets scanner ran.",
        "enum": [
          "SCAN_COMPONENT_UNSPECIFIED",
          "SCAN_COMPONENT_SCA",
          "SCAN_COMPONENT_SAST",
          "SCAN_COMPONENT_AI_SAST",
          "SCAN_COMPONENT_SECRETS"
        ],
        "type": "string"
      },
      "SpecSchedulerConfig": {
        "properties": {
          "image": {
            "type": "string"
          },
          "max_running_jobs": {
            "description": "Maximum number of endorctl jobs that can be run concurrently.",
            "format": "int32",
            "type": "integer"
          },
          "tag": {
            "description": "Default will be set to 'latest'.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecSecurityReviewScannerParameters": {
        "properties": {
          "disable_code_summary": {
            "description": "disable_code_summary indicates that the code summary part of the\nsecurity review should be disabled whether or not there are findings.",
            "type": "boolean"
          },
          "user_prompt": {
            "description": "user_prompt is the user prompt for the security review scanner.\nit is used to customize the security review scanner and give the\nability to the user to provide their own prompt to customize the\nsecurity review and the findings that are reported. This is optional.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecVulnerabilityType": {
        "default": "VULNERABILITY_TYPE_UNSPECIFIED",
        "description": "Enum representing the type of vulnerability.",
        "enum": [
          "VULNERABILITY_TYPE_UNSPECIFIED",
          "VULNERABILITY_TYPE_MALICIOUS"
        ],
        "type": "string"
      },
      "SpecWorkflowResult": {
        "properties": {
          "error": {
            "$ref": "#/components/schemas/WorkflowResultWorkflowResultError"
          },
          "provisioning_result_uuid": {
            "description": "provisioning_result_uuid is the UUID of the ProvisioningResult of the workflow step.",
            "type": "string"
          },
          "scan_duration": {
            "description": "scan_duration is how log the scan ran.",
            "type": "string"
          },
          "scan_profile_uuid": {
            "description": "scan_profile_uuid is the UUID of the ScanProfile of the workflow step.",
            "type": "string"
          },
          "scan_result_uuid": {
            "description": "scan_result_uuid is the UUID of the ScanResult of the workflow step.",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ScanResultSpecStatus"
          },
          "title": {
            "description": "title is descriptive text of the workflow step.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SpecWorkflowStep": {
        "properties": {
          "disabled": {
            "description": "disable is a way to disable a WorkflowStep without having to delete it.",
            "type": "boolean"
          },
          "scan_profile_uuid": {
            "description": "scan_profile_uuid is the UUID of the ScanProfile of the workflow step.",
            "type": "string"
          },
          "title": {
            "description": "title is descriptive text of the workflow step.",
            "type": "string"
          }
        },
        "required": [
          "title",
          "scan_profile_uuid"
        ],
        "type": "object"
      },
      "SystemConfigAiConfig": {
        "description": "AI related system configuration.",
        "properties": {
          "code_segment_processing": {
            "description": "Set to true to enable code segment embeddings and LLM processing.\n\nCode segment embeddings and LLM processing are used to improve\nC/C++ and AI-model dependency detection accuracy.\nEndor Labs uses a private Azure OpenAI Service deployment\nthat is isolated from the public internet and cannot be\nused for training.\nThe code segments themselves are never stored anywhere,\nonly the embeddings are saved in the database.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigAnalyticsConfig": {
        "properties": {
          "cvss_version": {
            "$ref": "#/components/schemas/SpecCVSSVersion"
          },
          "enable_finding_prioritization": {
            "description": "Set to true to enable finding prioritization.",
            "type": "boolean"
          },
          "enable_version_upgrade_prioritization": {
            "description": "Set to true to enable version upgrade prioritization.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigArtifactoryConfig": {
        "description": "ArtifactoryConfig contains all artifactory related system configuration.",
        "properties": {
          "enable_streaming": {
            "description": "Enable streaming mode.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigCloudDeploymentConfig": {
        "description": "CloudDeploymentConfig contains all cloud deployment related configurations.\nThese parameteres can only be modified by the Endor team.",
        "properties": {
          "nat_network_requests": {
            "description": "nat_network_requests will force all requests to go through the NAT\nnetwork.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigEndorIgnoreConfig": {
        "description": "EndorIgnoreConfig contains all ignore file related system configuration.",
        "properties": {
          "custom_file_names": {
            "description": "List of additional supported file names.\n\nBy default, the following file names are supported:\n- .endorignore.yaml\n\nIt is recommended to configure CODEOWNERS for all ignore files,\nincluding the default file names, to enforce an approval process\nfor developer ignore requests.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enable": {
            "description": "Set to true to enable ignore file support.\n\nThe ignore file must be either a raw list of vulnerability ids\n(one per line), or follow the ignore file YAML syntax.\nUse the endorctl ignore command to automatically generate and\nformat the ignore file.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigLoggingConfig": {
        "properties": {
          "enable_remote_logging": {
            "description": "Set to true to enable remote logging.",
            "type": "boolean"
          },
          "remote_ep": {
            "description": "Remote logging endpoint.",
            "type": "string"
          },
          "remote_log_level": {
            "$ref": "#/components/schemas/v1LogLevel"
          }
        },
        "type": "object"
      },
      "SystemConfigPackageFirewallConfig": {
        "description": "PackageFirewallConfig contains package firewall configuration for exceptions,\nmalware enforcement, restricted license enforcement, and minimum package age enforcement.\nCached per namespace in endorfactory and enforced on versioned requests.",
        "properties": {
          "cvss_severity_action": {
            "$ref": "#/components/schemas/v1PackageFirewallAction"
          },
          "cvss_severity_threshold": {
            "$ref": "#/components/schemas/SpecCVSSSeverityLevel"
          },
          "ecosystem_package_manager_uuid": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "UUID of the PackageManager whose artifact repository serves an ecosystem, keyed by the name of\nthe Ecosystem enum value, for example \"ECOSYSTEM_NPM\". A named ecosystem is served from that\nrepository instead of its public registry.\n\nAn ecosystem absent from the map keeps its public registry, so an empty map preserves current\nbehavior and an ecosystem can be adopted on its own.\n\nOne UUID per ecosystem: a request resolves to exactly one repository, and there is no fallback\nto a second one or to the public registry.\n\nThe referenced PackageManager must live in the same namespace as this config, and its\nAuthProvider.package_manager_type must match the ecosystem its key names, so an \"ECOSYSTEM_NPM\"\nkey cannot point at a Maven repository. The rules below constrain the shape of the value only.\nWhether the UUID names a PackageManager at all, and one of the right kind, is checked against\nthe referenced object.",
            "type": "object"
          },
          "exceptions": {
            "description": "Exception rules. If any exception matches the request, all checks are skipped.",
            "items": {
              "$ref": "#/components/schemas/PackageFirewallConfigException"
            },
            "type": "array"
          },
          "fail_closed": {
            "description": "Whether to fail closed when a firewall decision cannot be reached.",
            "type": "boolean"
          },
          "malware_action": {
            "$ref": "#/components/schemas/v1PackageFirewallAction"
          },
          "min_age_action": {
            "$ref": "#/components/schemas/v1PackageFirewallAction"
          },
          "min_age_hours": {
            "description": "Minimum age in hours for a package to be allowed (0 = disabled).",
            "format": "int32",
            "type": "integer"
          },
          "notification_rules": {
            "description": "Notification rules evaluated when the firewall blocks or warns on a request.\nA rule matches when the event's reason is in reasons (or reasons is empty) and\nits action is in on_actions (or on_actions is empty). Each matching rule sends\na Slack message to every referenced notification target. Only Slack targets\nare supported for now; other target types are skipped.",
            "items": {
              "$ref": "#/components/schemas/PackageFirewallConfigFirewallNotificationRule"
            },
            "type": "array"
          },
          "restricted_license_action": {
            "$ref": "#/components/schemas/v1PackageFirewallAction"
          },
          "restricted_licenses": {
            "description": "List of restricted SPDX license identifiers.\nPackages with these licenses are subject to restricted_license_action.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SystemConfigPolicyConfig": {
        "description": "PolicyConfig contains all policy related system configuration.",
        "properties": {
          "auto_enable": {
            "description": "Automatically enable new system policies on release upgrade.",
            "type": "boolean"
          },
          "auto_update": {
            "description": "Automatically update policies if the corresponding policy\ntemplate has changed between releases.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigSastConfig": {
        "description": "SastConfig contains all SAST related system configuration.",
        "properties": {
          "enable_code_snippet_storage": {
            "description": "Set to true to enable code snippet storage.",
            "type": "boolean"
          },
          "enable_semgrep": {
            "description": "Opt-in for the usage of semgrep.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SystemConfigServiceCreateSystemConfigBody": {
        "description": "SystemConfig represents the system configuration for a tenant.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SystemConfigSpec"
          },
          "tenant_meta": {
            "description": "SystemConfig is associated with a tenant and namespace.",
            "title": "SystemConfig is associated with a tenant and namespace.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the system configuration.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "SystemConfigServiceUpdateSystemConfigBody": {
        "description": "Request to update a system configuration.",
        "properties": {
          "object": {
            "description": "SystemConfig represents the system configuration for a tenant.",
            "properties": {
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "propagate": {
                "description": "Indicates that the object should be visible in child namespaces.",
                "type": "boolean"
              },
              "spec": {
                "$ref": "#/components/schemas/v1SystemConfigSpec"
              },
              "tenant_meta": {
                "description": "SystemConfig is associated with a tenant and namespace.",
                "title": "SystemConfig is associated with a tenant and namespace.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the system configuration.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "SystemConfigUrgentNotificationConfig": {
        "description": "Urgent Notification configuration for critical alerts via email or slack.",
        "properties": {
          "email_addresses": {
            "description": "List of email addresses to send urgent notifications to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enable_urgent_notification": {
            "description": "Set to true to enable urgent notification.",
            "type": "boolean"
          },
          "slack_webhook_url": {
            "description": "Option slack channel webhook URL to send the notification to.",
            "type": "string"
          },
          "urgent_notification_threshold": {
            "$ref": "#/components/schemas/UrgentNotificationConfigUrgentNotificationThreshold"
          }
        },
        "type": "object"
      },
      "TargetTargetType": {
        "default": "TARGET_TYPE_UNSPECIFIED",
        "description": " - TARGET_TYPE_LANGUAGE: Language target, for example: Go 1.7 or Java 8.\n - TARGET_TYPE_FRAMEWORK: Framework target, for example: spring boot 2.0 or dotnet 4.6.2.\n - TARGET_TYPE_OS: OS target, for example: linux, windows, macos.\n - TARGET_TYPE_CPU_ARCH: CPU architecture target, for example: amd64, arm64, arm.",
        "enum": [
          "TARGET_TYPE_UNSPECIFIED",
          "TARGET_TYPE_LANGUAGE",
          "TARGET_TYPE_FRAMEWORK",
          "TARGET_TYPE_OS",
          "TARGET_TYPE_CPU_ARCH"
        ],
        "type": "string"
      },
      "TemplateParameterQueryApiData": {
        "description": "Information needed to get the list of possible values via the API.\nUI uses the meta.name and meta.description fields to present options.",
        "properties": {
          "filter": {
            "description": "Optional database filter for the list query (for example,\n\"spec.origin==\\\"LINTER_RESULT_ORIGIN_SECRETS_SCANNER\\\"\").",
            "type": "string"
          },
          "input_field": {
            "description": "Full name of field in resource object to use as input value to policy\ntemplate (for example, \"spec.sarif_result.rule_id\" or\n\"spec.license_id\").",
            "type": "string"
          },
          "namespace": {
            "description": "Optional value for the namespace to be used when retrieving the\npossible data values.",
            "type": "string"
          },
          "resource_kind": {
            "description": "Resource kind (for example, \"LinterResult\" or \"License\").",
            "type": "string"
          }
        },
        "required": [
          "resource_kind",
          "input_field"
        ],
        "type": "object"
      },
      "TemplateParamsTemplateValue": {
        "description": "TemplateValue represents a single template parameter name-value pair.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/v1TemplateParamName"
          },
          "value": {
            "description": "The template parameter value.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ToolChainProfileArchitectureToolChain": {
        "properties": {
          "arch": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ToolChains"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "UrgentNotificationConfigUrgentNotificationThreshold": {
        "default": "URGENT_NOTIFICATION_THRESHOLD_UNSPECIFIED",
        "description": " - URGENT_NOTIFICATION_THRESHOLD_UNSPECIFIED: Unspecified default value.\n - URGENT_NOTIFICATION_THRESHOLD_DEFINITELY_AFFECTED: Notification setting for specific package versions that are definitely\naffected.\n - URGENT_NOTIFICATION_THRESHOLD_POTENTIALLY_AFFECTED: Notification setting for specific package versions that are potentially\naffected. Example: npm:abc@1.0.2 is affected. If set, this will notify\nfor npm:abc all versions.",
        "enum": [
          "URGENT_NOTIFICATION_THRESHOLD_UNSPECIFIED",
          "URGENT_NOTIFICATION_THRESHOLD_DEFINITELY_AFFECTED",
          "URGENT_NOTIFICATION_THRESHOLD_POTENTIALLY_AFFECTED"
        ],
        "type": "string"
      },
      "VEXExportServiceCreateVEXExportBody": {
        "description": "The request to the VEX export API.\nIt consists of the request resource kind.\nThe UUID is the uuid of the resource.\nThe output is the format to export the VEX.\nThe VEX kind is the kind of the VEX requested by the user. Currently, we support only CycloneDx.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ExportedVEXSpec"
          },
          "tenant_meta": {
            "description": "SBOM are associated with a tenant and tenant information must be provided.",
            "title": "SBOM are associated with a tenant and tenant information must be provided.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the VEX.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "VantaConfigVantaAccessTokenAuth": {
        "properties": {
          "access_token": {
            "readOnly": true,
            "type": "string"
          },
          "client_id": {
            "type": "string"
          },
          "client_secret": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "VantaConfigVantaAuthMethod": {
        "default": "VANTA_AUTH_METHOD_UNSPECIFIED",
        "description": " - VANTA_AUTH_METHOD_ACCESS_TOKEN: Uses basic username and password and retrieves an ephemeral access token for authentication.\n - VANTA_AUTH_METHOD_ACCESS_API_KEY: Uses an API key provided by the user.\n\nNote: This is just a placeholder and not yet implemented.",
        "enum": [
          "VANTA_AUTH_METHOD_UNSPECIFIED",
          "VANTA_AUTH_METHOD_ACCESS_TOKEN",
          "VANTA_AUTH_METHOD_ACCESS_API_KEY"
        ],
        "type": "string"
      },
      "VersionDiffResultRepeatedString": {
        "properties": {
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "VersionUpgradeServiceCreateVersionUpgradeBody": {
        "description": "VersionUpgrade contains all information about a possible version upgrade of a dependency package.\nThis upgrade object can be under a project or a package version object.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1VersionUpgradeSpec"
          },
          "tenant_meta": {
            "description": "Tenant metadata information.",
            "title": "Tenant metadata information.",
            "type": "object"
          },
          "uuid": {
            "description": "The UUID of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "context"
        ],
        "type": "object"
      },
      "VersionUpgradeServiceUpdateVersionUpgradeBody": {
        "description": "Request to update a version upgrade.",
        "properties": {
          "object": {
            "description": "VersionUpgrade contains all information about a possible version upgrade of a dependency package.\nThis upgrade object can be under a project or a package version object.",
            "properties": {
              "context": {
                "$ref": "#/components/schemas/v1Context"
              },
              "meta": {
                "$ref": "#/components/schemas/v1Meta"
              },
              "spec": {
                "$ref": "#/components/schemas/v1VersionUpgradeSpec"
              },
              "tenant_meta": {
                "description": "Tenant metadata information.",
                "title": "Tenant metadata information.",
                "type": "object"
              },
              "uuid": {
                "description": "The UUID of the resource.",
                "readOnly": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "context"
        ],
        "type": "object"
      },
      "VersionUpgradeUpgradeList": {
        "properties": {
          "upgrade_list": {
            "items": {
              "$ref": "#/components/schemas/v1ReleaseUpgradeInfo"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "VulnSpecAffected": {
        "properties": {
          "affected_callpath_uris": {
            "description": "Affected function URIs in FastenURI format.\nFor example,\n\"/com.atlassian.connect.spring.internal.lifecycle/LifecycleController.installed(%2Fcom.atlassian.connect.spring.internal.lifecycle%2FLifecycleEvent,%2Fcom.atlassian.connect.spring%2FAtlassianHostUser)%2Forg.springframework.http%2FResponseEntity\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "affected_filepaths": {
            "description": "Class name that this vulnerability affects in JVM notation.\nFor example,\n\"com/atlassian/connect/spring/internal/lifecycle/LifecycleController.class\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "database_specific": {
            "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies.",
            "type": "object"
          },
          "ecosystem_specific": {
            "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the ecosystem for which the record applies.",
            "type": "object"
          },
          "fix_commits": {
            "items": {
              "type": "string"
            },
            "title": "Links to the commits that fix the vulnerability",
            "type": "array"
          },
          "has_been_fixed": {
            "type": "boolean"
          },
          "maintainer_cvss_level": {
            "$ref": "#/components/schemas/SpecCVSSSeverityLevel"
          },
          "maintainer_severity": {
            "$ref": "#/components/schemas/CVSSV3SeverityLevel"
          },
          "package": {
            "$ref": "#/components/schemas/SpecAffectedPackage"
          },
          "ranges": {
            "items": {
              "$ref": "#/components/schemas/SpecAffectedRange"
            },
            "type": "array"
          },
          "reachable_by_inclusion": {
            "description": "The vulnerability is assumed reachable whenever this package is\nincluded; there are no affected function URIs for call-path analysis.",
            "type": "boolean"
          },
          "source": {
            "$ref": "#/components/schemas/AffectedSource"
          },
          "versions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "VulnSpecCredit": {
        "properties": {
          "contact": {
            "description": "Contact methods (URLs).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name to give the credit.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "VulnSpecReference": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ReferenceReferenceType"
          },
          "url": {
            "description": "The vulnerability URL.",
            "type": "string"
          }
        },
        "required": [
          "type",
          "url"
        ],
        "type": "object"
      },
      "VulnerabilityComponent": {
        "properties": {
          "artifact_id": {
            "description": "Indicates the artifact artifact_id that the CVE affects.",
            "type": "string"
          },
          "endor_uri": {
            "description": "Affected function URIs in FastenURI format.\nFor example,\n\"/com.atlassian.connect.spring.internal.lifecycle/LifecycleController.installed(%2Fcom.atlassian.connect.spring.internal.lifecycle%2FLifecycleEvent,%2Fcom.atlassian.connect.spring%2FAtlassianHostUser)%2Forg.springframework.http%2FResponseEntity\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fixed_versions": {
            "description": "A list of all fixed versions.\nCan be more than one if the fix is applied on multiple release branches.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "group_id": {
            "description": "Indicates the artifact group id that the CVE affects.",
            "type": "string"
          },
          "reachable_by_inclusion": {
            "description": "The vulnerability is assumed reachable due to how the artifact is\ntypically used; endor_uri is empty and call-path analysis does not apply.\nThe json_name pins the curated feed's key for protojson parsing.",
            "type": "boolean"
          },
          "versions_range": {
            "description": "Vulnerable version range in Maven notation. For example, \"[1.1.0,2.1.3)\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "vulnerable_filepath": {
            "description": "Class name that this vulnerability affects in JVM notation.\nFor example,\n\"com/atlassian/connect/spring/internal/lifecycle/LifecycleController.class\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "vulnerable_versions": {
            "description": "A list of all affected artifact versions.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "group_id",
          "artifact_id"
        ],
        "type": "object"
      },
      "WebhookConfigWebhookAuthMethod": {
        "default": "WEBHOOK_AUTH_METHOD_UNSPECIFIED",
        "description": " - WEBHOOK_AUTH_METHOD_NONE: Uses no authentication. Not recommended.\n - WEBHOOK_AUTH_METHOD_BASIC: Uses basic username and password.\n - WEBHOOK_AUTH_METHOD_API_KEY: Uses an API key as credentials.",
        "enum": [
          "WEBHOOK_AUTH_METHOD_UNSPECIFIED",
          "WEBHOOK_AUTH_METHOD_NONE",
          "WEBHOOK_AUTH_METHOD_BASIC",
          "WEBHOOK_AUTH_METHOD_API_KEY"
        ],
        "type": "string"
      },
      "WebhookConfigWebhookBasicAuth": {
        "properties": {
          "password": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "WebhookConfigWebhookHeader": {
        "description": "A single HTTP header attached to every webhook request, regardless of\nthe configured auth_method. Use this for vendor-specific auth headers\n(e.g., DD-API-KEY for Datadog) or arbitrary metadata headers.",
        "properties": {
          "name": {
            "description": "Header name. Must be a valid RFC 7230 token (letters, digits, and\n!#$%\u0026'*+-.^_`|~). Reserved names (Content-Type, Authorization when an\nauth_method other than NONE is set, X-Endor-HMAC-Signature, and\nhop-by-hop headers) are rejected at send time.",
            "type": "string"
          },
          "value": {
            "description": "Header value sent verbatim. Stored as a secret (encrypted at rest,\nredacted in API responses) because values often hold API keys.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "type": "object"
      },
      "WorkflowAllSecretsExposed": {
        "description": "AllSecretsExposed defines the exposure of the 'secrets' object.",
        "properties": {
          "evidence": {
            "description": "Matched keyword from the content of the line.",
            "type": "string"
          },
          "line_content": {
            "description": "Content of the line exposing full 'secrets' object.",
            "type": "string"
          },
          "location_uri": {
            "description": "Full path of exposed 'secrets' object with the line number.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "WorkflowGHTokenPermission": {
        "default": "GH_TOKEN_PERMISSION_UNSPECIFIED",
        "description": "GHTokenPermission represents the possible permissions assignable to GITHUB_TOKEN used by the workflow.",
        "enum": [
          "GH_TOKEN_PERMISSION_UNSPECIFIED",
          "GH_TOKEN_PERMISSION_ACTION_NONE",
          "GH_TOKEN_PERMISSION_ACTION_READ",
          "GH_TOKEN_PERMISSION_ACTION_WRITE",
          "GH_TOKEN_PERMISSION_CHECKS_NONE",
          "GH_TOKEN_PERMISSION_CHECKS_READ",
          "GH_TOKEN_PERMISSION_CHECKS_WRITE",
          "GH_TOKEN_PERMISSION_CONTENTS_NONE",
          "GH_TOKEN_PERMISSION_CONTENTS_READ",
          "GH_TOKEN_PERMISSION_CONTENTS_WRITE",
          "GH_TOKEN_PERMISSION_DEPLOYMENTS_NONE",
          "GH_TOKEN_PERMISSION_DEPLOYMENTS_READ",
          "GH_TOKEN_PERMISSION_DEPLOYMENTS_WRITE",
          "GH_TOKEN_PERMISSION_IDTOKEN_NONE",
          "GH_TOKEN_PERMISSION_IDTOKEN_READ",
          "GH_TOKEN_PERMISSION_IDTOKEN_WRITE",
          "GH_TOKEN_PERMISSION_ISSUES_NONE",
          "GH_TOKEN_PERMISSION_ISSUES_READ",
          "GH_TOKEN_PERMISSION_ISSUES_WRITE",
          "GH_TOKEN_PERMISSION_DISCUSSIONS_NONE",
          "GH_TOKEN_PERMISSION_DISCUSSIONS_READ",
          "GH_TOKEN_PERMISSION_DISCUSSIONS_WRITE",
          "GH_TOKEN_PERMISSION_PACKAGES_NONE",
          "GH_TOKEN_PERMISSION_PACKAGES_READ",
          "GH_TOKEN_PERMISSION_PACKAGES_WRITE",
          "GH_TOKEN_PERMISSION_PAGES_NONE",
          "GH_TOKEN_PERMISSION_PAGES_READ",
          "GH_TOKEN_PERMISSION_PAGES_WRITE",
          "GH_TOKEN_PERMISSION_PULLREQUESTS_NONE",
          "GH_TOKEN_PERMISSION_PULLREQUESTS_READ",
          "GH_TOKEN_PERMISSION_PULLREQUESTS_WRITE",
          "GH_TOKEN_PERMISSION_REPOSITORYPROJECTS_NONE",
          "GH_TOKEN_PERMISSION_REPOSITORYPROJECTS_READ",
          "GH_TOKEN_PERMISSION_REPOSITORYPROJECTS_WRITE",
          "GH_TOKEN_PERMISSION_SECURITYEVENTS_NONE",
          "GH_TOKEN_PERMISSION_SECURITYEVENTS_READ",
          "GH_TOKEN_PERMISSION_SECURITYEVENTS_WRITE",
          "GH_TOKEN_PERMISSION_STATUSES_NONE",
          "GH_TOKEN_PERMISSION_STATUSES_READ",
          "GH_TOKEN_PERMISSION_STATUSES_WRITE"
        ],
        "type": "string"
      },
      "WorkflowResultWorkflowResultError": {
        "properties": {
          "code": {
            "$ref": "#/components/schemas/v1EndorctlRC"
          },
          "error": {
            "description": "error is the message of the workflow step failure.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "endorv1BasicAuth": {
        "description": "BasicAuth carries username + password for HTTP Basic registry auth.",
        "properties": {
          "password": {
            "description": "The password for HTTP Basic registry auth.",
            "type": "string"
          },
          "username": {
            "description": "The username for HTTP Basic registry auth.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "endorv1ConfidenceLevel": {
        "default": "CONFIDENCE_LEVEL_UNSPECIFIED",
        "description": "Protobuf definition for ConfidenceLevel.",
        "enum": [
          "CONFIDENCE_LEVEL_UNSPECIFIED",
          "CONFIDENCE_LEVEL_UNKNOWN",
          "CONFIDENCE_LEVEL_HIGH",
          "CONFIDENCE_LEVEL_MEDIUM",
          "CONFIDENCE_LEVEL_LOW"
        ],
        "type": "string"
      },
      "endorv1Metric": {
        "description": "This contains the definition all metrics.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1MetricSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the the metric resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "endorv1Tag": {
        "description": "The list of tags associated with commits. It is used to mark an individual point in the source control repository's history.",
        "properties": {
          "commit_date": {
            "format": "date-time",
            "title": "The commit date of the tag",
            "type": "string"
          },
          "name": {
            "description": "The display name of a tag.",
            "type": "string"
          },
          "sha": {
            "description": "The commit SHA of tag references.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "endorv1VersionMetadata": {
        "properties": {
          "checksums": {
            "description": "A list of checksum types.",
            "items": {
              "$ref": "#/components/schemas/v1Checksum"
            },
            "type": "array"
          },
          "consumed": {
            "description": "Set to true once the corresponding source metadata has been created.",
            "type": "boolean"
          },
          "eol_timestamp": {
            "description": "End of life timestamp the package version if known.",
            "format": "date-time",
            "type": "string"
          },
          "last_package_info_attempt": {
            "description": "The last time a per-version PackageInfo enrichment call succeeded for this\nversion. Distinct from last_updated (field 8), which only records that the\nregistry's bulk version listing returned this version. A non-nil value means\nPackageInfo ran and we hold the best enrichment data the registry will give\nus, even if that data is empty (for example tarball-only releases with no\ndeclared license or source code URL). Consumers use this to decide whether a\nper-version enrichment call is still needed.",
            "format": "date-time",
            "type": "string"
          },
          "last_updated": {
            "description": "The last time that this particular version was re-synced with the source.",
            "format": "date-time",
            "type": "string"
          },
          "license": {
            "description": "Raw license information as returned by the package manager.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "license_info": {
            "description": "Detailed license information populated by Endor.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseInfo"
            },
            "type": "array"
          },
          "lts": {
            "description": "Set to true if a version is a long-term support (LTS) version.",
            "type": "boolean"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "release_time": {
            "format": "date-time",
            "type": "string"
          },
          "source_code_ref": {
            "description": "The source code reference if known.\nOptional. This can be a tag or a commit SHA.",
            "type": "string"
          },
          "source_code_url": {
            "description": "Source code URL of the package if known.",
            "type": "string"
          },
          "version": {
            "title": "The version of the package.\nFor example - 5.23.4",
            "type": "string"
          }
        },
        "required": [
          "version",
          "release_time",
          "license"
        ],
        "type": "object"
      },
      "endorv1Vulnerability": {
        "description": "Vulnerability models information that can be extracted by analyzing CVEs.",
        "properties": {
          "additional_notes": {
            "description": "Notes by the person that processed the CVE.",
            "type": "string"
          },
          "component": {
            "description": "Information about affected artifacts, versions\nand function identifiers.",
            "items": {
              "$ref": "#/components/schemas/VulnerabilityComponent"
            },
            "type": "array"
          },
          "cve_description": {
            "description": "A freeform textual summary of the vulnerability.",
            "type": "string"
          },
          "cve_id": {
            "description": "The CVE ID, as it appears in the NVD. For example, CVE-2021-36090.",
            "type": "string"
          },
          "cve_references": {
            "items": {
              "type": "string"
            },
            "title": "Web links containing extra information about the CVE",
            "type": "array"
          },
          "cvss_score": {
            "description": "The Common Vulnerability Scoring System (CVSS score) provides a numerical\n(0-10) representation of the severity of an information security\nvulnerability.",
            "format": "float",
            "type": "number"
          },
          "cvss_vector": {
            "title": "A specially formatted vector indicating the attack surface and severity of\nthe vulnerability. Format is here:\nhttps://www.first.org/cvss/specification-document",
            "type": "string"
          },
          "cwe": {
            "title": "The Common Weakness Enumeration field, if any.\nSee: https://cwe.mitre.org",
            "type": "string"
          },
          "deepdive": {
            "description": "Indicates whether the research team performed full analysis on multiple\nartifact_ids involved in CVE.",
            "type": "boolean"
          },
          "disputed": {
            "description": "Indicates whether the research team considers a CVE should be disputed\nbased on analysis.",
            "type": "boolean"
          },
          "ecosystem": {
            "title": "A free form name of the ecosystem, e.g. Maven",
            "type": "string"
          },
          "fix_commit": {
            "items": {
              "type": "string"
            },
            "title": "Links to the commit(s) that fix the vulnerability",
            "type": "array"
          },
          "last_updated": {
            "description": "The timestamp when the vulnerability was last updated.",
            "format": "date-time",
            "type": "string"
          },
          "malicious": {
            "description": "Indicates whether this item is classified as malicious or not.",
            "type": "boolean"
          },
          "nofix": {
            "description": "Indicates whether the fix is not released or not disclosed for a CVE.\nIn such cases, the endor_uri string might not be available.",
            "type": "boolean"
          },
          "package_name": {
            "title": "A free form name of the affected package / project, e.g. Apache\ncommons-compress",
            "type": "string"
          },
          "schema_version": {
            "description": "The schema version used for this vulnerability descriptor.",
            "type": "string"
          },
          "withdrawn": {
            "description": "Indicates whether the underlying vulnerability has been withdrawn.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "cve_id",
          "cve_description",
          "package_name",
          "ecosystem",
          "schema_version"
        ],
        "type": "object"
      },
      "googleprotobufAny": {
        "additionalProperties": {},
        "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
        "properties": {
          "@type": {
            "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "googlerpcStatus": {
        "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
        "properties": {
          "code": {
            "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code].",
            "format": "int32",
            "type": "integer"
          },
          "details": {
            "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
            "items": {
              "$ref": "#/components/schemas/googleprotobufAny"
            },
            "type": "array"
          },
          "message": {
            "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "osvAffected": {
        "description": "Affected versions and commits.",
        "properties": {
          "database_specific": {
            "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies.",
            "type": "object"
          },
          "ecosystem_specific": {
            "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the ecosystem for which the record applies.",
            "type": "object"
          },
          "package": {
            "$ref": "#/components/schemas/osvPackage"
          },
          "ranges": {
            "description": "Required. Range information.",
            "items": {
              "$ref": "#/components/schemas/osvRange"
            },
            "type": "array"
          },
          "versions": {
            "description": "Optional. List of affected versions.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "osvCredit": {
        "properties": {
          "contact": {
            "description": "Contact methods (URLs).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name to give credit to.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "osvEvent": {
        "description": "Version events.",
        "properties": {
          "fixed": {
            "description": "The version/commit that this vulnerability was fixed in.",
            "type": "string"
          },
          "introduced": {
            "description": "The earliest version/commit where this vulnerability\nwas introduced in.",
            "type": "string"
          },
          "limit": {
            "description": "The limit to apply to the range.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "osvPackage": {
        "description": "Package information and version.",
        "properties": {
          "ecosystem": {
            "description": "Required. The ecosystem for this package. \nFor the complete list of valid ecosystem names, see\n\u003chttps://ossf.github.io/osv-schema/#affectedpackage-field\u003e.",
            "type": "string"
          },
          "name": {
            "description": "Required. Name of the package. Should match the name used in the package\necosystem (e.g. the npm package name). For C/C++ projects integrated in\nOSS-Fuzz, this is the name used for the integration.",
            "type": "string"
          },
          "purl": {
            "description": "Optional. The package URL for this package.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "osvRange": {
        "description": "Affected ranges.",
        "properties": {
          "events": {
            "description": "Required. Version event information.",
            "items": {
              "$ref": "#/components/schemas/osvEvent"
            },
            "type": "array"
          },
          "repo": {
            "description": "Required if type is GIT. The publicly accessible URL of the repo that can\nbe directly passed to clone commands.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/osvRangeType"
          }
        },
        "type": "object"
      },
      "osvRangeType": {
        "default": "UNSPECIFIED",
        "description": "Type of the version information.",
        "enum": [
          "UNSPECIFIED",
          "GIT",
          "SEMVER",
          "ECOSYSTEM"
        ],
        "type": "string"
      },
      "osvReference": {
        "description": "Reference URL.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/osvReferenceType"
          },
          "url": {
            "description": "Required. The URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "osvReferenceType": {
        "default": "NONE",
        "enum": [
          "NONE",
          "WEB",
          "ADVISORY",
          "REPORT",
          "FIX",
          "PACKAGE",
          "ARTICLE"
        ],
        "type": "string"
      },
      "osvSeverity": {
        "properties": {
          "score": {
            "description": "The quantitative score.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/osvSeverityType"
          }
        },
        "type": "object"
      },
      "osvSeverityType": {
        "default": "UNSPECIFIED",
        "description": "Type of the severity.",
        "enum": [
          "UNSPECIFIED",
          "CVSS_V3"
        ],
        "type": "string"
      },
      "osvVulnerability": {
        "description": "A vulnerability entry.\nThe protobuf representation is *NOT* stable and only used for implementing\nthe JSON based API.",
        "properties": {
          "affected": {
            "description": "Required. Affected commit ranges and versions.",
            "items": {
              "$ref": "#/components/schemas/osvAffected"
            },
            "type": "array"
          },
          "aliases": {
            "description": "Optional. IDs for the same vulnerability in other databases.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "credits": {
            "description": "Optional. Credits for the vulnerability.",
            "items": {
              "$ref": "#/components/schemas/osvCredit"
            },
            "type": "array"
          },
          "database_specific": {
            "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies.",
            "type": "object"
          },
          "details": {
            "description": "Required. Any additional human readable details for the vulnerability.",
            "type": "string"
          },
          "id": {
            "description": "The `id` field is a unique identifier for the vulnerability entry. It is a\nstring of the format `\u003cDB\u003e-\u003cENTRYID\u003e`, where `DB` names the database and\n`ENTRYID` is in the format used by the database. For example:\n“OSV-2020-111”, “CVE-2021-3114”, or “GHSA-vp9c-fpxx-744v”.",
            "type": "string"
          },
          "modified": {
            "description": "The RFC3339 timestamp indicating when this entry was last modified.",
            "format": "date-time",
            "type": "string"
          },
          "package": {
            "$ref": "#/components/schemas/osvPackage"
          },
          "published": {
            "description": "The RFC3339 timestamp indicating when this entry was published.",
            "format": "date-time",
            "type": "string"
          },
          "references": {
            "description": "Optional. URLs to more information/advisories (including the\nscheme e.g \"https://\").",
            "items": {
              "$ref": "#/components/schemas/osvReference"
            },
            "type": "array"
          },
          "related": {
            "description": "Optional. List of IDs of closely related vulnerabilities, such as the same\nproblem in alternate ecosystems.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "schema_version": {
            "description": "The OSV schema version.",
            "type": "string"
          },
          "severity": {
            "description": "Optional. Severity of the vulnerability.",
            "items": {
              "$ref": "#/components/schemas/osvSeverity"
            },
            "type": "array"
          },
          "summary": {
            "description": "Required. One line human readable summary for the vulnerability. It is\nrecommended to keep this under 120 characters.",
            "type": "string"
          },
          "withdrawn": {
            "description": "Optional. The RFC3339 timestamp indicating when this entry is considered to\nbe withdrawn.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ADOBoardsConfig": {
        "description": "ADOBoardsConfig configures Azure DevOps Boards as a notification action target.",
        "properties": {
          "installation_uuid": {
            "description": "UUID of the installation that provides ADO credentials.",
            "type": "string"
          },
          "projects": {
            "description": "Projects to create work items in. At least one project must be specified.",
            "items": {
              "$ref": "#/components/schemas/ADOBoardsConfigProjectConfig"
            },
            "type": "array"
          },
          "user_config": {
            "$ref": "#/components/schemas/ADOBoardsConfigUserConfig"
          }
        },
        "required": [
          "projects"
        ],
        "type": "object"
      },
      "v1AIMeta": {
        "description": "AI metadata for the finding.\nThis is only used for findings generated by AI.",
        "properties": {
          "confidence_justification": {
            "description": "Confidence justification for the finding.",
            "type": "string"
          },
          "confidence_level": {
            "$ref": "#/components/schemas/v1AIMetaConfidenceLevel"
          },
          "llm_context": {
            "$ref": "#/components/schemas/v1LLMContext"
          }
        },
        "type": "object"
      },
      "v1AIMetaConfidenceLevel": {
        "default": "CONFIDENCE_LEVEL_UNSPECIFIED",
        "description": "Confidence level for the finding.\n\n - CONFIDENCE_LEVEL_CRITICAL: Critical finding.\n - CONFIDENCE_LEVEL_HIGH: Very important findings.\n - CONFIDENCE_LEVEL_MEDIUM: Important findings.\n - CONFIDENCE_LEVEL_LOW: Low priority finding.",
        "enum": [
          "CONFIDENCE_LEVEL_UNSPECIFIED",
          "CONFIDENCE_LEVEL_CRITICAL",
          "CONFIDENCE_LEVEL_HIGH",
          "CONFIDENCE_LEVEL_MEDIUM",
          "CONFIDENCE_LEVEL_LOW"
        ],
        "type": "string"
      },
      "v1AIModelProvider": {
        "default": "AI_MODEL_PROVIDER_UNSPECIFIED",
        "description": "Provider the model comes from.\n\n - AI_MODEL_PROVIDER_HUGGING_FACE: The model comes from Hugging Face.\n - AI_MODEL_PROVIDER_OPENAI: The model comes from OpenAI.\n - AI_MODEL_PROVIDER_ANTHROPIC: The model comes from Anthropic.\n - AI_MODEL_PROVIDER_GOOGLE: The model comes from Google.\n - AI_MODEL_PROVIDER_AWS: The model comes from AWS.\n - AI_MODEL_PROVIDER_PERPLEXITY: The model comes from Perplexity.\n - AI_MODEL_PROVIDER_DEEPSEEK: The model comes from DeepSeek.\n - AI_MODEL_PROVIDER_AZUREOPENAI: The model comes from Azure OpenAI.\n - AI_MODEL_PROVIDER_CUSTOM: The model comes from a custom AI provider defined by the user.",
        "enum": [
          "AI_MODEL_PROVIDER_UNSPECIFIED",
          "AI_MODEL_PROVIDER_HUGGING_FACE",
          "AI_MODEL_PROVIDER_OPENAI",
          "AI_MODEL_PROVIDER_ANTHROPIC",
          "AI_MODEL_PROVIDER_GOOGLE",
          "AI_MODEL_PROVIDER_AWS",
          "AI_MODEL_PROVIDER_PERPLEXITY",
          "AI_MODEL_PROVIDER_DEEPSEEK",
          "AI_MODEL_PROVIDER_AZUREOPENAI",
          "AI_MODEL_PROVIDER_CUSTOM"
        ],
        "type": "string"
      },
      "v1AIProviderKey": {
        "description": "AIProviderKey stores a customer-provided (bring-your-own-key) LLM\ncredential and entry point for a specific AI provider. When one is\nconfigured and enabled, the platform routes the tenant's AI requests\nthrough the customer's own provider account instead of Endor-managed\ncredentials.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AIProviderKeySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the AI provider key.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "v1AIProviderKeySpec": {
        "properties": {
          "api_key": {
            "description": "Credential used to call the provider: an API key for OpenAI-family and\nGemini providers, or an express-mode API key for Vertex AI. Stored in\nthe platform secret manager (secure annotation); read APIs return the\nredacted placeholder rather than the stored value.",
            "type": "string"
          },
          "api_version": {
            "description": "Azure OpenAI api-version query parameter to use. Defaults to the\nplatform's version when unset; only meaningful for\nPROVIDER_AZURE_OPENAI.",
            "type": "string"
          },
          "disabled": {
            "description": "Pauses routing through this credential without deleting it.",
            "type": "boolean"
          },
          "embedding_model_aliases": {
            "description": "Embedding models the credential serves and the names the customer's\nprovider serves them under. Azure OpenAI takes the deployment name from\nthe request body's model field, so a customer whose deployment is not\nnamed after the model must list it here or the request reaches a path\nthat does not exist. Leave empty to make this key the provider's\nembedding catch-all, serving every embedding model under its own name;\nkeys listing a model explicitly take precedence over the catch-all.\nTwo enabled keys of one provider that both leave this empty are two\ncatch-alls, whatever their model_aliases. The write does not check for\nthis, but neither serves any embedding request, and a request no other\nkey serves fails, until one of them lists its embedding models here.",
            "items": {
              "$ref": "#/components/schemas/SpecEmbeddingModelAlias"
            },
            "type": "array"
          },
          "endpoint": {
            "description": "Entry point requests are sent to. Required for PROVIDER_AZURE_OPENAI\n(the Azure resource endpoint, e.g. https://\u003cresource\u003e.openai.azure.com),\noptional for PROVIDER_OPENAI (defaults to the OpenAI platform; set it\nto target an OpenAI-compatible gateway), optional for\nPROVIDER_VERTEX_AI (defaults to the global endpoint; set a regional\nendpoint, e.g. https://us-central1-aiplatform.googleapis.com, to pin a\nregion) and unused for PROVIDER_GEMINI. Stored in the platform secret\nmanager and redacted in read APIs.",
            "type": "string"
          },
          "model_aliases": {
            "description": "Models the credential can serve and the names the customer's provider\nserves them under. Each listed model may be served by only one of the\ntenant's keys for the provider, and together the provider's keys must\ncover the models the platform requires. Leave empty to make this key\nthe provider's single catch-all, serving every model under its own\nname; keys listing a model explicitly take precedence over the\ncatch-all. Scoping a key here does not scope its embeddings: it\nstill counts as the provider's embedding catch-all until\nembedding_model_aliases is set.",
            "items": {
              "$ref": "#/components/schemas/SpecModelAlias"
            },
            "type": "array"
          },
          "provider": {
            "$ref": "#/components/schemas/SpecProvider"
          }
        },
        "required": [
          "provider"
        ],
        "type": "object"
      },
      "v1AIResult": {
        "description": "AI result.",
        "properties": {
          "explanation": {
            "description": "Human-readable description of the result.",
            "type": "string"
          },
          "level": {
            "$ref": "#/components/schemas/AIResultAILevel"
          },
          "sast": {
            "$ref": "#/components/schemas/AIResultSAST"
          },
          "title": {
            "description": "Human-readable title of the result.",
            "type": "string"
          }
        },
        "required": [
          "explanation",
          "level",
          "title"
        ],
        "type": "object"
      },
      "v1AISASTContext": {
        "description": "The code context an AI SAST finding depends on, hashed at scan time, so a\nscheduled refresh can detect modified context by re-hashing these regions.",
        "properties": {
          "callees": {
            "description": "Regions of functions the scanned segment calls.",
            "items": {
              "$ref": "#/components/schemas/v1AISASTContextRegion"
            },
            "type": "array"
          },
          "callers": {
            "description": "Regions of functions that call into the scanned segment.",
            "items": {
              "$ref": "#/components/schemas/v1AISASTContextRegion"
            },
            "type": "array"
          },
          "dataflow": {
            "description": "The finding's dataflow step regions, in order.",
            "items": {
              "$ref": "#/components/schemas/v1AISASTContextRegion"
            },
            "type": "array"
          },
          "fp_summary_hash": {
            "description": "SHA-256 hex of the project's false-positive context summary at scan time.\nA change here can flip the agent's verdict, so it participates in\nrefresh change detection alongside the code regions.",
            "type": "string"
          },
          "hash": {
            "description": "Denormalized SHA-256 hex rollup over all component hashes (segment,\ndataflow, callers, callees, fp_summary_hash). Stored so findings can be\ngrouped or queried by context fingerprint.",
            "type": "string"
          },
          "segment": {
            "$ref": "#/components/schemas/v1AISASTContextRegion"
          }
        },
        "type": "object"
      },
      "v1AISASTContextRegion": {
        "description": "A source region whose content is hashed so a scheduled AI SAST refresh can\ndetect whether that region changed since the finding was last scanned.",
        "properties": {
          "content_hash": {
            "description": "SHA-256 hex hash of the region's source at scan time.",
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/v1SourceLocation"
          }
        },
        "type": "object"
      },
      "v1AISastAnalysisParameters": {
        "description": "Runtime parameters controlling behavior of ai sast analysis.",
        "properties": {
          "fp_triage": {
            "description": "enable false positive triage of sast findings using AI.",
            "type": "boolean"
          },
          "mode": {
            "$ref": "#/components/schemas/AISastAnalysisParametersAISastAnalysisMode"
          },
          "retriage": {
            "description": "enable retriage of sast findings using AI.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1AISastCustomerContext": {
        "description": "Customer-provided context scoped to projects using policy-style selectors.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagates system-level context settings to child namespaces when enabled.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AISastCustomerContextSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1AISastCustomerContextSpec": {
        "description": "Customer-provided context payload.",
        "properties": {
          "context": {
            "description": "Human-authored guidance text consumed as-is by the summary pipeline.",
            "type": "string"
          },
          "disable": {
            "description": "Disables this context without deleting the object.",
            "type": "boolean"
          },
          "project_exceptions": {
            "description": "Project tag selectors or $uuid=\u003cproject_uuid\u003e selectors that exclude matching projects from this context.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "project_selector": {
            "description": "Project tag selectors or $uuid=\u003cproject_uuid\u003e selectors that select where this context applies.\nEmpty applies to all projects in the namespace.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "context"
        ],
        "type": "object"
      },
      "v1AISastSummary": {
        "description": "AI SAST summary.",
        "properties": {
          "call_stack": {
            "description": "The path (call stack) of the vulnerable code.",
            "items": {
              "$ref": "#/components/schemas/v1LocationWithName"
            },
            "type": "array"
          },
          "cwe": {
            "description": "The CWE of the vulnerability.",
            "type": "string"
          },
          "explanation": {
            "description": "Free-form explanation of the vulnerability.",
            "type": "string"
          },
          "sanitizer_callsites": {
            "description": "This are the locations of the callsites that are used to mitigate the vulnerability.",
            "items": {
              "$ref": "#/components/schemas/v1LocationWithName"
            },
            "type": "array"
          },
          "sanitizer_definitions": {
            "description": "The sanitizer definitions locations that are used to mitigate the vulnerability.",
            "items": {
              "$ref": "#/components/schemas/v1LocationWithName"
            },
            "type": "array"
          },
          "semgrep_sink_trigger": {
            "$ref": "#/components/schemas/v1SemgrepTriggerPattern"
          },
          "semgrep_source_trigger": {
            "$ref": "#/components/schemas/v1SemgrepTriggerPattern"
          }
        },
        "required": [
          "call_stack",
          "cwe",
          "explanation"
        ],
        "type": "object"
      },
      "v1APIKey": {
        "description": "Manages the system API keys.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether the API key can be used for the child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1APIKeySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of an API key resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1APIKeySpec": {
        "properties": {
          "expiration_time": {
            "description": "The expiration time of the API key.",
            "format": "date-time",
            "type": "string"
          },
          "issuing_user": {
            "$ref": "#/components/schemas/v1User"
          },
          "key": {
            "description": "The identifier of an API key.",
            "readOnly": true,
            "type": "string"
          },
          "permissions": {
            "$ref": "#/components/schemas/v1Permissions"
          },
          "secret": {
            "description": "The secret for the specified API key.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "permissions",
          "expiration_time"
        ],
        "type": "object"
      },
      "v1ActionPolicies": {
        "properties": {
          "allowed_actions": {
            "type": "string"
          },
          "enabled_repositories": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Actions": {
        "description": "Metadata added by the admission or notification policy scanner.",
        "properties": {
          "policy_uuids": {
            "description": "List of action policies triggered by this finding.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1AgentActivity": {
        "description": "AgentActivity is the per-agent usage summary for one agent. Keyed by\nagent_id, the join key to the agent catalog (EndorAgent.id).",
        "properties": {
          "active": {
            "description": "True if the agent made at least one call in the window. Always true for an\nentry in this response, which lists only agents with in-window activity.",
            "type": "boolean"
          },
          "agent_id": {
            "description": "The join key to the agent catalog (EndorAgent.id), recorded verbatim from\nthe token's agent_id claim. It is never derived by splitting agent_identity\n(id@version), so it stays stable against the catalog. An id with no catalog\nentry is still returned, not dropped.",
            "type": "string"
          },
          "agent_identity": {
            "description": "The {name}@{version} identity from the agent's JWT (agent_identity claim).\nUnset for an unregistered agent, distinct from a recorded empty identity.",
            "type": "string"
          },
          "allowed": {
            "description": "Calls the authorization + mutability gates allowed.",
            "format": "int64",
            "type": "string"
          },
          "calls": {
            "description": "Total captured backend calls in the window.",
            "format": "int64",
            "type": "string"
          },
          "denied": {
            "description": "Calls denied (e.g. a read-only agent attempting a mutation).",
            "format": "int64",
            "type": "string"
          },
          "last_seen": {
            "description": "When the agent was last seen making a call. Unset if it never has.",
            "format": "date-time",
            "type": "string"
          },
          "sessions": {
            "description": "Distinct agent-run sessions in the window, as an approximate upper bound:\nper-day distinct counts are summed, so a session spanning midnight counts in\neach day it touches. Reconciliation populates it; the incremental capture path\ndoes not. Unset whenever the summed count is zero — not yet reconciled or none\nrecorded — so a consumer renders it as absent rather than a definite 0.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1AgentCall": {
        "description": "AgentCall is one captured call in an agent's recent history — a tenant-safe\nprojection of AgentAuditLog.",
        "properties": {
          "decision": {
            "description": "allowed | denied.",
            "type": "string"
          },
          "on_behalf_of": {
            "description": "The human principal the agent acted on behalf of; unset when none.",
            "type": "string"
          },
          "operation": {
            "description": "Coarse verb: READ | LIST | CREATE | UPDATE | DELETE | UPSERT | EXECUTE.\nUnset when the operation could not be derived, distinct from a recorded\nempty verb.",
            "type": "string"
          },
          "resource_kind": {
            "description": "The Endor resource the call operated on (e.g. Project).",
            "type": "string"
          },
          "rpc_method": {
            "description": "Full gRPC method, for engineers who want the exact RPC.",
            "type": "string"
          },
          "scopes": {
            "description": "The scope the call ran under, e.g. customer-full; comma-joined when more than\none. Unset when none were recorded.",
            "type": "string"
          },
          "session": {
            "description": "The agent-run session this call belongs to; unset for a call with no session.",
            "type": "string"
          },
          "status_code": {
            "description": "gRPC status code name (e.g. OK, PermissionDenied).",
            "type": "string"
          },
          "timestamp": {
            "description": "When the edge observed the call.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Allowlist": {
        "description": "Allows a rule to be ignored for specific regexes, paths, and/or commits.",
        "properties": {
          "commits": {
            "description": "A slice of commit SHAs that are allowed to be ignored.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "condition": {
            "description": "Match condition for this allowlist (\"OR\" or \"AND\"). Defaults to \"OR\".\nWhen \"AND\", all criteria must match for the allowlist to apply.",
            "type": "string"
          },
          "description": {
            "description": "Short human readable description of the allowlist.",
            "type": "string"
          },
          "paths": {
            "description": "A slice of path regular expressions that are allowed to be ignored.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "regex_target": {
            "title": "RegexTarget",
            "type": "string"
          },
          "regexes": {
            "description": "A slice of content regular expressions that are allowed to be ignored.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "stop_words": {
            "description": "A slice of stop words that are allowed to be ignored.\nThis targets the _secret_, not the content of the regex match like the\nregexes slice.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1AndroidToolChain": {
        "properties": {
          "command_line_tools_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "packages": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "command_line_tools_version"
        ],
        "type": "object"
      },
      "v1AppPasswordConfig": {
        "description": "AppPasswordConfig holds HTTP Basic Auth credentials for Bitbucket Cloud.\nIt supports both legacy App Passwords and its replacement, Atlassian\nScoped API Tokens (https://support.atlassian.com/bitbucket-cloud/docs/api-tokens/).\nBoth use the same HTTP Basic Auth mechanism (username:token).\nNOTE: Bitbucket App Passwords are deprecated and will be removed on June 9, 2026.\nNew integrations should use Scoped API Tokens.",
        "properties": {
          "app_password": {
            "description": "The App Password or Atlassian Scoped API Token used for HTTP Basic Auth.\nBoth credential types are wire-compatible (username:token in Basic Auth header).",
            "type": "string"
          },
          "username": {
            "description": "The username (or Atlassian account email for Scoped API Tokens) used for\nHTTP Basic Auth against Bitbucket Cloud.",
            "type": "string"
          }
        },
        "required": [
          "username",
          "app_password"
        ],
        "type": "object"
      },
      "v1ArtifactSignature": {
        "description": "Represents an artifact signature object.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ArtifactSignatureSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of an artifact signature object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ArtifactSignatureSpec": {
        "properties": {
          "artifact_digest": {
            "title": "The artifact's digest",
            "type": "string"
          },
          "artifact_name": {
            "description": "The artifact's name.",
            "type": "string"
          },
          "artifact_type": {
            "$ref": "#/components/schemas/v1ArtifactType"
          },
          "certificate": {
            "description": "The certificate obtained for this sign operation.",
            "type": "string"
          },
          "provenance": {
            "$ref": "#/components/schemas/v1CertificateExtensions"
          },
          "revoked": {
            "description": "Set to true if the signature gets revoked.",
            "type": "boolean"
          },
          "signature": {
            "description": "The signature of the build artifact.",
            "type": "string"
          },
          "simple_container_image": {
            "$ref": "#/components/schemas/v1SimpleContainerImage"
          },
          "source_repository_ref": {
            "description": "Source repository ref. This also exists in the certificate but it's also here\nto quickly look up entries that match.",
            "type": "string"
          },
          "timestamp": {
            "description": "The timestamp of the signing event.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "signature",
          "artifact_type",
          "artifact_digest",
          "artifact_name"
        ],
        "type": "object"
      },
      "v1ArtifactType": {
        "default": "ARTIFACT_TYPE_UNSPECIFIED",
        "enum": [
          "ARTIFACT_TYPE_UNSPECIFIED",
          "ARTIFACT_TYPE_CONTAINER",
          "ARTIFACT_TYPE_JAR",
          "ARTIFACT_TYPE_WHEEL",
          "ARTIFACT_TYPE_DLL",
          "ARTIFACT_TYPE_ELF",
          "ARTIFACT_TYPE_SBOM",
          "ARTIFACT_TYPE_BLOB"
        ],
        "type": "string"
      },
      "v1AsyncJob": {
        "description": "AsyncJob is an asynchronous job — SBOM export or VEX export\ntypes today, with more types added as they ship.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AsyncJobSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "UUID of the AsyncJob. Assigned by the server on Create; use it to\nfetch the job via GetAsyncJob.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1AsyncJobSpec": {
        "description": "AsyncJob inputs and outputs.",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/v1AsyncJobSpecRequest"
          },
          "response": {
            "$ref": "#/components/schemas/v1AsyncJobSpecResponse"
          },
          "state": {
            "$ref": "#/components/schemas/SpecJobState"
          },
          "type": {
            "$ref": "#/components/schemas/v1AsyncJobType"
          }
        },
        "required": [
          "type",
          "request"
        ],
        "type": "object"
      },
      "v1AsyncJobSpecRequest": {
        "description": "Wrapper holding the type-specific request arm.",
        "properties": {
          "sbom": {
            "$ref": "#/components/schemas/v1SBOMExportJobRequest"
          },
          "vex": {
            "$ref": "#/components/schemas/v1VEXExportJobRequest"
          }
        },
        "type": "object"
      },
      "v1AsyncJobSpecResponse": {
        "description": "Wrapper holding the type-specific response arm and any error message.",
        "properties": {
          "error_message": {
            "description": "Reason for failure. Populated when state = Job.Spec.JobState.JOB_STATE_FAILED.",
            "readOnly": true,
            "type": "string"
          },
          "sbom": {
            "$ref": "#/components/schemas/v1SBOMExportJobResponse"
          },
          "vex": {
            "$ref": "#/components/schemas/v1VEXExportJobResponse"
          }
        },
        "type": "object"
      },
      "v1AsyncJobType": {
        "default": "TYPE_UNSPECIFIED",
        "description": "The kind of async job being run.\n\n - TYPE_UNSPECIFIED: Unset.\n - TYPE_SBOM: Software Bill of Materials.\n - TYPE_VEX: Vulnerability Exploitability eXchange.",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_SBOM",
          "TYPE_VEX"
        ],
        "type": "string"
      },
      "v1AuditLog": {
        "description": "AuditLog represents a CRUD operation on a message.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AuditLogSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the audit log.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1AuditLogSpec": {
        "properties": {
          "claims": {
            "description": "Claims in the context.\n\nFor example:\n\n  \"claims\": [\n    \"ID=19946263398469405566117368291178288812\",\n    \"email=scheduler\",\n    \"email=scheduler@endor.ai\",\n    \"user=scheduler@endor.ai@x509\",\n    \"user=scheduler@x509\",\n    \"x509\",\n    \"issuer=https://api.endorlabs.com/v1\"\n  ]",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "error": {
            "$ref": "#/components/schemas/googlerpcStatus"
          },
          "message_kind": {
            "description": "The kind of the message.",
            "type": "string"
          },
          "message_uuid": {
            "description": "Represents the UUID of the resource which is accessed.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/components/schemas/v1AuditLogSpecOperation"
          },
          "payload": {
            "$ref": "#/components/schemas/googleprotobufAny"
          },
          "remote_address": {
            "type": "string"
          }
        },
        "required": [
          "operation"
        ],
        "type": "object"
      },
      "v1AuditLogSpecOperation": {
        "default": "OPERATION_UNSPECIFIED",
        "enum": [
          "OPERATION_UNSPECIFIED",
          "OPERATION_CREATE",
          "OPERATION_UPDATE",
          "OPERATION_DELETE",
          "OPERATION_UPSERT"
        ],
        "type": "string"
      },
      "v1AuthMethodAPICredentials": {
        "properties": {
          "key": {
            "description": "The identifier of an API key.",
            "type": "string"
          },
          "secret": {
            "description": "The secret for the specified API key.",
            "type": "string"
          }
        },
        "required": [
          "key",
          "secret"
        ],
        "type": "object"
      },
      "v1AuthMethodAzure": {
        "properties": {
          "enable_managed_identity": {
            "description": "Auth using Azure managed identity for system.",
            "type": "boolean"
          },
          "managed_identity_client_id": {
            "description": "The client ID of the Azure managed identity.",
            "type": "string"
          }
        },
        "required": [
          "managed_identity_client_id"
        ],
        "type": "object"
      },
      "v1AuthMethodGCP": {
        "properties": {
          "service_account": {
            "description": "Auth using GCP service account.",
            "type": "string"
          }
        },
        "required": [
          "service_account"
        ],
        "type": "object"
      },
      "v1AuthenticationLog": {
        "description": "Represents a CRUD operation on a message.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AuthenticationLogSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the authentication log.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1AuthenticationLogSpec": {
        "properties": {
          "authorized_tenants": {
            "description": "The tenants accessible by this user at the time of authentication.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "claims": {
            "description": "Claims in the context.\n\nFor example:\n\n  \"claims\": [\n    \"ID=19946263398469405566117368291178288812\",\n    \"email=scheduler\",\n    \"email=scheduler@endor.ai\",\n    \"user=scheduler@endor.ai@x509\",\n    \"user=scheduler@x509\",\n    \"x509\",\n    \"issuer=https://api.endorlabs.com/v1\"\n  ]",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "error_message": {
            "description": "Error message details if the authentication fails.",
            "type": "string"
          },
          "remote_address": {
            "description": "The remote IP address that was discovered.",
            "type": "string"
          },
          "status": {
            "description": "The return code of the authentication.",
            "format": "int32",
            "type": "integer"
          },
          "success": {
            "description": "Success is set to true if the authentication is succesful.",
            "type": "boolean"
          },
          "uri": {
            "description": "URI used for authentication event.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1AuthenticationResponse": {
        "description": "Response to the request includes a token and the token expiration time for an authenticated user.",
        "properties": {
          "authentication_source": {
            "type": "string"
          },
          "expiration_time": {
            "format": "date-time",
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/v1User"
          }
        },
        "type": "object"
      },
      "v1AuthorizationPolicy": {
        "description": "Represents an authorization policy in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in the child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1AuthorizationPolicySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the AuthorizationPolicy resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1AuthorizationPolicySpec": {
        "properties": {
          "clause": {
            "description": "The list of claims that must match. This is essentially\nan AND operator. User claims must match all the\ncriteria in the clause for the policy to match.\n\nFor example, [\"group=X\", \"email=user@endor.ai\"] will match\nusers of group X with this email.\n\nClause strings must contain only allowed characters to prevent XSS attacks\nand ensure exact matching with incoming JWT claims. Allowed characters:\nletters, numbers, and the following: =@._-/: +()\u0026 (space, plus, parentheses, ampersand).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "expiration_time": {
            "description": "Disables this policy after its expiration time.\nIf expiration time is not provided, the policy will never expire.",
            "format": "date-time",
            "type": "string"
          },
          "is_support_policy": {
            "description": "is_support_policy indicates that the policy is a support policy and\ncannot be altered without using the SupportAccess API.",
            "readOnly": true,
            "type": "boolean"
          },
          "permissions": {
            "$ref": "#/components/schemas/v1Permissions"
          },
          "propagate": {
            "description": "Propagate indicates that the policy should include\nthe children of the target namespace as well as allowed targets.",
            "type": "boolean"
          },
          "target_namespaces": {
            "description": "The target namespaces of the policy. The policy can\napply to one or more target namespaces. The targets\ncan only be the current namespace or its children.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "clause",
          "target_namespaces",
          "propagate",
          "permissions"
        ],
        "type": "object"
      },
      "v1AutoDetectResult": {
        "description": "Message for an auto detect result.",
        "properties": {
          "detected_tool_chain_versions": {
            "additionalProperties": {
              "$ref": "#/components/schemas/AutoDetectResultDetectedToolChainVersion"
            },
            "type": "object"
          },
          "detected_versions": {
            "additionalProperties": {
              "$ref": "#/components/schemas/AutoDetectResultDetectedToolChainVersionList"
            },
            "description": "Detected versions by lanaguage.",
            "type": "object"
          },
          "error": {
            "description": "Auto detect error message.",
            "type": "string"
          },
          "tool_chains": {
            "$ref": "#/components/schemas/v1ToolChains"
          }
        },
        "type": "object"
      },
      "v1AutomatedScanParameters": {
        "description": "AutomatedScanParameters represents the parameters that must be applied during\nautomated cloud scans to the projects associated with the corresponding\nprofile.",
        "properties": {
          "additional_environment_variables": {
            "description": "additional_environment_variables sets extra environment variables for the\nscan, specific to languages or tools. By design only ENDOR_-prefixed\nvariables are honored; any entry without the ENDOR_ prefix is silently\ndropped, as are a few reserved ENDOR_ variables the scanner sets itself.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "bazel_configuration": {
            "$ref": "#/components/schemas/AutomatedScanParametersBazelConfiguration"
          },
          "call_graph_languages": {
            "description": "call_graph_languages is the list of languages that should be used to\ncalculate call graphs. If empty, default values are used.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "disable_code_snippet_storage": {
            "description": "disable_code_snippet_storage is a boolean value that indicates if the source code snippet\nrelated to a finding should be stored or displayed. Default will be off.",
            "type": "boolean"
          },
          "disable_code_storage": {
            "description": "disable_code_storage is a boolean value that indicates if the source code related to a finding\nshould be stored or displayed. Default will be off.",
            "type": "boolean"
          },
          "enable_ai_sast_scan": {
            "description": "enable_ai_sast_scan is a boolean value that indicates if AI SAST scan should be requested.",
            "type": "boolean"
          },
          "enable_automated_pr_scans": {
            "description": "enable_automated_pr_scans for this repository will allow the github\napp to selectively scan PRs and merges for this repository.\nIf the project is not part of a github app, this setting will be ingored.",
            "type": "boolean"
          },
          "enable_full_git_log_secret_scan": {
            "description": "enable_full_git_log_secret_scan for this repository.",
            "type": "boolean"
          },
          "enable_pr_comments": {
            "description": "enable_pr_comments for this repository.",
            "type": "boolean"
          },
          "enable_pr_incremental_scan": {
            "description": "enable_pr_incremental_scan is a boolean value that indicates if the PR incremental scan should be requested.",
            "type": "boolean"
          },
          "enable_pr_security_review_scan": {
            "description": "enable_pr_security_review_scan is a boolean value that indicates if a Security Review scan should be requested.",
            "type": "boolean"
          },
          "enable_remediation_action": {
            "description": "enable_remediation_action for this repository.",
            "type": "boolean"
          },
          "enable_sast_scan": {
            "description": "enable_sast_scan for this repository.",
            "type": "boolean"
          },
          "enable_secret_scan": {
            "description": "enable_secret_scan for this repository.",
            "type": "boolean"
          },
          "excluded_paths": {
            "description": "excluded_paths is a list of paths that should be excluded from the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "full_pr_scan": {
            "description": "full_pr_scan indicates whether a full scan should be enabled during PRs.",
            "type": "boolean"
          },
          "full_push_scan": {
            "description": "full_push_scan indicates whether a full scan should be enabled during\npushes.",
            "type": "boolean"
          },
          "included_paths": {
            "description": "included_paths is a list of paths that should be included in the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "languages": {
            "description": "languages is a list of languages that should be scanned. If emtpy\ndefault values are used.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "segment_match_languages": {
            "description": "segment_match_languages is the list of languages to enable segment-match based analysis for.\nClears the default languages if languages is not set explicitly.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1AutomatedScanParametersConfig": {
        "description": "Message for automated scan parameter configuration.",
        "properties": {
          "automated_scan_parameters_source": {
            "$ref": "#/components/schemas/v1AutomatedScanParametersSource"
          },
          "resolved_scan_environment_variables": {
            "description": "Resolved environment variables.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1AutomatedScanParametersSource": {
        "default": "AUTOMATED_SCAN_PARAMETERS_SOURCE_UNSPECIFIED",
        "description": "Automated scan parameter source types.",
        "enum": [
          "AUTOMATED_SCAN_PARAMETERS_SOURCE_UNSPECIFIED",
          "AUTOMATED_SCAN_PARAMETERS_SOURCE_API",
          "AUTOMATED_SCAN_PARAMETERS_SOURCE_FILE",
          "AUTOMATED_SCAN_PARAMETERS_SOURCE_NAMESPACE_DEFAULT"
        ],
        "type": "string"
      },
      "v1AzureConfig": {
        "properties": {
          "enable_full_scan": {
            "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled for Azure DevOps PR scans.",
            "type": "boolean"
          },
          "enable_pr_comments": {
            "description": "enable_pr_comments is a boolean value that indicates if automated PR\ncomments are enabled for Azure DevOps repositories.",
            "type": "boolean"
          },
          "enable_pr_scans": {
            "description": "enable_pr_scans is a boolean value that indicates if automated PR scans\nare enabled for Azure DevOps repositories.",
            "type": "boolean"
          },
          "host_url": {
            "description": "The URL of the project.",
            "type": "string"
          },
          "personal_access_token": {
            "description": "PAT of the user doing integration to fetch resources using REST APIs.",
            "type": "string"
          },
          "webhook_secret": {
            "description": "The shared password configured as the basic authentication credential for\nAzure DevOps Service Hook deliveries belonging to this installation.",
            "type": "string"
          }
        },
        "required": [
          "host_url"
        ],
        "type": "object"
      },
      "v1BatchFileSegments": {
        "description": "Request used to create or delete multiple file segment objects.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1BatchFileSegmentsSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1BatchFileSegmentsSpec": {
        "description": "BatchFileSegments specific data.",
        "properties": {
          "data": {
            "description": "List of file segment objects.",
            "items": {
              "$ref": "#/components/schemas/v1FileSegments"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1BatchNotification": {
        "description": "Request to create multiple Notification objects.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1BatchNotificationSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1BatchNotificationSpec": {
        "description": "BatchNotification specific data.",
        "properties": {
          "finding_uuids": {
            "description": "List of finding UUIDs to create notifications.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "notification_target_uuid": {
            "description": "Notification target UUID.",
            "type": "string"
          },
          "notifications": {
            "description": "List of notification objects.",
            "items": {
              "$ref": "#/components/schemas/v1Notification"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1BazelMetadata": {
        "description": "BazelMetadata contains the Bazel metadata.",
        "properties": {
          "build_path": {
            "description": "The build path.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1BitBucketCloudAuthConfig": {
        "description": "Configuration for Bitbucket Cloud authentication.",
        "properties": {
          "access_token": {
            "title": "The access token associated with the Bitbucket Cloud account.\nhttps://support.atlassian.com/bitbucket-cloud/docs/access-tokens",
            "type": "string"
          },
          "app_password_config": {
            "$ref": "#/components/schemas/v1AppPasswordConfig"
          }
        },
        "required": [
          "access_token"
        ],
        "type": "object"
      },
      "v1BitBucketConfig": {
        "properties": {
          "cloud": {
            "$ref": "#/components/schemas/v1BitBucketCloudAuthConfig"
          },
          "data_center": {
            "$ref": "#/components/schemas/v1BitBucketDataCenterAuthConfig"
          },
          "enable_full_scan": {
            "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled.",
            "type": "boolean"
          },
          "enable_pr_comments": {
            "description": "enable_pr_comments is a boolean value that indicates if the automated PR\ncomments should be enabled.",
            "type": "boolean"
          },
          "enable_pr_scans": {
            "description": "enable_pr_scans is a boolean value that indicates if the automated PR scans\nare enabled.",
            "type": "boolean"
          },
          "host_url": {
            "description": "The URL of the workspace (only for cloud) or project.",
            "type": "string"
          },
          "webhook_secret": {
            "description": "The webhook secret configured in Bitbucket for validating incoming webhook\nevents.",
            "type": "string"
          }
        },
        "required": [
          "host_url"
        ],
        "type": "object"
      },
      "v1BitBucketDataCenterAuthConfig": {
        "description": "Configuration for Bitbucket Datacenter authentication.",
        "properties": {
          "http_access_token": {
            "description": "The HTTP Access Token used for Bitbucket Datacenter authentication.",
            "type": "string"
          }
        },
        "required": [
          "http_access_token"
        ],
        "type": "object"
      },
      "v1BlockReason": {
        "default": "BLOCK_REASON_UNSPECIFIED",
        "description": "BlockReason represents the reason why a package was blocked.\nDeprecated: use PackageFirewallLog.Reason instead.",
        "enum": [
          "BLOCK_REASON_UNSPECIFIED",
          "BLOCK_REASON_MALWARE_DETECTED",
          "BLOCK_REASON_MIN_AGE_NOT_MET"
        ],
        "type": "string"
      },
      "v1Bom": {
        "properties": {
          "dependencies": {
            "description": "Different package managers use different dependency graph serialization\nstrategies. Include the serialized list here to avoid re-implementing\nthis within endoctl.",
            "items": {
              "$ref": "#/components/schemas/BomDependency"
            },
            "type": "array"
          },
          "dependency_files": {
            "description": "The list of the dependency files used to create the BOM.\nThis field is optional and is only set when the source code of the\npackage versions is known. It will contain the list of relative path of\nfiles used to compute the BOM. For instance for Golang, it will contain\nthe go.mod and go.sum.",
            "items": {
              "$ref": "#/components/schemas/BomDependencyFile"
            },
            "type": "array"
          },
          "dependency_graph": {
            "additionalProperties": {
              "items": {
                "type": "object"
              },
              "type": "array"
            },
            "title": "A dependency graph is a K/V pair of package names.\nThe format of the key must be:\n- mvn://MVN_CENTRAL/foo:bar@2.1\n- mvn://CLIENT_REPO/foo:bar@2.1-SNAPSHOT\n- go://github.com/myorg/myrepo/mypkg@sha",
            "type": "object"
          },
          "resolution_timestamp": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "resolution_timestamp"
        ],
        "type": "object"
      },
      "v1BranchAccess": {
        "description": "BranchAccess contains normalized branch protection settings.",
        "properties": {
          "allow_create": {
            "description": "Anyone with write access to the repository can create a new branch.",
            "type": "boolean"
          },
          "allow_delete": {
            "description": "Anyone with write access to the repository can delete a branch.",
            "type": "boolean"
          },
          "allow_force_push": {
            "description": "Anyone with write access to the repository can force push to a branch.",
            "type": "boolean"
          },
          "allow_fork_sync": {
            "description": "Users can pull changes from upstream when the branch is locked.",
            "type": "boolean"
          },
          "allow_review_bypass": {
            "description": "Specific users, teams, or apps can bypass pull request requirements.",
            "type": "boolean"
          },
          "allow_self_approval": {
            "description": "Users can approve their own pull requests.",
            "type": "boolean"
          },
          "dismiss_stale_approvals": {
            "description": "Approving reviews are automatically dismissed when someone pushes a new commit.",
            "type": "boolean"
          },
          "enforce_admins": {
            "description": "All configured restrictions are also enforced for administrators.",
            "type": "boolean"
          },
          "is_locked": {
            "description": "Branch is set to read-only.",
            "type": "boolean"
          },
          "linear_history": {
            "description": "Linear commit Git history is enforced, which prevents anyone from pushing merge commits to a branch.",
            "type": "boolean"
          },
          "num_approvals_required": {
            "description": "A minimum number of approvals is required to merge a pull request.",
            "format": "int32",
            "type": "integer"
          },
          "require_code_owner_approval": {
            "description": "Pull request merges are blocked until code owners have reviewed.",
            "type": "boolean"
          },
          "require_comment_resolution": {
            "description": "All pull request comments must be resolved before it can be merged.",
            "type": "boolean"
          },
          "require_signatures": {
            "description": "All commits must be signed.",
            "type": "boolean"
          },
          "require_status_checks": {
            "description": "All status checks must pass before merging.",
            "type": "boolean"
          },
          "require_update": {
            "description": "Branch must be up to date before merging.",
            "type": "boolean"
          },
          "restrict_dismiss": {
            "description": "Specific users, teams, and apps can dismiss pull request reviews.",
            "type": "boolean"
          },
          "restrict_push": {
            "description": "Specific users, teams, and apps can push code.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1BranchProtection": {
        "description": "The list of branch protection rules for protected branches.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          }
        },
        "required": [
          "ingested_object"
        ],
        "type": "object"
      },
      "v1CallGraphAnalysisType": {
        "default": "CALL_GRAPH_ANALYSIS_TYPE_UNSPECIFIED",
        "description": "Call graph analysis type for findings.\n\n - CALL_GRAPH_ANALYSIS_TYPE_UNSPECIFIED: Unspecified call graph analysis type.\n - CALL_GRAPH_ANALYSIS_TYPE_FULL: Full call graph analysis was performed.\n - CALL_GRAPH_ANALYSIS_TYPE_PRECOMPUTED: Precomputed call graph analysis was used.",
        "enum": [
          "CALL_GRAPH_ANALYSIS_TYPE_UNSPECIFIED",
          "CALL_GRAPH_ANALYSIS_TYPE_FULL",
          "CALL_GRAPH_ANALYSIS_TYPE_PRECOMPUTED"
        ],
        "type": "string"
      },
      "v1CallGraphData": {
        "description": "CallGraphData represents a call graph data request in the system.",
        "properties": {
          "any": {
            "$ref": "#/components/schemas/googleprotobufAny"
          },
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "related_object": {
            "description": "An internal value that identifies the callgraph storage location.",
            "readOnly": true,
            "type": "string"
          },
          "storage_url": {
            "description": "The URL of the storage location of the callgraph.",
            "readOnly": true,
            "type": "string"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID for a call graph resource.",
            "readOnly": true,
            "type": "string"
          },
          "zstd_bytes": {
            "description": "Callgraph proto bytes are encoded in zstd bytes.\nThe caller is responsible to compress/uncompress the bytes.",
            "format": "byte",
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta"
        ],
        "type": "object"
      },
      "v1CargoSpec": {
        "description": "CargoSpec represents a configuration for Cargo.",
        "properties": {
          "priority": {
            "description": "The priority of Cargo.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "token": {
            "description": "A token that must be provided by the repository owner.",
            "type": "string"
          },
          "url": {
            "description": "The url of the crates registry that Cargo must use.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1CategoryScore": {
        "description": "The score for one score category. The is the overall score\nfor a specific category. It is computed from the score factors that\nhave been created for the category. There is going to be only a single\ninstance of this information for the repo per score category.\n\nExample:\n\nCategory: SCORE_CATEGORY_BEST_PRACTICES\n\nScore: 5\n\nDescription: This score provides an overview of how this repo does when considering security best practices.\n\nThe value is a number in the range 1 to 10, with 10 being the best.",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/v1ScoreCategory"
          },
          "centered_score": {
            "description": "Centered score for the category. This score is\nnormalized to be centered on 5 and is a float, so it has a higher resolution.",
            "format": "float",
            "type": "number"
          },
          "description": {
            "description": "Text description of the category.",
            "type": "string"
          },
          "raw_score": {
            "description": "Raw score for the category. This is the score by\nadding up the score factors, not centered around 5.",
            "format": "float",
            "type": "number"
          },
          "score": {
            "description": "The score for this score.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1CertificateExtensions": {
        "description": "CertificateExtensions contains the certificate extensions retrieved from an identity token.",
        "properties": {
          "build_config_digest": {
            "description": "Immutable reference to the specific version of the top-level/initiating build instructions (workflow SHA).",
            "type": "string"
          },
          "build_config_name": {
            "description": "Name of the top-level/initiating build instructions (workflow).",
            "type": "string"
          },
          "certificate_identity": {
            "description": "Immutable reference to the specific identity expected in a valid certificate. Valid values include email address, DNS names, IP addresses, and URIs.",
            "type": "string"
          },
          "certificate_oidc_issuer": {
            "description": "Immutable reference to the specific OIDC issuer expected in a valid certificate. For example, https://token.actions.githubusercontent.com or https://oauth2.sigstore.dev/auth.",
            "type": "string"
          },
          "runner_environment": {
            "description": "Specifies whether the build took place in platform-hosted cloud infrastructure or customer/self-hosted infrastructure.",
            "type": "string"
          },
          "source_repository": {
            "description": "Source repository on which the build was based.",
            "type": "string"
          },
          "source_repository_digest": {
            "description": "Immutable reference to a specific version of the source code on which the build was based.",
            "type": "string"
          },
          "source_repository_owner": {
            "description": "Source repository owner of the source repository on which the build was based.",
            "type": "string"
          },
          "source_repository_ref": {
            "description": "Source Repository Ref on which the build run was based.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ChangeType": {
        "default": "CHANGE_TYPE_UNSPECIFIED",
        "description": "Protobuf definition for ChangeType.",
        "enum": [
          "CHANGE_TYPE_UNSPECIFIED",
          "CHANGE_TYPE_ADDED",
          "CHANGE_TYPE_REMOVED",
          "CHANGE_TYPE_CHANGED",
          "CHANGE_TYPE_RENAMED"
        ],
        "type": "string"
      },
      "v1Checksum": {
        "description": "The details of checksum including the algorithm used to prepare the checksum.",
        "properties": {
          "algorithm": {
            "$ref": "#/components/schemas/ChecksumHashAlgorithm"
          },
          "value": {
            "description": "A string representation (base64 encoded) of the SHA/MD5 checksum of the package.",
            "type": "string"
          }
        },
        "required": [
          "value",
          "algorithm"
        ],
        "type": "object"
      },
      "v1CiCdTool": {
        "description": "Represents a CI/CD tool.",
        "properties": {
          "categories": {
            "description": "List of control function categories (based on static name to category mapping).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Tool description.",
            "type": "string"
          },
          "display_name": {
            "description": "Tool's display name for UI.",
            "type": "string"
          },
          "evidence": {
            "description": "Details of where and/or how the tool was discovered.",
            "items": {
              "$ref": "#/components/schemas/CiCdToolEvidence"
            },
            "type": "array"
          },
          "name": {
            "description": "Tool name.",
            "type": "string"
          },
          "summary": {
            "description": "Summary of each evidence instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "v1CiCdTools": {
        "description": "CiCdTools Metric Value contains information about CI/CD tools discovered in the repository version.",
        "properties": {
          "tools": {
            "items": {
              "$ref": "#/components/schemas/v1CiCdTool"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1CisCategory": {
        "default": "CIS_CATEGORY_UNSPECIFIED",
        "description": "CisCategory represents a CIS benchmark requirement category per\nCIS Software Supply Chain Security - Base v1.0.0\nhttps://workbench.cisecurity.org/benchmarks/7555.",
        "enum": [
          "CIS_CATEGORY_UNSPECIFIED",
          "CIS_CATEGORY_SRC_CODE",
          "CIS_CATEGORY_BLD_PIPELINES",
          "CIS_CATEGORY_DEPENDENCIES",
          "CIS_CATEGORY_ARTIFACTS",
          "CIS_CATEGORY_DEPLOYMENT"
        ],
        "type": "string"
      },
      "v1CisReqId": {
        "default": "CIS_REQ_ID_UNSPECIFIED",
        "description": "CisReqId represents a CIS benchmark requirement per\nCIS Software Supply Chain Security - Base v1.0.0\nhttps://workbench.cisecurity.org/benchmarks/7555.",
        "enum": [
          "CIS_REQ_ID_UNSPECIFIED",
          "CIS_REQ_ID_VERSION_CTRL",
          "CIS_REQ_ID_TASK_MGMT",
          "CIS_REQ_ID_TWO_APPROVERS",
          "CIS_REQ_ID_DISMISS_APPROVAL",
          "CIS_REQ_ID_AUTH_DISMISS",
          "CIS_REQ_ID_CODE_OWNERS",
          "CIS_REQ_ID_CODE_OWNER_APPROVAL",
          "CIS_REQ_ID_DEL_INACTIVE_BRANCHES",
          "CIS_REQ_ID_PASS_CHECKS_TO_MERGE",
          "CIS_REQ_ID_UPDATE_BEFORE_MERGE",
          "CIS_REQ_ID_RESOLVE_COMMENTS_TO_MERGE",
          "CIS_REQ_ID_SIGNED_COMMITS",
          "CIS_REQ_ID_LINEAR_HISTORY",
          "CIS_REQ_ID_RULES_APPLY_TO_ADMIN",
          "CIS_REQ_ID_AUTH_MERGE",
          "CIS_REQ_ID_FORCE_PUSH_DISABLED",
          "CIS_REQ_ID_AUTH_BRANCH_DEL",
          "CIS_REQ_ID_SCAN_MERGES",
          "CIS_REQ_ID_AUDIT_BRANCH_PROT_CHANGES",
          "CIS_REQ_ID_PROT_DEFAULT_BRANCH",
          "CIS_REQ_ID_SECURITY_MD",
          "CIS_REQ_ID_AUTH_REPO_CREATE",
          "CIS_REQ_ID_AUTH_REPO_DEL",
          "CIS_REQ_ID_AUTH_ISSUE_DEL",
          "CIS_REQ_ID_TRACK_FORKS",
          "CIS_REQ_ID_TRACK_VISIBILITY",
          "CIS_REQ_ID_ARCHIVE_INACTIVE_REPOS",
          "CIS_REQ_ID_DEL_INACTIVE_USERS",
          "CIS_REQ_ID_AUTH_TEAM_CREATE",
          "CIS_REQ_ID_MIN_NUM_ADMINS",
          "CIS_REQ_ID_MFA_OUTSIDE_ORG",
          "CIS_REQ_ID_MFA_INSIDE_ORG",
          "CIS_REQ_ID_ORG_EMAIL_ADDR",
          "CIS_REQ_ID_TWO_ADMINS_PER_REPO",
          "CIS_REQ_ID_STRICT_BASE_PERMS",
          "CIS_REQ_ID_VERIFIED_ORG_BADGE",
          "CIS_REQ_ID_SCM_EMAIL_DOMAINS",
          "CIS_REQ_ID_ORG_SSH_CERTS",
          "CIS_REQ_ID_AUTH_IP_ADDR",
          "CIS_REQ_ID_TRACK_ANOMALOUS_BEHAVIOR",
          "CIS_REQ_ID_AUTH_INSTALLED_APPS",
          "CIS_REQ_ID_DEL_INACTIVE_APPS",
          "CIS_REQ_ID_LEAST_PRIV_FOR_APPS",
          "CIS_REQ_ID_SECURED_WEB_HOOKS",
          "CIS_REQ_ID_SCAN_FOR_SENS_DATA",
          "CIS_REQ_ID_SCAN_CI_PIPELINE_CFG",
          "CIS_REQ_ID_SCAN_IAC_CFG",
          "CIS_REQ_ID_SCAN_FOR_CODE_VULNS",
          "CIS_REQ_ID_SCAN_FOR_OSS_VULNS",
          "CIS_REQ_ID_SCAN_FOR_OSS_LICENSES",
          "CIS_REQ_ID_SINGLE_PIPELINE_RESP",
          "CIS_REQ_ID_IMMUTABLE_BLD_CFG",
          "CIS_REQ_ID_LOG_BLD_ENV",
          "CIS_REQ_ID_AUTOMATE_BLD_ENV",
          "CIS_REQ_ID_LIMIT_BLD_ENV_ACCESS",
          "CIS_REQ_ID_AUTH_BLD_ENV_ACCESS",
          "CIS_REQ_ID_MIN_BLD_SECRET_SCOPE",
          "CIS_REQ_ID_SCAN_BLD_INFRA_FOR_VULNS",
          "CIS_REQ_ID_BLD_NO_DEFAULT_PWS",
          "CIS_REQ_ID_BLD_SECURED_WEB_HOOKS",
          "CIS_REQ_ID_MIN_NUM_BLD_ENV_ADMINS",
          "CIS_REQ_ID_SINGLE_USE_BLD_WORKERS",
          "CIS_REQ_ID_BLD_ENV_PASSED_NOT_PULLED",
          "CIS_REQ_ID_SEP_BLD_WORKER_DUTIES",
          "CIS_REQ_ID_MIN_BLD_WORKER_NET_CON",
          "CIS_REQ_ID_BLD_WORKER_RUNTIME_SECURITY",
          "CIS_REQ_ID_SCAN_BLD_WORKERS_FOR_VULNS",
          "CIS_REQ_ID_BLD_WORKER_CFG_VERSION_CTRL",
          "CIS_REQ_ID_MON_BLD_WORKER_RESOURCE_USE",
          "CIS_REQ_ID_DEFINE_BLD_STEPS_AS_CODE",
          "CIS_REQ_ID_DEFINE_BLD_STEP_INPUT_OUTPUT",
          "CIS_REQ_ID_LOG_BLD_STEP_OUTPUT",
          "CIS_REQ_ID_BLD_STEP_VERSION_CTRL",
          "CIS_REQ_ID_LIMIT_BLD_TRIGGER_ACCESS",
          "CIS_REQ_ID_SCAN_BLD_FOR_MISCFG",
          "CIS_REQ_ID_SCAN_BLD_FOR_VULNS",
          "CIS_REQ_ID_SCAN_BLD_FOR_SENS_DATA",
          "CIS_REQ_ID_SIGN_BLD_ARTS",
          "CIS_REQ_ID_LOCK_EXT_BLD_DEPS",
          "CIS_REQ_ID_VALIDATE_BLD_DEPS",
          "CIS_REQ_ID_REPROD_BLD_ARTS",
          "CIS_REQ_ID_BLD_STEP_SBOMS",
          "CIS_REQ_ID_SIGN_BLD_STEP_SBOMS",
          "CIS_REQ_ID_VERIFY_TP_ARTS",
          "CIS_REQ_ID_REQ_TP_SBOMS",
          "CIS_REQ_ID_SIGNED_TP_BLD_MDATA",
          "CIS_REQ_ID_MON_INTER_TP_DEPS",
          "CIS_REQ_ID_TRUSTED_TP_PKG_MGRS",
          "CIS_REQ_ID_SIGNED_TP_SBOM",
          "CIS_REQ_ID_PIN_TP_DEPS",
          "CIS_REQ_ID_MIN_TP_PKG_AGE",
          "CIS_REQ_ID_ORG_TP_USAGE_POLICY",
          "CIS_REQ_ID_SCAN_TP_PKGS_FOR_VULNS",
          "CIS_REQ_ID_SCAN_TP_PKGS_FOR_LICENSE",
          "CIS_REQ_ID_SCAN_TP_PKGS_FOR_OWNER_CHANGE",
          "CIS_REQ_ID_SIGN_ARTS",
          "CIS_REQ_ID_ENCRYPT_ARTS",
          "CIS_REQ_ID_AUTH_ART_DECRYPT",
          "CIS_REQ_ID_LIMIT_ART_CERT",
          "CIS_REQ_ID_LIMIT_ART_UPLOAD",
          "CIS_REQ_ID_MFA_FOR_PKG_REG",
          "CIS_REQ_ID_EXT_AUTH_FOR_PKG_REG",
          "CIS_REQ_ID_ANONYMOUS_USER_DISABLED",
          "CIS_REQ_ID_MIN_NUM_PKG_REG_ADMINS",
          "CIS_REQ_ID_VALIDATE_ARTS_ON_UPLOAD",
          "CIS_REQ_ID_VALIDATE_ALL_ART_VERSIONS",
          "CIS_REQ_ID_AUDIT_PKG_REG_CFG_CHANGES",
          "CIS_REQ_ID_PKG_REG_SECURED_WEB_HOOKS",
          "CIS_REQ_ID_PKG_REG_NO_DEFAULT_PWS",
          "CIS_REQ_ID_ARTS_CONTAIN_ORIGIN_INFO",
          "CIS_REQ_ID_BLOCK_INT_ARTS_FROM_EXT_REG",
          "CIS_REQ_ID_SEP_DEP_CFG_FROM_SRC_CODE",
          "CIS_REQ_ID_TRACK_DEP_CFG_CHANGES",
          "CIS_REQ_ID_SCAN_DEP_CFG_FOR_SENS_DATA",
          "CIS_REQ_ID_LIMIT_DEP_CFG_ACCESS",
          "CIS_REQ_ID_SCAN_IAC_DEP_CFG",
          "CIS_REQ_ID_VERIFY_DEP_CFG",
          "CIS_REQ_ID_PIN_DEP_CFG_VERSIONS",
          "CIS_REQ_ID_AUTOMATED_DEPLOYMENTS",
          "CIS_REQ_ID_REPROD_DEPLOYMENT_ENV",
          "CIS_REQ_ID_LIMIT_PROD_ENV_ACCESS",
          "CIS_REQ_ID_DEPLOYMENT_NO_DEFAULT_PWS"
        ],
        "type": "string"
      },
      "v1CisScorecard": {
        "description": "CisScorecard represents the CIS benchmark scorecard for the parent repository.\nA scorecard contains a list of benchmarks.",
        "properties": {
          "benchmarks": {
            "items": {
              "$ref": "#/components/schemas/CisScorecardCisBenchmark"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1CisSubCategory": {
        "default": "CIS_SUB_CATEGORY_UNSPECIFIED",
        "description": "CisSubCategory represents a CIS benchmark requirement sub-category per\nCIS Software Supply Chain Security - Base v1.0.0\nhttps://workbench.cisecurity.org/benchmarks/7555.",
        "enum": [
          "CIS_SUB_CATEGORY_UNSPECIFIED",
          "CIS_SUB_CATEGORY_CODE_CHANGES",
          "CIS_SUB_CATEGORY_REPO_MGMT",
          "CIS_SUB_CATEGORY_ACCESS",
          "CIS_SUB_CATEGORY_THIRD_PARTY",
          "CIS_SUB_CATEGORY_CODE_RISKS",
          "CIS_SUB_CATEGORY_BLD_ENV",
          "CIS_SUB_CATEGORY_BLD_WORKER",
          "CIS_SUB_CATEGORY_PIPELINE_INSTRUCTIONS",
          "CIS_SUB_CATEGORY_PIPELINE_INTEGRITY",
          "CIS_SUB_CATEGORY_PKG_REGISTRIES",
          "CIS_SUB_CATEGORY_VALIDATION",
          "CIS_SUB_CATEGORY_VERIFICATION",
          "CIS_SUB_CATEGORY_ORIGIN_TRACEABILITY",
          "CIS_SUB_CATEGORY_DEPLOYMENT_CFG",
          "CIS_SUB_CATEGORY_DEPLOYMENT_ENV"
        ],
        "type": "string"
      },
      "v1CocoapodSpec": {
        "description": "Represents a configuration for the Cocoapod package manager.\nCocoapods does not support any registry authentication.",
        "properties": {
          "priority": {
            "description": "The priority of the Cocoapod package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "url": {
            "description": "The URL of the registry that the Cocoapods package manager must use.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1CodeOwnerData": {
        "description": "Code owner information for a file path or pattern.",
        "properties": {
          "labels": {
            "description": "List of labels.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "owners": {
            "description": "List of code owners.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1CodeOwners": {
        "description": "Code owner information for a project.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1CodeOwnersSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1CodeOwnersSpec": {
        "properties": {
          "file_hash": {
            "description": "The SHA-256 hash of the CODEOWNERS file.",
            "type": "string"
          },
          "patterns": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1CodeOwnerData"
            },
            "description": "Map of code owner data indexed by file path or pattern.\n\nThe list of owners is refreshed based on the content of\nthe CODEOWNERS file from the default repository version,\nif present. Other fields, such as the list of labels,\ncan be populated manually as needed.\nFor projects that do not use a standard CODEOWNERS file the\nentire map can be populated manually.\n\nFor more information please see the GitHub CODEOWNERS syntax.\n\nNote:\nIf there is one owner for files under e.g. /src/typescript/ and\na different owner for all *.js files, then all js files under\nsrc/typescript/ are mapped to both owners instead of basing it\non the order of the patterns in the CODEOWNERS file where the\nlast matching pattern takes the most precedence.",
            "type": "object"
          },
          "version": {
            "$ref": "#/components/schemas/v1Version"
          }
        },
        "type": "object"
      },
      "v1ConanSpec": {
        "description": "Represents a configuration for the Conan package manager.",
        "properties": {
          "aws": {
            "$ref": "#/components/schemas/PackageManagerAWSAuthProvider"
          },
          "basic_auth": {
            "$ref": "#/components/schemas/v1ConanSpecBasicAuth"
          },
          "priority": {
            "description": "The priority of the Conan package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "remote_name": {
            "description": "The logical name of the remote in the Conan client configuration.",
            "type": "string"
          },
          "url": {
            "description": "The URL of the Conan remote registry.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1ConanSpecBasicAuth": {
        "properties": {
          "password": {
            "description": "Password or API token for basic auth.",
            "type": "string"
          },
          "username": {
            "description": "Username for basic auth (JFrog Artifactory or self-hosted).",
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "type": "object"
      },
      "v1Confidence": {
        "default": "CONFIDENCE_UNSPECIFIED",
        "description": "Protobuf definition for Confidence.",
        "enum": [
          "CONFIDENCE_UNSPECIFIED",
          "CONFIDENCE_UNKNOWN",
          "CONFIDENCE_HIGH",
          "CONFIDENCE_MEDIUM",
          "CONFIDENCE_LOW"
        ],
        "type": "string"
      },
      "v1Conflict": {
        "description": "Protobuf definition for Conflict.",
        "properties": {
          "conflicting_current": {
            "description": "The conflicting transitive dependency, current version.",
            "type": "string"
          },
          "conflicting_directs_current": {
            "description": "The direct dependencies using the conflicting transitive dependency in the current version.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "conflicting_directs_upgrade": {
            "description": "The direct dependencies using the conflicting transitive dependency after the upgrade.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "conflicting_upgrade": {
            "description": "The conflicting transitive dependency, version after the upgrade.",
            "type": "string"
          },
          "current": {
            "description": "The current version of the direct dependency being upgraded.",
            "type": "string"
          },
          "upgrade": {
            "description": "The new version of the direct dependency being upgraded.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Constraint": {
        "properties": {
          "max": {
            "type": "string"
          },
          "min": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ContainerArchitecture": {
        "default": "CONTAINER_ARCHITECTURE_UNSPECIFIED",
        "description": "Container architecture.\n\n - CONTAINER_ARCHITECTURE_UNSPECIFIED: Unspecified architecture.\n - CONTAINER_ARCHITECTURE_UNKNOWN: Unknown architecture.\n - CONTAINER_ARCHITECTURE_AMD64: amd64 (64-bit x86) architecture.\n - CONTAINER_ARCHITECTURE_386: 386 (32-bit x86) architecture.\n - CONTAINER_ARCHITECTURE_ARM: arm (32-bit ARM) architecture.\n - CONTAINER_ARCHITECTURE_ARM64: arm64 (64-bit ARM) architecture.\n - CONTAINER_ARCHITECTURE_PPC64LE: ppc64le (PowerPC 64-bit, little-endian) architecture.\n - CONTAINER_ARCHITECTURE_PPC64: ppc64 (PowerPC 64-bit, big-endian) architecture  .\n - CONTAINER_ARCHITECTURE_MIPS64LE: mips64le (MIPS 64-bit, little-endian) architecture.\n - CONTAINER_ARCHITECTURE_MIPS64: mips64 (MIPS 64-bit, big-endian) architecture.\n - CONTAINER_ARCHITECTURE_MIPSLE: mipsle (MIPS 32-bit, little-endian) architecture.\n - CONTAINER_ARCHITECTURE_MIPS: mips (MIPS 32-bit, big-endian) architecture.\n - CONTAINER_ARCHITECTURE_S390X: s390x (IBM System z 64-bit, big-endian) architecture.\n - CONTAINER_ARCHITECTURE_WASM: wasm (WebAssembly 32-bit) architecture.",
        "enum": [
          "CONTAINER_ARCHITECTURE_UNSPECIFIED",
          "CONTAINER_ARCHITECTURE_UNKNOWN",
          "CONTAINER_ARCHITECTURE_AMD64",
          "CONTAINER_ARCHITECTURE_386",
          "CONTAINER_ARCHITECTURE_ARM",
          "CONTAINER_ARCHITECTURE_ARM64",
          "CONTAINER_ARCHITECTURE_PPC64LE",
          "CONTAINER_ARCHITECTURE_PPC64",
          "CONTAINER_ARCHITECTURE_MIPS64LE",
          "CONTAINER_ARCHITECTURE_MIPS64",
          "CONTAINER_ARCHITECTURE_MIPSLE",
          "CONTAINER_ARCHITECTURE_MIPS",
          "CONTAINER_ARCHITECTURE_S390X",
          "CONTAINER_ARCHITECTURE_WASM"
        ],
        "type": "string"
      },
      "v1ContainerAsBase": {
        "description": "ContainerAsBase captures usage of this container image as a base image elsewhere.",
        "properties": {
          "first_seen": {
            "description": "First time this image was seen used as a base image.",
            "format": "date-time",
            "type": "string"
          },
          "last_seen": {
            "description": "Most recent time this image was seen used as a base image.",
            "format": "date-time",
            "type": "string"
          },
          "update_options": {
            "$ref": "#/components/schemas/v1ContainerImageUpdateOptions"
          },
          "use_count": {
            "description": "Number of times this image has been seen used as a base image.\nThis number is used for trending and it's not meant for exact usage tracking.",
            "format": "uint64",
            "type": "string"
          },
          "used": {
            "description": "True if this image is used as a base image elsewhere.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ContainerBaseImage": {
        "description": "The base image of a container Image.",
        "properties": {
          "chain_id": {
            "description": "Chain ID for the base image's layers.",
            "type": "string"
          },
          "digest": {
            "description": "The SHA256 digest of the base image.",
            "type": "string"
          },
          "name": {
            "description": "The name of the base image. For example, \"debian:bookworm-slim\".",
            "type": "string"
          },
          "package_version_uuid": {
            "description": "The UUID of the base image's own PackageVersion, if it has been scanned.\nPopulated by the scanner from the in-memory base image lookup at scan\ntime; consumers that need this after the fact and find it unset may fall\nback to a digest-based PackageVersion lookup.",
            "type": "string"
          },
          "update_options": {
            "$ref": "#/components/schemas/v1ContainerImageUpdateOptions"
          }
        },
        "type": "object"
      },
      "v1ContainerCompositionMetadata": {
        "description": "ContainerCompositionMetadata is the metadata of the composition of a container image.",
        "properties": {
          "package_type": {
            "$ref": "#/components/schemas/v1ContainerPackageType"
          }
        },
        "type": "object"
      },
      "v1ContainerContextDiff": {
        "description": "State of the context-diff suppression feature for one container scan.",
        "properties": {
          "baseline_package_version_uuid": {
            "description": "Baseline PackageVersion used by the last reconcile. Informational only:\nthe reconcile always re-resolves the baseline rather than trusting this,\nsince a MAIN rescan replaces the baseline PV with a new UUID.",
            "type": "string"
          },
          "last_reconcile_time": {
            "description": "When the reconcile pass (CLI-triggered or the periodic auto-reconcile)\nlast ran for this scan.",
            "format": "date-time",
            "type": "string"
          },
          "record_scope": {
            "$ref": "#/components/schemas/ContainerContextDiffRecordScope"
          },
          "suppress_baseline_findings": {
            "description": "True once --snooze-baseline-findings has been applied to this scan; makes\nthe periodic finding refresh re-run the reconcile pass against the\ncurrent baseline for as long as this stays true.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ContainerDependencyLayer": {
        "description": "ContainerDependency is a dependency of a container image.",
        "properties": {
          "digest": {
            "description": "The SHA256 digest of the layer,\nwhere a dependency is found to be present in the container.",
            "type": "string"
          },
          "file_locations": {
            "description": "The locations of the files in the container,\nthrough which the dependency is evident to be present in the container.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "digest"
        ],
        "type": "object"
      },
      "v1ContainerDependencyMetadata": {
        "properties": {
          "first_reachable_time": {
            "description": "First time this dependency was determined to be reachable in an application image.",
            "format": "date-time",
            "type": "string"
          },
          "last_reachable_time": {
            "description": "Most recent time this dependency was determined to be reachable in an application image.",
            "format": "date-time",
            "type": "string"
          },
          "layers": {
            "description": "Layers of the container image where a dependency is found.\nThis is an optional field.\nIt is only set when target dependency is found via container image scan.",
            "items": {
              "$ref": "#/components/schemas/v1ContainerLayerMetadata"
            },
            "type": "array"
          },
          "reachable_count": {
            "description": "Number of times this dependency was determined to be reachable in an application image.\nThis number is used for trending and it's not meant for exact usage tracking.",
            "format": "uint64",
            "type": "string"
          },
          "runtime_files": {
            "description": "Files accessed when a dependency is called at runtime in the container image.\nThis is an optional field.\nIt is only set when the dependency is found to be used at runtime in the container image.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "user_application_dependency": {
            "description": "Set to true if this is a user application dependency.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ContainerImageUpdateOption": {
        "description": "ContainerImageUpdateOption describes a single base image update candidate.",
        "properties": {
          "chain_id": {
            "description": "Chain ID for the candidate image's layers.",
            "type": "string"
          },
          "digest": {
            "description": "The SHA256 digest of the candidate image (e.g., \"sha256:...\").",
            "type": "string"
          },
          "name": {
            "description": "Full image reference including registry, repository, and tag\n(e.g., \"docker.io/library/ubuntu:22.04\").",
            "type": "string"
          },
          "package_version_uuid": {
            "description": "UUID of the container PackageVersion produced by scanning this candidate.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ContainerImageUpdateOptions": {
        "description": "ContainerImageUpdateOptions groups possible base image update candidates.",
        "properties": {
          "latest_version": {
            "$ref": "#/components/schemas/v1ContainerImageUpdateOption"
          },
          "next_version": {
            "$ref": "#/components/schemas/v1ContainerImageUpdateOption"
          },
          "refreshed": {
            "$ref": "#/components/schemas/v1ContainerImageUpdateOption"
          },
          "update_time": {
            "description": "Time when these update options were determined.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ContainerLayer": {
        "description": "A layer of a container image.",
        "properties": {
          "base_layer": {
            "description": "True if the layer is came through the base image otherwise false.",
            "type": "boolean"
          },
          "command": {
            "description": "The command that was run to create the layer.\nFor example, `COPY /app /app`.\nThis is an optional field.",
            "type": "string"
          },
          "digest": {
            "description": "digest is the sha256 digest of the layer.",
            "type": "string"
          }
        },
        "required": [
          "digest"
        ],
        "type": "object"
      },
      "v1ContainerLayerMetadata": {
        "properties": {
          "base_layer": {
            "description": "Set to true if this is the base image layer.",
            "type": "boolean"
          },
          "digest": {
            "description": "The SHA256 digest of the container image layer.",
            "type": "string"
          },
          "file_locations": {
            "description": "File locations on the container file system that reference the dependency.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "digest"
        ],
        "type": "object"
      },
      "v1ContainerMetadata": {
        "description": "ContainerMetadata is the metadata of a container image.",
        "properties": {
          "architecture": {
            "$ref": "#/components/schemas/v1ContainerArchitecture"
          },
          "base_image": {
            "$ref": "#/components/schemas/v1ContainerBaseImage"
          },
          "chain_id": {
            "description": "Chain ID for the image's layers.",
            "type": "string"
          },
          "command": {
            "description": "List of container command arguments.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "context_diff": {
            "$ref": "#/components/schemas/v1ContainerContextDiff"
          },
          "digest": {
            "description": "The SHA256 digest of the container image.",
            "type": "string"
          },
          "distribution": {
            "description": "The OS distribution of the base image.",
            "type": "string"
          },
          "entrypoint": {
            "description": "List of container entrypoint arguments.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "environment": {
            "description": "List of container environment variables.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exposed_ports": {
            "description": "List of container exposed ports.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of container labels.",
            "type": "object"
          },
          "layers": {
            "description": "The list of layers of the container in the order they are applied to\nassemble the container image. The layers are the SHA256 digest of the\ncontainer image layers. The list is equivalent to the output of `docker\ninspect --format='{{.RootFS.Layers}}' \u003cimage\u003e`.",
            "items": {
              "$ref": "#/components/schemas/v1ContainerLayer"
            },
            "type": "array"
          },
          "previous_base_image": {
            "$ref": "#/components/schemas/v1ContainerBaseImage"
          },
          "profile_details": {
            "$ref": "#/components/schemas/v1ContainerProfileDetails"
          },
          "profile_error": {
            "$ref": "#/components/schemas/v1ContainerProfileError"
          },
          "profiled": {
            "description": "True if the container image has been profiled.",
            "type": "boolean"
          },
          "repo_digest": {
            "description": "The repo digest of the container image (e.g., \"your-image-name@sha256:...\").",
            "type": "string"
          },
          "used_as_base": {
            "$ref": "#/components/schemas/v1ContainerAsBase"
          },
          "version": {
            "description": "The version of the OS distribution of the base image.",
            "type": "string"
          },
          "working_directory": {
            "description": "The working directory of the container.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ContainerPackageType": {
        "default": "CONTAINER_PACKAGE_TYPE_UNSPECIFIED",
        "description": "ContainerPackageType is the type of container package.\n\n - CONTAINER_PACKAGE_TYPE_UNSPECIFIED: Unspecified container package type.\n - CONTAINER_PACKAGE_TYPE_LIBRARY: Library container package type.\n - CONTAINER_PACKAGE_TYPE_APPLICATION: Application container package type.\n - CONTAINER_PACKAGE_TYPE_APPLICATION_LIBRARY: Application and Library container package type.\n - CONTAINER_PACKAGE_TYPE_OS_LIBRARY: OS Library container package type.\n - CONTAINER_PACKAGE_TYPE_OS_APPLICATION: OS Application container package type.\n - CONTAINER_PACKAGE_TYPE_OS_APPLICATION_LIBRARY: OS Application and Library container package type.",
        "enum": [
          "CONTAINER_PACKAGE_TYPE_UNSPECIFIED",
          "CONTAINER_PACKAGE_TYPE_LIBRARY",
          "CONTAINER_PACKAGE_TYPE_APPLICATION",
          "CONTAINER_PACKAGE_TYPE_APPLICATION_LIBRARY",
          "CONTAINER_PACKAGE_TYPE_OS_LIBRARY",
          "CONTAINER_PACKAGE_TYPE_OS_APPLICATION",
          "CONTAINER_PACKAGE_TYPE_OS_APPLICATION_LIBRARY"
        ],
        "type": "string"
      },
      "v1ContainerProfileDetails": {
        "description": "ContainerProfileDetails represents the details of the container profiling.",
        "properties": {
          "application_type": {
            "$ref": "#/components/schemas/ContainerProfileDetailsApplicationType"
          },
          "detected_as_base_image": {
            "description": "True if container image is a generic base image.\nFor example, \"debian:bookworm-slim\" where entry point is generic shell like \"/bin/sh\" or \"/bin/bash\".",
            "type": "boolean"
          },
          "duration_ms": {
            "description": "The duration of the profile in milliseconds.",
            "format": "int64",
            "type": "string"
          },
          "entry_point_package_version_name": {
            "description": "Dependency that boots the container image and creates Process ID (PID) 1.",
            "type": "string"
          },
          "profile_type": {
            "$ref": "#/components/schemas/ContainerProfileDetailsProfileType"
          }
        },
        "type": "object"
      },
      "v1ContainerProfileError": {
        "description": "ContainerProfileError represents the error while profiling the container image.",
        "properties": {
          "description": {
            "description": "A description of the profile error.",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ContainerProfileErrorContainerProfileStatus"
          }
        },
        "type": "object"
      },
      "v1ContainerRuntimeDependencyFile": {
        "description": "ContainerRuntimeDependencyFile is a file accessed in the container image at runtime.",
        "properties": {
          "digests": {
            "description": "Digest of the file.",
            "items": {
              "$ref": "#/components/schemas/v1Digest"
            },
            "type": "array"
          },
          "file_type": {
            "$ref": "#/components/schemas/v1FileType"
          },
          "path": {
            "description": "Path of the dependency file as seen in the container image.",
            "type": "string"
          },
          "real_path": {
            "description": "Actual path of the file accessed when a dependency is called at runtime in the\ncontainer image.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Context": {
        "description": "Contexts keep objects from different scans separated.",
        "properties": {
          "id": {
            "description": "The context ID, such as a pull request ID or branch reference.",
            "type": "string"
          },
          "tags": {
            "description": "A list of tags applied to a context. Used primarily for CI and SBOM\ncontexts.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "$ref": "#/components/schemas/ContextContextType"
          },
          "will_be_deleted_at": {
            "description": "Time that all objects in this context will be deleted.\nThis field is deprecated and will be removed in the future.\nPlease use the meta.will_be_deleted_at field instead.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "type": "object"
      },
      "v1Correctness": {
        "default": "CORRECTNESS_UNSPECIFIED",
        "description": "Correctness represents a correctness assessment.\n\n - CORRECTNESS_TRUE_POSITIVE: The AI analysis result is a true positive.\n - CORRECTNESS_FALSE_POSITIVE: The AI analysis result is a false positive.\n - CORRECTNESS_FALSE_NEGATIVE: The AI analysis result is a false negative.\n - CORRECTNESS_UNKNOWN: The AI analysis result is unknown.",
        "enum": [
          "CORRECTNESS_UNSPECIFIED",
          "CORRECTNESS_TRUE_POSITIVE",
          "CORRECTNESS_FALSE_POSITIVE",
          "CORRECTNESS_FALSE_NEGATIVE",
          "CORRECTNESS_UNKNOWN"
        ],
        "type": "string"
      },
      "v1CorrectnessAnalyzer": {
        "default": "CORRECTNESS_ANALYZER_UNSPECIFIED",
        "description": "CorrectnessAnalyzer represents the analyzer used to determine the correctness of a linter result.",
        "enum": [
          "CORRECTNESS_ANALYZER_UNSPECIFIED",
          "CORRECTNESS_ANALYZER_AI_GEMINI_FLASH_2_5",
          "CORRECTNESS_ANALYZER_AI_GEMINI_FLASH_2_5_LITE",
          "CORRECTNESS_ANALYZER_AI_GEMINI_FLASH_LATEST",
          "CORRECTNESS_ANALYZER_AI_GEMINI_FLASH_LITE_LATEST"
        ],
        "type": "string"
      },
      "v1CountResponse": {
        "description": "Response to a list count request.",
        "properties": {
          "count": {
            "description": "Number of objects matching the given list parameters.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1Critical": {
        "properties": {
          "identity": {
            "$ref": "#/components/schemas/CriticalIdentity"
          },
          "image": {
            "$ref": "#/components/schemas/CriticalImage"
          },
          "type": {
            "description": "Type must be 'atomic container signature'.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1CustomTemplate": {
        "description": "CustomTemplate is the type specific custom template.",
        "properties": {
          "email_template": {
            "$ref": "#/components/schemas/v1EmailTemplate"
          },
          "prcomments_template": {
            "$ref": "#/components/schemas/v1PRCommentsTemplate"
          },
          "slack_template": {
            "$ref": "#/components/schemas/v1SlackTemplate"
          },
          "template_type": {
            "$ref": "#/components/schemas/v1CustomTemplateType"
          },
          "webhook_template": {
            "$ref": "#/components/schemas/v1WebhookTemplate"
          }
        },
        "required": [
          "template_type"
        ],
        "type": "object"
      },
      "v1CustomTemplateType": {
        "default": "CUSTOM_TEMPLATE_TYPE_UNSPECIFIED",
        "enum": [
          "CUSTOM_TEMPLATE_TYPE_UNSPECIFIED",
          "CUSTOM_TEMPLATE_TYPE_PR_COMMENTS",
          "CUSTOM_TEMPLATE_TYPE_EMAIL",
          "CUSTOM_TEMPLATE_TYPE_SLACK",
          "CUSTOM_TEMPLATE_TYPE_WEBHOOK"
        ],
        "type": "string"
      },
      "v1CvssDataV2": {
        "properties": {
          "access_complexity": {
            "$ref": "#/components/schemas/CvssDataV2AccessComplexity"
          },
          "access_vector": {
            "$ref": "#/components/schemas/v1NVDAttackVector"
          },
          "authentication": {
            "$ref": "#/components/schemas/CvssDataV2Auth"
          },
          "availability_impact": {
            "$ref": "#/components/schemas/CvssDataV2V2Impact"
          },
          "availability_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "base_score": {
            "format": "float",
            "type": "number"
          },
          "collateral_damage_potential": {
            "$ref": "#/components/schemas/CvssDataV2CollateralDamagePotential"
          },
          "confidentiality_impact": {
            "$ref": "#/components/schemas/CvssDataV2V2Impact"
          },
          "confidentiality_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "environmental_score": {
            "format": "float",
            "type": "number"
          },
          "exploitability": {
            "$ref": "#/components/schemas/CvssDataV2Exploitability"
          },
          "integrity_impact": {
            "$ref": "#/components/schemas/CvssDataV2V2Impact"
          },
          "integrity_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "remediation_level": {
            "$ref": "#/components/schemas/v1NVDRemediationLevel"
          },
          "report_confidence": {
            "$ref": "#/components/schemas/CvssDataV2ReportConfidence"
          },
          "target_distribution": {
            "$ref": "#/components/schemas/CvssDataV2TargetDistribution"
          },
          "temporal_score": {
            "format": "float",
            "type": "number"
          },
          "vector_string": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "vector_string",
          "base_score"
        ],
        "type": "object"
      },
      "v1CvssDataV30": {
        "properties": {
          "attack_complexity": {
            "$ref": "#/components/schemas/v1NVDAttackComplexity"
          },
          "attack_vector": {
            "$ref": "#/components/schemas/v1NVDAttackVector"
          },
          "availability_impact": {
            "$ref": "#/components/schemas/v1NVDImpact"
          },
          "availability_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "base_score": {
            "format": "float",
            "type": "number"
          },
          "base_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDImpact"
          },
          "confidentiality_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "environmental_score": {
            "format": "float",
            "type": "number"
          },
          "environmental_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "exploit_code_maturity": {
            "$ref": "#/components/schemas/v1NVDExploitCodeMaturity"
          },
          "integrity_impact": {
            "$ref": "#/components/schemas/v1NVDImpact"
          },
          "integrity_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "modified_attack_complexity": {
            "$ref": "#/components/schemas/v1NVDModifiedAttackComplexity"
          },
          "modified_attack_vector": {
            "$ref": "#/components/schemas/v1NVDModifiedAttackVector"
          },
          "modified_availability_impact": {
            "$ref": "#/components/schemas/v1NVDModifiedImpact"
          },
          "modified_confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDModifiedImpact"
          },
          "modified_integrity_impact": {
            "$ref": "#/components/schemas/v1NVDModifiedImpact"
          },
          "modified_privileges_required": {
            "$ref": "#/components/schemas/v1NVDModifiedPrivilegesRequired"
          },
          "modified_scope": {
            "$ref": "#/components/schemas/v1NVDModifiedScope"
          },
          "modified_user_interaction": {
            "$ref": "#/components/schemas/v1NVDModifiedUserInteraction"
          },
          "privileges_required": {
            "$ref": "#/components/schemas/v1NVDPrivilegesRequired"
          },
          "remediation_level": {
            "$ref": "#/components/schemas/v1NVDRemediationLevel"
          },
          "report_confidence": {
            "$ref": "#/components/schemas/v1NVDReportConfidence"
          },
          "scope": {
            "$ref": "#/components/schemas/v1NVDScope"
          },
          "temporal_score": {
            "format": "float",
            "type": "number"
          },
          "temporal_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "user_interaction": {
            "$ref": "#/components/schemas/v1NVDUserInteraction"
          },
          "vector_string": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "vector_string",
          "base_score",
          "base_severity"
        ],
        "type": "object"
      },
      "v1CvssDataV31": {
        "properties": {
          "attack_complexity": {
            "$ref": "#/components/schemas/v1NVDAttackComplexity"
          },
          "attack_vector": {
            "$ref": "#/components/schemas/v1NVDAttackVector"
          },
          "availability_impact": {
            "$ref": "#/components/schemas/v1NVDImpact"
          },
          "availability_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "base_score": {
            "format": "float",
            "type": "number"
          },
          "base_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDImpact"
          },
          "confidentiality_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "environmental_score": {
            "format": "float",
            "type": "number"
          },
          "environmental_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "exploit_code_maturity": {
            "$ref": "#/components/schemas/v1NVDExploitCodeMaturity"
          },
          "integrity_impact": {
            "$ref": "#/components/schemas/v1NVDImpact"
          },
          "integrity_requirement": {
            "$ref": "#/components/schemas/v1NVDRequirement"
          },
          "modified_attack_complexity": {
            "$ref": "#/components/schemas/v1NVDModifiedAttackComplexity"
          },
          "modified_attack_vector": {
            "$ref": "#/components/schemas/v1NVDModifiedAttackVector"
          },
          "modified_availability_impact": {
            "$ref": "#/components/schemas/v1NVDModifiedImpact"
          },
          "modified_confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDModifiedScope"
          },
          "modified_integrity_impact": {
            "$ref": "#/components/schemas/v1NVDModifiedImpact"
          },
          "modified_privileges_required": {
            "$ref": "#/components/schemas/v1NVDModifiedPrivilegesRequired"
          },
          "modified_scope": {
            "$ref": "#/components/schemas/v1NVDModifiedScope"
          },
          "modified_user_interaction": {
            "$ref": "#/components/schemas/v1NVDModifiedUserInteraction"
          },
          "privileges_required": {
            "$ref": "#/components/schemas/v1NVDPrivilegesRequired"
          },
          "remediation_level": {
            "$ref": "#/components/schemas/v1NVDRemediationLevel"
          },
          "report_confidence": {
            "$ref": "#/components/schemas/v1NVDReportConfidence"
          },
          "scope": {
            "$ref": "#/components/schemas/v1NVDScope"
          },
          "temporal_score": {
            "format": "float",
            "type": "number"
          },
          "temporal_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "user_interaction": {
            "$ref": "#/components/schemas/v1NVDUserInteraction"
          },
          "vector_string": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "vector_string",
          "base_score",
          "base_severity"
        ],
        "type": "object"
      },
      "v1CvssDataV40": {
        "properties": {
          "attack_complexity": {
            "$ref": "#/components/schemas/v1NVDV40AttackComplexity"
          },
          "attack_requirements": {
            "$ref": "#/components/schemas/v1NVDV40AttackRequirements"
          },
          "attack_vector": {
            "$ref": "#/components/schemas/v1NVDV40AttackVector"
          },
          "automatable": {
            "$ref": "#/components/schemas/v1NVDV40Automatable"
          },
          "availability_requirement": {
            "$ref": "#/components/schemas/v1NVDV40Requirement"
          },
          "base_score": {
            "format": "float",
            "type": "number"
          },
          "base_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "confidentiality_requirement": {
            "$ref": "#/components/schemas/v1NVDV40Requirement"
          },
          "environmental_score": {
            "format": "float",
            "type": "number"
          },
          "environmental_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "exploit_maturity": {
            "$ref": "#/components/schemas/v1NVDV40ExploitMaturity"
          },
          "integrity_requirement": {
            "$ref": "#/components/schemas/v1NVDV40Requirement"
          },
          "modified_attack_complexity": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedAttackComplexity"
          },
          "modified_attack_requirements": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedAttackRequirements"
          },
          "modified_attack_vector": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedAttackVector"
          },
          "modified_privileges_required": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedPrivilegesRequired"
          },
          "modified_sub_availability_impact": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedSubImpact"
          },
          "modified_sub_confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedSubImpact"
          },
          "modified_sub_integrity_impact": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedSubImpact"
          },
          "modified_user_interaction": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedUserInteraction"
          },
          "modified_vuln_availability_impact": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedImpact"
          },
          "modified_vuln_confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedImpact"
          },
          "modified_vuln_integrity_impact": {
            "$ref": "#/components/schemas/v1NVDV40ModifiedImpact"
          },
          "privileges_required": {
            "$ref": "#/components/schemas/v1NVDV40PrivilegesRequired"
          },
          "provider_urgency": {
            "$ref": "#/components/schemas/v1NVDV40ProviderUrgency"
          },
          "recovery": {
            "$ref": "#/components/schemas/v1NVDV40Recovery"
          },
          "safety": {
            "$ref": "#/components/schemas/v1NVDV40Safety"
          },
          "sub_availability_impact": {
            "$ref": "#/components/schemas/v1NVDV40Impact"
          },
          "sub_confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDV40Impact"
          },
          "sub_integrity_impact": {
            "$ref": "#/components/schemas/v1NVDV40Impact"
          },
          "threat_score": {
            "format": "float",
            "type": "number"
          },
          "threat_severity": {
            "$ref": "#/components/schemas/v1NVDSeverity"
          },
          "user_interaction": {
            "$ref": "#/components/schemas/v1NVDV40UserInteraction"
          },
          "value_density": {
            "$ref": "#/components/schemas/v1NVDV40ValueDensity"
          },
          "vector_string": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "vuln_availability_impact": {
            "$ref": "#/components/schemas/v1NVDV40Impact"
          },
          "vuln_confidentiality_impact": {
            "$ref": "#/components/schemas/v1NVDV40Impact"
          },
          "vuln_integrity_impact": {
            "$ref": "#/components/schemas/v1NVDV40Impact"
          },
          "vulnerability_response_effort": {
            "$ref": "#/components/schemas/v1NVDV40VulnerabilityResponseEffort"
          }
        },
        "required": [
          "version",
          "vector_string",
          "base_score",
          "base_severity"
        ],
        "type": "object"
      },
      "v1CycloneDxSpecVersion": {
        "default": "CYCLONE_DX_SPEC_VERSION_UNSPECIFIED",
        "description": "CycloneDx specification versions Endor emits. Values are added as Endor adds\nsupport, so this list is the supported set.\n\n - CYCLONE_DX_SPEC_VERSION_UNSPECIFIED: Unset. The export uses CycloneDx 1.5.\n - CYCLONE_DX_SPEC_VERSION_1_5: CycloneDx 1.5. The default when no version is requested.\n - CYCLONE_DX_SPEC_VERSION_1_6: CycloneDx 1.6.\n - CYCLONE_DX_SPEC_VERSION_1_7: CycloneDx 1.7.",
        "enum": [
          "CYCLONE_DX_SPEC_VERSION_UNSPECIFIED",
          "CYCLONE_DX_SPEC_VERSION_1_5",
          "CYCLONE_DX_SPEC_VERSION_1_6",
          "CYCLONE_DX_SPEC_VERSION_1_7"
        ],
        "type": "string"
      },
      "v1DependencyMetadata": {
        "description": "Information about the relationship between a root package version (importer)\nand one of its dependencies.\nDependencyMetadata objects are children of the root PackageVersion object and\nbelong to the same project and namespace as the root PackageVersion object.\nThey are connected to the importer project through\nspec.importer_data.project_uuid, and to the dependency project through\nspec.dependency_data.project_uuid.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1DependencyMetadataSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1DependencyMetadataPath": {
        "description": "List of nodes in a dependency path.",
        "properties": {
          "nodes": {
            "description": "List of nodes in a dependency path.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1DependencyMetadataSpec": {
        "description": "DependencyMetadata specific data.",
        "properties": {
          "dependency_data": {
            "$ref": "#/components/schemas/DependencyMetadataDependencyData"
          },
          "importer_data": {
            "$ref": "#/components/schemas/DependencyMetadataImporterData"
          }
        },
        "type": "object"
      },
      "v1DependencyScope": {
        "default": "DEPENDENCY_SCOPE_UNSPECIFIED",
        "description": " - DEPENDENCY_SCOPE_UNSPECIFIED: Dependency scope is undefined.\n - DEPENDENCY_SCOPE_TEST: Dependency is only used for testing.\n - DEPENDENCY_SCOPE_BUILD: Dependency is only used for building the package.\n - DEPENDENCY_SCOPE_NORMAL: Dependency is used in normal, non-test, code.",
        "enum": [
          "DEPENDENCY_SCOPE_UNSPECIFIED",
          "DEPENDENCY_SCOPE_TEST",
          "DEPENDENCY_SCOPE_BUILD",
          "DEPENDENCY_SCOPE_NORMAL"
        ],
        "type": "string"
      },
      "v1DependencySpec": {
        "description": "Captures the details of a single dependency.",
        "properties": {
          "dependency_name": {
            "description": "The name of the dependency package.",
            "type": "string"
          },
          "dependency_version": {
            "description": "The dependency version.",
            "type": "string"
          },
          "reachable": {
            "$ref": "#/components/schemas/DependencyMetadataReachabilityType"
          },
          "unpinned": {
            "description": "Set to true if the dependency is not pinned.",
            "type": "boolean"
          },
          "utilization": {
            "description": "The fraction of the dependency that is used by this package.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "v1DependencyStats": {
        "description": "Includes all dependency related data.",
        "properties": {
          "dependency_specs": {
            "description": "A list of all the related dependencies\nfor this package or package version.",
            "items": {
              "$ref": "#/components/schemas/v1DependencySpec"
            },
            "type": "array"
          },
          "direct_dependencies": {
            "description": "The total number of direct dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "indirect_dependencies": {
            "description": "The total number of indirect dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "unpinned_dependencies": {
            "description": "The number of unpinned dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "unpinned_direct_dependencies": {
            "description": "The number of unpinned dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "unused_dependencies": {
            "description": "The number of unused dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "unused_direct_dependencies": {
            "description": "The number of unused dependencies.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1Digest": {
        "description": "Digest is a digest of a file/container image.",
        "properties": {
          "algorithm": {
            "$ref": "#/components/schemas/v1DigestType"
          },
          "value": {
            "description": "Digest value of the file.",
            "type": "string"
          }
        },
        "required": [
          "algorithm",
          "value"
        ],
        "type": "object"
      },
      "v1DigestType": {
        "default": "DIGEST_TYPE_UNSPECIFIED",
        "enum": [
          "DIGEST_TYPE_UNSPECIFIED",
          "DIGEST_TYPE_SHA1",
          "DIGEST_TYPE_SHA256",
          "DIGEST_TYPE_SHA512",
          "DIGEST_TYPE_MD5"
        ],
        "type": "string"
      },
      "v1Discussion": {
        "properties": {
          "count": {
            "description": "Total count of discussion posts/pull requests.",
            "format": "int32",
            "type": "integer"
          },
          "num_closed": {
            "description": "Count of closed discussion posts/pull requests.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1DismissParams": {
        "description": "Metadata associated with a snooze or ignore request.",
        "properties": {
          "comments": {
            "description": "Comments for the snooze or ignore.",
            "type": "string"
          },
          "entry_id": {
            "description": "The ignore file entry id.",
            "type": "string"
          },
          "expiration_time": {
            "description": "Expiration time of the snooze or ignore.",
            "format": "date-time",
            "type": "string"
          },
          "expire_if_fix_available": {
            "description": "Set to true if the snooze or ignore should expire if a fix is available.",
            "type": "boolean"
          },
          "file_name": {
            "description": "Name of the file that was used to ignore the finding.",
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/v1ExceptionReason"
          },
          "source": {
            "$ref": "#/components/schemas/v1DismissSource"
          },
          "update_time": {
            "description": "Timestamp of the last update.",
            "format": "date-time",
            "type": "string"
          },
          "updated_by": {
            "description": "Username of the user who last updated the snooze or ignore.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1DismissSource": {
        "default": "DISMISS_SOURCE_UNSPECIFIED",
        "description": "Which tool created a snooze or ignore, for tooling that maintains its own\ndismissals over time and must never clear one it did not create.\n\n - DISMISS_SOURCE_UNSPECIFIED: Created by a person, or by tooling that does not maintain what it writes.\n - DISMISS_SOURCE_CONTAINER_DIFF: Created by `endorctl container diff --snooze-baseline-findings`, or by the\nequivalent step of `endorctl container scan --diff`. Those commands clear\nthe dismissals carrying this source once the finding is no longer common\nwith the baseline, so no other writer may set it.",
        "enum": [
          "DISMISS_SOURCE_UNSPECIFIED",
          "DISMISS_SOURCE_CONTAINER_DIFF"
        ],
        "type": "string"
      },
      "v1DistributionFormatType": {
        "default": "DISTRIBUTION_FORMAT_TYPE_UNSPECIFIED",
        "description": "Distribution format type.\n\n - DISTRIBUTION_FORMAT_TYPE_PYTHON_SOURCE: Python source was used to build this package.\n - DISTRIBUTION_FORMAT_TYPE_PYTHON_EGG: Egg-info based distribution format for python.\n - DISTRIBUTION_FORMAT_TYPE_PYTHON_WHEEL: Dist-info based distribution format for python.",
        "enum": [
          "DISTRIBUTION_FORMAT_TYPE_UNSPECIFIED",
          "DISTRIBUTION_FORMAT_TYPE_PYTHON_SOURCE",
          "DISTRIBUTION_FORMAT_TYPE_PYTHON_EGG",
          "DISTRIBUTION_FORMAT_TYPE_PYTHON_WHEEL"
        ],
        "type": "string"
      },
      "v1DotNetToolChain": {
        "properties": {
          "additional_dotnet_versions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dotnet_installer_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1EMailConfig": {
        "properties": {
          "receivers_addresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "receivers_addresses"
        ],
        "type": "object"
      },
      "v1Ecosystem": {
        "default": "ECOSYSTEM_UNSPECIFIED",
        "description": " - ECOSYSTEM_GO: GoLang.\n - ECOSYSTEM_MAVEN: Maven.\n - ECOSYSTEM_PYPI: Python.\n - ECOSYSTEM_CARGO: Rust.\n - ECOSYSTEM_NPM: Javascript.\n - ECOSYSTEM_GEM: Ruby.\n - ECOSYSTEM_NUGET: Dotnet.\n - ECOSYSTEM_PACKAGIST: PHP.\n - ECOSYSTEM_SBOM: SBOMs.\n - ECOSYSTEM_RPM: RPM.\n - ECOSYSTEM_DEBIAN: Debian.\n - ECOSYSTEM_GITHUB_ACTION: GitHub Actions.\n - ECOSYSTEM_COCOAPOD: Cocoapods.\n - ECOSYSTEM_APK: APK (alpine et.al).\n - ECOSYSTEM_CONTAINER: Containers.\n - ECOSYSTEM_HUGGING_FACE: Hugging Face.\n - ECOSYSTEM_C: C/C++.\n - ECOSYSTEM_GIT: ecosystem GIT for GIT repository dependencies.\nThis can be used for package name of the resolved dependencies when a\ngiven repository has dependencies to other GIT repositories. Currently we\nuse this to represent vulnerabilities for the given GIT repository. ex:\ngit submodules, C/C++ dependencies.\n - ECOSYSTEM_AI_MODEL: AI models.\n - ECOSYSTEM_SWIFT: Ecosystem Swift consists of native Swift packages, which are defined\nusing the Package.swift manifest file and managed by the Swift Package\nManager. There is a separate ecosystem for Cocoapod packages called\nECOSYSTEM_COCOAPOD, which is an alternative package manager for Swift\npackages.\n - ECOSYSTEM_CONAN: Ecosystem Conan for C/C++ packages managed by the Conan 2.x package manager.\n - ECOSYSTEM_VSCODE: VS Code editor extensions, distributed via the Microsoft Visual Studio\nMarketplace.",
        "enum": [
          "ECOSYSTEM_UNSPECIFIED",
          "ECOSYSTEM_GO",
          "ECOSYSTEM_MAVEN",
          "ECOSYSTEM_PYPI",
          "ECOSYSTEM_CARGO",
          "ECOSYSTEM_NPM",
          "ECOSYSTEM_GEM",
          "ECOSYSTEM_NUGET",
          "ECOSYSTEM_PACKAGIST",
          "ECOSYSTEM_SBOM",
          "ECOSYSTEM_RPM",
          "ECOSYSTEM_DEBIAN",
          "ECOSYSTEM_GITHUB_ACTION",
          "ECOSYSTEM_COCOAPOD",
          "ECOSYSTEM_APK",
          "ECOSYSTEM_CONTAINER",
          "ECOSYSTEM_HUGGING_FACE",
          "ECOSYSTEM_C",
          "ECOSYSTEM_GIT",
          "ECOSYSTEM_AI_MODEL",
          "ECOSYSTEM_SWIFT",
          "ECOSYSTEM_CONAN",
          "ECOSYSTEM_VSCODE"
        ],
        "type": "string"
      },
      "v1EmailTemplate": {
        "properties": {
          "open_action_template": {
            "description": "The template to be used for OPEN action for email plugin.",
            "type": "string"
          },
          "resolve_action_template": {
            "description": "The template to be used for RESOLVE action for email plugin.",
            "type": "string"
          },
          "update_action_template": {
            "description": "The template to be used for UPDATE action for email plugin.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1EmbeddingModel": {
        "default": "EMBEDDING_MODEL_UNSPECIFIED",
        "description": "EmbeddingModel is the model of the embedding provider.",
        "enum": [
          "EMBEDDING_MODEL_UNSPECIFIED",
          "EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_ADA_002",
          "EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_3_SMALL",
          "EMBEDDING_MODEL_GOOGLE_TEXT_EMBEDDING_LARGE",
          "EMBEDDING_MODEL_OPENAI_TEXT_EMBEDDING_3_LARGE"
        ],
        "type": "string"
      },
      "v1EmbeddingProvider": {
        "default": "EMBEDDING_PROVIDER_UNSPECIFIED",
        "description": "EmbeddingProvider is the provider of the embeddings.",
        "enum": [
          "EMBEDDING_PROVIDER_UNSPECIFIED",
          "EMBEDDING_PROVIDER_OPENAI",
          "EMBEDDING_PROVIDER_GOOGLE"
        ],
        "type": "string"
      },
      "v1EmbeddingVector": {
        "description": "Embedding vector for one code segment.",
        "properties": {
          "vector": {
            "items": {
              "format": "float",
              "type": "number"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1EndorIgnoreEntry": {
        "description": "Represents a single entry in the ignore file.\n\nEndorIgnoreEntry objects are created by the endorctl client after\nreading and processing the ignore file during the git scan,\nand then applied to the findings during the analytics scan.\n\nThe ignore file is either a raw list of vulnerability ids\n(one per line), or a YAML file that contains a list of ignore entries,\neach identifying one or more findings in a repository version.\nThe file is formatted manually or via the endorctl ignore command.\n\nEach entry must specify at least the finding name or the vulnerability ID.\nThe more fields you provide, the more specific the ignore entry is.\nI.e. if you only provide the finding name and there are multiple\nfindings with the same name in the same repository version,\nthe ignore entry is applied to all of them.\nUse the endorctl ignore --finding-uuid option to automatically populate\nall fields of the ignore entry based on a given finding.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1EndorIgnoreEntrySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1EndorIgnoreEntrySpec": {
        "properties": {
          "dependency_name": {
            "description": "Name of the dependency of the finding that is being ignored.\nFor example, \"org.apache.logging.log4j:log4j-core@2.3\".\nPartial matches are accepted.\n\nThis corresponds to the spec.target_dependency_package_name field\nof the finding object for PackageVersion findings.",
            "type": "string"
          },
          "extra_key": {
            "description": "Extra key for the finding that is being ignored.\nFor example, the finding policy UUID.\nExact matches only.\n\nThe extra key is used internally to uniquely identify findings\n(along with other fields such as the parent, target, and type)\nand is stored in the spec.extra_key field of the finding object.",
            "type": "string"
          },
          "finding_name": {
            "description": "Name of the finding that is being ignored.\nFor example, \"Potential secret leak Generic API Key: ID #3b0fbc\".\nExact matches only.\n\nPlease note that finding names are stored in the meta.description\nfield of the finding object rather than in meta.name.\nYes, this is confusing, but there are historical reasons for this.",
            "type": "string"
          },
          "ignore_params": {
            "$ref": "#/components/schemas/v1DismissParams"
          },
          "parent_name": {
            "description": "Name of the parent of the finding that is being ignored.\nFor example, \"com.endor.webapp:endor-java-webapp-demo@4.0-SNAPSHOT\".\nPartial matches are accepted.\n\nThis corresponds to the meta.name field of the parent object\npointed to by the meta.parent_uuid field of the finding object.",
            "type": "string"
          },
          "project_uuid": {
            "description": "Project UUID.",
            "type": "string"
          },
          "vuln_id": {
            "description": "Vulnerability ID of the finding that is being ignored.\nFor example, \"CVE-2025-12345\" or \"GHSA-7rjr-3q55-vv33\".\nExact matches only.",
            "type": "string"
          }
        },
        "required": [
          "ignore_params"
        ],
        "type": "object"
      },
      "v1EndorRuleOrigin": {
        "properties": {
          "license": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1EndorTarget": {
        "default": "ENDOR_TARGET_UNSPECIFIED",
        "description": "EndorTarget determines the origin of the files that will be analyzed by a\nrule.",
        "enum": [
          "ENDOR_TARGET_UNSPECIFIED",
          "ENDOR_TARGET_PACKAGE",
          "ENDOR_TARGET_REPOSITORY"
        ],
        "type": "string"
      },
      "v1EndorctlRC": {
        "default": "ENDORCTL_RC_UNSPECIFIED",
        "description": "Endorctl return codes.\n\n - ENDORCTL_RC_SUCCESS: Success (translates to exit code 0).\n - ENDORCTL_RC_ERROR: Unspecified error.\n - ENDORCTL_RC_INVALID_ARGS: Invalid input.\n - ENDORCTL_RC_ENDOR_AUTH_FAILURE: Endor API authentication failure.\n - ENDORCTL_RC_DOCTOR_FAILURE: Endor host-check failure.\n - ENDORCTL_RC_GITHUB_AUTH_FAILURE: GitHub authentication failure.\n - ENDORCTL_RC_ANALYTICS_ERROR: Error running analytics.\n - ENDORCTL_RC_FINDINGS_ERROR: Error generating findings.\n - ENDORCTL_RC_NOTIFICATIONS_ERROR: Error generating notifications.\n - ENDORCTL_RC_GITHUB_API_ERROR: Error calling GitHub API.\n - ENDORCTL_RC_GITHUB_PERMISSIONS_ERROR: Insufficient GitHub token permissions.\n - ENDORCTL_RC_GIT_ERROR: Error while performing a Git operation.\n - ENDORCTL_RC_DEPENDENCY_RESOLUTION_ERROR: Error during dependency resolution.\n - ENDORCTL_RC_DEPENDENCY_SCANNING_ERROR: Error during dependency scanning.\n - ENDORCTL_RC_CALL_GRAPH_ERROR: Error while generating call graphs.\n - ENDORCTL_RC_LINTER_ERROR: Error while running the linter scanner.\n - ENDORCTL_RC_BAD_POLICY_TYPE: A user defined policy has a policy type reserved for system policies.\n - ENDORCTL_RC_POLICY_ERROR: Error evaluating one or more policies.\n - ENDORCTL_RC_INTERNAL_ERROR: Internal error while running endorctl.\n - ENDORCTL_RC_DEADLINE_EXCEEDED: Deadline exceeded while running endorctl.\n - ENDORCTL_RC_NOT_FOUND: Requested entity was not found.\n - ENDORCTL_RC_ALREADY_EXISTS: Attempt to create an entity failed because it already exists.\n - ENDORCTL_RC_UNAUTHENTICATED: Unable to authenticate request.\n - ENDORCTL_RC_VULN_ERROR: Error related to vulnerability ingestion and processing.\n - ENDORCTL_RC_INITIALIZATION_ERROR: Error related to initializing the repository.\n - ENDORCTL_RC_HOST_CHECK_FAILURE: Endor host-check failure.\n - ENDORCTL_RC_SBOM_IMPORT_ERROR: Error importing an sbom.\n - ENDORCTL_RC_PRE_COMMIT_CHECK_FAILURE: A pre-commit check failed.\n - ENDORCTL_RC_GH_ACTION_WORKFLOW_SCAN_FAILURE: GitHub action workflow scan failed.\n - ENDORCTL_RC_FILE_ANALYTICS_ERROR: Error while reading files for analytics processing.\n - ENDORCTL_RC_SIGNATURE_VERIFICATION_FAILURE: Signature verification failure.\n - ENDORCTL_RC_LICENSE_ERROR: The requested operation requires additional licensing.\n - ENDORCTL_RC_HUGGING_FACE_ERROR: Error while running the huggingface scanner.\n - ENDORCTL_RC_SAST_ERROR: Error while running the SAST scanner.\n - ENDORCTL_RC_ARTIFACT_OPERATION_FAILURE: Artifact operation failure.\n - ENDORCTL_RC_SEGMENTATION_ERROR: Error during file segmentation.\n - ENDORCTL_RC_TOOLCHAIN_ERROR: Error generating toolchains.\n - ENDORCTL_RC_SANDBOX_ERROR: Error running endorctl sandbox.\n - ENDORCTL_RC_RULE_SET_ERROR: Error performing rule set operations.\n - ENDORCTL_RC_SECURITY_REVIEW_ERROR: Error while running the PR security review.\n - ENDORCTL_RC_CODE_API_ERROR: Error while running codeAPI.\n - ENDORCTL_RC_BASELINE_NOT_FOUND: Baseline is invalid or has not been scanned yet.\n - ENDORCTL_RC_SCAN_CANCELLED: Scan was cancelled.\n - ENDORCTL_RC_CLONE_ERROR: Error while cloning a git repository.\n - ENDORCTL_RC_POLICY_VIOLATION: One or more, enforced, admission policy violations detected.\n - ENDORCTL_RC_POLICY_WARNING: One ore more, unenforced, admission policy violations detected.\n - ENDORCTL_RC_PR_SECURITY_REVIEW_ERROR: Deprecated: Use ENDORCTL_RC_SECURITY_REVIEW_ERROR instead.\n - ENDORCTL_RC_EXPORTER_WARNING: Warning while running the exporter. This does not prevent the main scan\nfrom completing.\n - ENDORCTL_RC_CONTAINER_PROFILING_WARNING: Warning while profiling a container image.\n - ENDORCTL_RC_DEPENDENCY_SETUP_WARNING: Warning during dependency environment setup (e.g. truststore creation).\nThe scan continues with a fallback configuration but may encounter issues.",
        "enum": [
          "ENDORCTL_RC_UNSPECIFIED",
          "ENDORCTL_RC_SUCCESS",
          "ENDORCTL_RC_ERROR",
          "ENDORCTL_RC_INVALID_ARGS",
          "ENDORCTL_RC_ENDOR_AUTH_FAILURE",
          "ENDORCTL_RC_DOCTOR_FAILURE",
          "ENDORCTL_RC_GITHUB_AUTH_FAILURE",
          "ENDORCTL_RC_ANALYTICS_ERROR",
          "ENDORCTL_RC_FINDINGS_ERROR",
          "ENDORCTL_RC_NOTIFICATIONS_ERROR",
          "ENDORCTL_RC_GITHUB_API_ERROR",
          "ENDORCTL_RC_GITHUB_PERMISSIONS_ERROR",
          "ENDORCTL_RC_GIT_ERROR",
          "ENDORCTL_RC_DEPENDENCY_RESOLUTION_ERROR",
          "ENDORCTL_RC_DEPENDENCY_SCANNING_ERROR",
          "ENDORCTL_RC_CALL_GRAPH_ERROR",
          "ENDORCTL_RC_LINTER_ERROR",
          "ENDORCTL_RC_BAD_POLICY_TYPE",
          "ENDORCTL_RC_POLICY_ERROR",
          "ENDORCTL_RC_INTERNAL_ERROR",
          "ENDORCTL_RC_DEADLINE_EXCEEDED",
          "ENDORCTL_RC_NOT_FOUND",
          "ENDORCTL_RC_ALREADY_EXISTS",
          "ENDORCTL_RC_UNAUTHENTICATED",
          "ENDORCTL_RC_VULN_ERROR",
          "ENDORCTL_RC_INITIALIZATION_ERROR",
          "ENDORCTL_RC_HOST_CHECK_FAILURE",
          "ENDORCTL_RC_SBOM_IMPORT_ERROR",
          "ENDORCTL_RC_PRE_COMMIT_CHECK_FAILURE",
          "ENDORCTL_RC_GH_ACTION_WORKFLOW_SCAN_FAILURE",
          "ENDORCTL_RC_FILE_ANALYTICS_ERROR",
          "ENDORCTL_RC_SIGNATURE_VERIFICATION_FAILURE",
          "ENDORCTL_RC_LICENSE_ERROR",
          "ENDORCTL_RC_HUGGING_FACE_ERROR",
          "ENDORCTL_RC_SAST_ERROR",
          "ENDORCTL_RC_ARTIFACT_OPERATION_FAILURE",
          "ENDORCTL_RC_SEGMENTATION_ERROR",
          "ENDORCTL_RC_TOOLCHAIN_ERROR",
          "ENDORCTL_RC_SANDBOX_ERROR",
          "ENDORCTL_RC_RULE_SET_ERROR",
          "ENDORCTL_RC_SECURITY_REVIEW_ERROR",
          "ENDORCTL_RC_CODE_API_ERROR",
          "ENDORCTL_RC_BASELINE_NOT_FOUND",
          "ENDORCTL_RC_SCAN_CANCELLED",
          "ENDORCTL_RC_CLONE_ERROR",
          "ENDORCTL_RC_POLICY_VIOLATION",
          "ENDORCTL_RC_POLICY_WARNING",
          "ENDORCTL_RC_PR_SECURITY_REVIEW_ERROR",
          "ENDORCTL_RC_EXPORTER_WARNING",
          "ENDORCTL_RC_CONTAINER_PROFILING_WARNING",
          "ENDORCTL_RC_DEPENDENCY_SETUP_WARNING"
        ],
        "type": "string"
      },
      "v1Events": {
        "properties": {
          "event": {
            "items": {
              "type": "string"
            },
            "title": "List of user events",
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ExceptionReason": {
        "default": "EXCEPTION_REASON_UNSPECIFIED",
        "description": "Reasons for dismissing a finding.\n\n - EXCEPTION_REASON_FALSE_POSITIVE: Tool is incorrect. This is not a real issue.\n - EXCEPTION_REASON_RISK_ACCEPTED: Risk acknowledged and accepted.\n - EXCEPTION_REASON_IN_TRIAGE: Issue is actively being triaged.\n - EXCEPTION_REASON_OTHER: Other reason. Use policy description or dismiss comments to elaborate.\n - EXCEPTION_REASON_RESOLVED: Issue has been resolved. For example, a secret is no longer valid.\n - EXCEPTION_REASON_PRESENT_IN_BASELINE: The finding is also present in the baseline scan this one was diffed\nagainst, so it is not newly introduced. Set only by container diff\ntooling, never by a human.",
        "enum": [
          "EXCEPTION_REASON_UNSPECIFIED",
          "EXCEPTION_REASON_FALSE_POSITIVE",
          "EXCEPTION_REASON_RISK_ACCEPTED",
          "EXCEPTION_REASON_IN_TRIAGE",
          "EXCEPTION_REASON_OTHER",
          "EXCEPTION_REASON_RESOLVED",
          "EXCEPTION_REASON_PRESENT_IN_BASELINE"
        ],
        "type": "string"
      },
      "v1Exceptions": {
        "description": "Metadata added by the exception policy scanner.",
        "properties": {
          "policy_uuids": {
            "description": "List of exception policies triggered by this finding.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tags": {
            "description": "List of tags set by exception policies.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ExportParameters": {
        "description": "Parameters to export a SBOM/VEX.",
        "properties": {
          "package_version_uuids": {
            "description": "List of package version UUIDs.",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "project_name": {
            "description": "Name of the project.",
            "type": "string"
          },
          "project_uuid": {
            "description": "The UUID of the project.",
            "type": "string"
          },
          "repository_version": {
            "description": "Repository version is used to select the package versions for the export.\nThis is an optional field, If not set then the default repository version\nwill be used.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ExportedSBOM": {
        "description": "This is the request to the SBOM export API.\nIt consists of the request resource kind.\nThe UUID is the UUID of the resource.\nThe output is the format to export the SBOM.\nThe SBOM kind is the kind of the SBOM requested by the user. Currently we support only CycloneDx.\nThe meta parent_kind can take one of two values - PackageVersion or RepositoryVersion.\nThe Meta parent_uuid corresponds to the parent UUID of the parent kind.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ExportedSBOMSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the SBOM.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1ExportedSBOMComponentType": {
        "default": "COMPONENT_TYPE_UNSPECIFIED",
        "description": "The kind of component for which we are creating an SBOM.\nThis is a mandatory field.",
        "enum": [
          "COMPONENT_TYPE_UNSPECIFIED",
          "COMPONENT_TYPE_LIBRARY",
          "COMPONENT_TYPE_APPLICATION"
        ],
        "type": "string"
      },
      "v1ExportedSBOMFormat": {
        "default": "FORMAT_UNSPECIFIED",
        "description": "Specifies the output of SBOM. (For example, JSON and XML).\n\n - FORMAT_JSON: SBOM of JSON format output.\n - FORMAT_XML: SBOM of XML format output.\n - FORMAT_TAG_VALUE: SBOM of Tag Value format output.",
        "enum": [
          "FORMAT_UNSPECIFIED",
          "FORMAT_JSON",
          "FORMAT_XML",
          "FORMAT_TAG_VALUE"
        ],
        "type": "string"
      },
      "v1ExportedSBOMSpec": {
        "description": "The internal specification of the object.",
        "properties": {
          "component_type": {
            "$ref": "#/components/schemas/v1ExportedSBOMComponentType"
          },
          "data": {
            "description": "The output of the SBOM, which is a string type.\nFor whichever format we generate the SBOM, the output will be a string only response.",
            "readOnly": true,
            "type": "string"
          },
          "export_parameters": {
            "$ref": "#/components/schemas/v1ExportParameters"
          },
          "format": {
            "$ref": "#/components/schemas/v1ExportedSBOMFormat"
          },
          "hide_private_components": {
            "description": "Whether to hide internal packages or not.",
            "type": "boolean"
          },
          "include_test_dependencies": {
            "description": "Whether to include test, dev, build, and optional dependencies in the SBOM export.\nWhen false (the default), non-production dependencies — and any transitive\ndependencies reachable only through them — are excluded.",
            "type": "boolean"
          },
          "kind": {
            "$ref": "#/components/schemas/v1SBOMKind"
          }
        },
        "required": [
          "component_type"
        ],
        "type": "object"
      },
      "v1ExportedVEX": {
        "description": "The request to the VEX export API.\nIt consists of the request resource kind.\nThe UUID is the uuid of the resource.\nThe output is the format to export the VEX.\nThe VEX kind is the kind of the VEX requested by the user. Currently, we support only CycloneDx.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ExportedVEXSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the VEX.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ExportedVEXComponentType": {
        "default": "COMPONENT_TYPE_UNSPECIFIED",
        "description": "The kind of component for which we are creating an SBOM.\nThis is a mandatory field.",
        "enum": [
          "COMPONENT_TYPE_UNSPECIFIED",
          "COMPONENT_TYPE_LIBRARY",
          "COMPONENT_TYPE_APPLICATION"
        ],
        "type": "string"
      },
      "v1ExportedVEXFormat": {
        "default": "FORMAT_UNSPECIFIED",
        "description": "The output of VEX. (For example, JSON and XML).\n\n - FORMAT_JSON: SBOM of the JSON format output.\n - FORMAT_XML: SBOM of the XML format output.",
        "enum": [
          "FORMAT_UNSPECIFIED",
          "FORMAT_JSON",
          "FORMAT_XML"
        ],
        "type": "string"
      },
      "v1ExportedVEXSpec": {
        "description": "The internal specification of the object.",
        "properties": {
          "component_type": {
            "$ref": "#/components/schemas/v1ExportedVEXComponentType"
          },
          "data": {
            "description": "This is the output of the VEX which is a string type only.",
            "readOnly": true,
            "type": "string"
          },
          "export_parameters": {
            "$ref": "#/components/schemas/v1ExportParameters"
          },
          "format": {
            "$ref": "#/components/schemas/v1ExportedVEXFormat"
          },
          "include_test_dependencies": {
            "description": "Whether to include findings against test, dev, build, and optional\ndependencies in the VEX export. When false (the default), findings whose\ntarget dependency is non-production — or only reachable from the root\nthrough non-production paths — are excluded.",
            "type": "boolean"
          },
          "kind": {
            "$ref": "#/components/schemas/v1SBOMKind"
          }
        },
        "required": [
          "component_type"
        ],
        "type": "object"
      },
      "v1Exporter": {
        "description": "Defines a data exporter.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether the object should be visible in the child namespaces or\nnot.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ExporterSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the exporter.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ExporterSpec": {
        "properties": {
          "exporter_type": {
            "$ref": "#/components/schemas/SpecExporterType"
          },
          "message_type_configs": {
            "items": {
              "$ref": "#/components/schemas/ExporterMessageTypeConfig"
            },
            "type": "array"
          },
          "s3_config": {
            "$ref": "#/components/schemas/ExporterS3Config"
          },
          "wiz_config": {
            "$ref": "#/components/schemas/ExporterWizConfig"
          }
        },
        "required": [
          "exporter_type"
        ],
        "type": "object"
      },
      "v1FactorCategory": {
        "default": "FACTOR_CATEGORY_UNSPECIFIED",
        "description": "Prioritization factors are organized into categories\nbased on what they capture.\n\n - FACTOR_CATEGORY_SECURITY_RISK: Security risk related.\n - FACTOR_CATEGORY_OPERATIONAL_RISK: Operational risk related.\n - FACTOR_CATEGORY_ENTERPRISE_CONTEXT: Captures the enterprize context, such as critical projects.\n - FACTOR_CATEGORY_COST_OF_FIXING: Captures the effort required to fix the issue.\n - FACTOR_CATEGORY_RISK_OF_FIXING: Captures the risk of attempting to fix the issue.\n - FACTOR_CATEGORY_IMPACT_OF_FIXING: Captures the level of improvement gained from fixing the issue.\n - FACTOR_CATEGORY_FEASIBILITY_OF_FIXING: Captures how feasible it is to fix the issue.",
        "enum": [
          "FACTOR_CATEGORY_UNSPECIFIED",
          "FACTOR_CATEGORY_SECURITY_RISK",
          "FACTOR_CATEGORY_OPERATIONAL_RISK",
          "FACTOR_CATEGORY_ENTERPRISE_CONTEXT",
          "FACTOR_CATEGORY_COST_OF_FIXING",
          "FACTOR_CATEGORY_RISK_OF_FIXING",
          "FACTOR_CATEGORY_IMPACT_OF_FIXING",
          "FACTOR_CATEGORY_FEASIBILITY_OF_FIXING"
        ],
        "type": "string"
      },
      "v1FactorImpact": {
        "default": "FACTOR_IMPACT_UNSPECIFIED",
        "description": "The settings capture the impact of this factor on the decision.\n\n - FACTOR_IMPACT_NONE: Does not affect the priority.\n - FACTOR_IMPACT_POSITIVE: Important. Increases the priority.\n - FACTOR_IMPACT_VERY_POSITIVE: Very important. Increases the priority even more.\n - FACTOR_IMPACT_NEGATIVE: Not important. Reduces the priority.\n - FACTOR_IMPACT_VERY_NEGATIVE: Not important at all. Reduces the priority even more.",
        "enum": [
          "FACTOR_IMPACT_UNSPECIFIED",
          "FACTOR_IMPACT_NONE",
          "FACTOR_IMPACT_POSITIVE",
          "FACTOR_IMPACT_VERY_POSITIVE",
          "FACTOR_IMPACT_NEGATIVE",
          "FACTOR_IMPACT_VERY_NEGATIVE"
        ],
        "type": "string"
      },
      "v1FileInfo": {
        "description": "The breakdown for various file categories.",
        "properties": {
          "byte_count": {
            "description": "The number of bytes.",
            "format": "uint64",
            "type": "string"
          },
          "file_count": {
            "description": "The number of files.",
            "format": "uint64",
            "type": "string"
          },
          "line_count": {
            "description": "The number of lines.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1FileSegments": {
        "description": "File segment metadata for a given customer source file.\nStored in mongo and used to refresh dependencies.\nNOTE: Not used for OSS-projects.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1FileSegmentsSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "UUID of the file segments.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1FileSegmentsSpec": {
        "properties": {
          "file_hash": {
            "description": "File content hash.",
            "type": "string"
          },
          "language": {
            "$ref": "#/components/schemas/v1Language"
          },
          "project_uuid": {
            "description": "UUID of the project that this file belongs to.",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/v1DependencyScope"
          },
          "segmenter_version": {
            "description": "Segmenter version.",
            "format": "int32",
            "type": "integer"
          },
          "segments": {
            "description": "File segment metadata.",
            "items": {
              "$ref": "#/components/schemas/v1SegmentMetadata"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1FileStats": {
        "description": "File statistics message. Included as the payload of a metric object.",
        "properties": {
          "badges": {
            "description": "The names of the badges in the repository.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "best_practices_files": {
            "description": "The names of files that represent best practices.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cicd_files": {
            "description": "The names of files that contain CI/CD configuration.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "copyrights": {
            "description": "The list of copyright notices found in source files.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "documentation_files": {
            "description": "The names of files that contain documentation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "file_info": {
            "$ref": "#/components/schemas/v1FileInfo"
          },
          "file_types": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1FileInfo"
            },
            "description": "The breadown for each file type.",
            "type": "object"
          },
          "has_codeowners": {
            "description": "Whether the version contain a valid code owners file or not.",
            "type": "boolean"
          },
          "has_license": {
            "description": "Whether there is a licence or not.",
            "type": "boolean"
          },
          "has_security_md": {
            "description": "Whether the version contain a SECURITY.md file or not.",
            "type": "boolean"
          },
          "languages": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1FileInfo"
            },
            "description": "The breadown for each language type.",
            "type": "object"
          },
          "license_name": {
            "description": "The name of the license.",
            "type": "string"
          },
          "license_type": {
            "description": "The type of the license.",
            "type": "string"
          },
          "make_files": {
            "description": "The names of files that are related to Make tools.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sast_files": {
            "description": "The names of files that are related to SAST tools.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "test_files": {
            "description": "The names of files that contain tests.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1FileType": {
        "default": "FILE_TYPE_UNSPECIFIED",
        "enum": [
          "FILE_TYPE_UNSPECIFIED",
          "FILE_TYPE_FILE",
          "FILE_TYPE_SYMLINK"
        ],
        "type": "string"
      },
      "v1Finding": {
        "description": "A finding contains details of a problem that needs to be fixed.\nThe finding applies to the parent object, which can be one of:\nRepository, RepositoryVersion, or PackageVersion.\nFinding objects are connected to the project via spec.project_uuid.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1FindingSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1FindingCategory": {
        "default": "FINDING_CATEGORY_UNSPECIFIED",
        "description": "Finding categories loosely correspond to use cases.\n\n - FINDING_CATEGORY_VULNERABILITY: Vulnerability.\n - FINDING_CATEGORY_SUPPLY_CHAIN: Supply chain specific problem (malicious packages, typosquats).\n - FINDING_CATEGORY_LICENSE_RISK: License issue.\n - FINDING_CATEGORY_SCPM: Security posture management.\n - FINDING_CATEGORY_SECURITY: Generic security issue.\n - FINDING_CATEGORY_OPERATIONAL: Generic operational issue.\n - FINDING_CATEGORY_SECRETS: Exposed secret.\n - FINDING_CATEGORY_MALWARE: Malware.\n - FINDING_CATEGORY_CICD: CI/CD pipeline issue.\n - FINDING_CATEGORY_TOOLS: Tooling issue.\n - FINDING_CATEGORY_GHACTIONS: Finding applies to a GitHub action dependency.\n - FINDING_CATEGORY_CONTAINER: Finding applies to a container image.\n - FINDING_CATEGORY_SAST: SAST.\n - FINDING_CATEGORY_AI_MODELS: AI Models.\n - FINDING_CATEGORY_SECURITY_REVIEW: Security review.\n - FINDING_CATEGORY_SCA: Software Composition Analysis issue.",
        "enum": [
          "FINDING_CATEGORY_UNSPECIFIED",
          "FINDING_CATEGORY_VULNERABILITY",
          "FINDING_CATEGORY_SUPPLY_CHAIN",
          "FINDING_CATEGORY_LICENSE_RISK",
          "FINDING_CATEGORY_SCPM",
          "FINDING_CATEGORY_SECURITY",
          "FINDING_CATEGORY_OPERATIONAL",
          "FINDING_CATEGORY_SECRETS",
          "FINDING_CATEGORY_MALWARE",
          "FINDING_CATEGORY_CICD",
          "FINDING_CATEGORY_TOOLS",
          "FINDING_CATEGORY_GHACTIONS",
          "FINDING_CATEGORY_CONTAINER",
          "FINDING_CATEGORY_SAST",
          "FINDING_CATEGORY_AI_MODELS",
          "FINDING_CATEGORY_SECURITY_REVIEW",
          "FINDING_CATEGORY_SCA"
        ],
        "type": "string"
      },
      "v1FindingClassification": {
        "default": "FINDING_CLASSIFICATION_UNSPECIFIED",
        "description": "Classification of the finding type. Extensible for future categories.\n\n - FINDING_CLASSIFICATION_SECURITY_VULNERABILITY: Security vulnerability (e.g. SQL injection, XSS, hardcoded creds).\n - FINDING_CLASSIFICATION_LOGICAL_BUG: Logical bug (e.g. null pointer, resource leak, race condition).",
        "enum": [
          "FINDING_CLASSIFICATION_UNSPECIFIED",
          "FINDING_CLASSIFICATION_SECURITY_VULNERABILITY",
          "FINDING_CLASSIFICATION_LOGICAL_BUG"
        ],
        "type": "string"
      },
      "v1FindingContainerData": {
        "properties": {
          "base_image": {
            "description": "Base image of the container image where the target dependency was\nfound.",
            "type": "string"
          },
          "has_base_layer": {
            "description": "Set to true if the target dependency was found in the base layer of the\ncontainer image.",
            "type": "boolean"
          },
          "layer_digests": {
            "description": "List of layer digests for the container image where the target\ndependency was found.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1FindingFixingPatch": {
        "description": "FindingFixingPatch that can fix the finding.",
        "properties": {
          "endor_patch_available": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1FindingFixingUpgrades": {
        "description": "Upgrades that can fix the finding.",
        "properties": {
          "upgrade_list": {
            "description": "List of upgrades that can fix the finding.",
            "items": {
              "$ref": "#/components/schemas/FindingFixingUpgradesUpgradeInfo"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1FindingLog": {
        "description": "A finding log contains details of the state of a finding at the time it was\ncreated, updated or deleted.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1FindingLogSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the finding log.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1FindingLogSpec": {
        "properties": {
          "approximation": {
            "description": "True if this finding is for an approximate dependency\nbased on the unresolved package dependencies.",
            "type": "boolean"
          },
          "days_unresolved": {
            "description": "Number of days that this finding remained unresolved.",
            "format": "int64",
            "type": "string"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "finding_categories": {
            "description": "List of categories that capture the use case to which the finding fits.",
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "finding_parent_kind": {
            "description": "Finding parent object resource kind. For example, PackageVersion.",
            "type": "string"
          },
          "finding_parent_name": {
            "description": "finding_parent_name is the name of the parent object.",
            "type": "string"
          },
          "finding_parent_uuid": {
            "description": "Finding parent object UUID.",
            "type": "string"
          },
          "finding_tags": {
            "description": "List of tags, or attributes, that describe the scope of the finding\nand can be used to filter findings.",
            "items": {
              "$ref": "#/components/schemas/v1FindingTags"
            },
            "type": "array"
          },
          "finding_uuid": {
            "description": "The UUID of the finding.",
            "type": "string"
          },
          "introduced_at": {
            "description": "Time the finding was introduced.",
            "format": "date-time",
            "type": "string"
          },
          "level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "location": {
            "description": "File paths or URLs where the finding was detected.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "method": {
            "$ref": "#/components/schemas/v1SystemEvaluationMethodDefinition"
          },
          "operation": {
            "$ref": "#/components/schemas/v1FindingLogSpecOperation"
          },
          "resolved_at": {
            "description": "Time the finding was resolved.",
            "format": "date-time",
            "type": "string"
          },
          "snooze": {
            "$ref": "#/components/schemas/v1DismissParams"
          },
          "target_dependency_package_name": {
            "description": "Fully qualified name of the dependency. For example,\neco://package@version.",
            "type": "string"
          },
          "target_uuid": {
            "description": "The UUID of the DependencyMetadata object for the dependency.",
            "type": "string"
          }
        },
        "required": [
          "finding_uuid",
          "finding_parent_kind",
          "finding_parent_uuid",
          "operation",
          "introduced_at",
          "method",
          "level",
          "finding_tags",
          "finding_categories"
        ],
        "type": "object"
      },
      "v1FindingLogSpecOperation": {
        "default": "OPERATION_UNSPECIFIED",
        "enum": [
          "OPERATION_UNSPECIFIED",
          "OPERATION_CREATE",
          "OPERATION_UPDATE",
          "OPERATION_DELETE"
        ],
        "type": "string"
      },
      "v1FindingMetadata": {
        "description": "Metadata associated with a finding.",
        "properties": {
          "ai_sast_data": {
            "$ref": "#/components/schemas/AIResultSAST"
          },
          "ci_blocking_policy_info": {
            "$ref": "#/components/schemas/v1FindingPolicyInfo"
          },
          "container_data": {
            "$ref": "#/components/schemas/v1FindingContainerData"
          },
          "custom": {
            "description": "Custom finding metadata."
          },
          "cvss_version": {
            "$ref": "#/components/schemas/SpecCVSSVersion"
          },
          "dependency_package_version_metadata": {
            "$ref": "#/components/schemas/v1PackageVersionMetadata"
          },
          "dependency_score_card": {
            "$ref": "#/components/schemas/v1ScoreCard"
          },
          "dependency_score_factor_list": {
            "$ref": "#/components/schemas/v1ScoreFactorList"
          },
          "malware": {
            "$ref": "#/components/schemas/v1Malware"
          },
          "root_package_resolved_dependencies": {
            "$ref": "#/components/schemas/v1Bom"
          },
          "root_package_score_card": {
            "$ref": "#/components/schemas/v1ScoreCard"
          },
          "root_package_score_factor_list": {
            "$ref": "#/components/schemas/v1ScoreFactorList"
          },
          "root_package_version_metadata": {
            "$ref": "#/components/schemas/v1PackageVersionMetadata"
          },
          "sast_data": {
            "$ref": "#/components/schemas/v1SastData"
          },
          "security_review_data": {
            "$ref": "#/components/schemas/v1SecurityReviewFindingData"
          },
          "source_policy_info": {
            "$ref": "#/components/schemas/v1FindingPolicyInfo"
          },
          "typosquatted_dependency_version_metadata": {
            "$ref": "#/components/schemas/v1PackageVersionMetadata"
          },
          "vulnerability": {
            "$ref": "#/components/schemas/v1Vuln"
          }
        },
        "type": "object"
      },
      "v1FindingPolicyInfo": {
        "description": "Details about the policy that created the finding.",
        "properties": {
          "description": {
            "description": "Policy description.",
            "type": "string"
          },
          "finding_name": {
            "description": "Finding name.",
            "type": "string"
          },
          "name": {
            "description": "Policy name.",
            "type": "string"
          },
          "results": {
            "description": "List of policy matches.",
            "items": {
              "$ref": "#/components/schemas/FindingPolicyInfoPolicyResult"
            },
            "type": "array"
          },
          "tags": {
            "description": "Policy meta tags.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "total_num_results": {
            "description": "The total number of results matched by the policy. This number may be greater\nthan the list of policy matches in the results field, which is truncated if\nthere are more than 5 results.",
            "format": "int32",
            "type": "integer"
          },
          "uuid": {
            "description": "Policy UUID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1FindingRemediation": {
        "default": "FINDING_REMEDIATION_UNSPECIFIED",
        "description": "Recommended action to resolve the finding.\n\n - FINDING_REMEDIATION_UPGRADE: Upgrade to a later version.\n - FINDING_REMEDIATION_DOWNGRADE: Downgrade to an older version.\n - FINDING_REMEDIATION_REPLACE: Replace dependency with another package.\n - FINDING_REMEDIATION_REMOVE: Remove unused dependency.\n - FINDING_REMEDIATION_VENDOR: Vendor a dependency.\n - FINDING_REMEDIATION_IMPROVE: Make changes to improve a dependency.\n - FINDING_REMEDIATION_REIMPLEMENT: Reimplement a dependency locally.\n - FINDING_REMEDIATION_REVIEW: Review, no remediation to suggest\n - FINDING_REMEDIATION_NOTIFICATION: Notification, there may not be any remediation\n - FINDING_REMEDIATION_PIN: Pin dependency to one of the recommended versions",
        "enum": [
          "FINDING_REMEDIATION_UNSPECIFIED",
          "FINDING_REMEDIATION_UPGRADE",
          "FINDING_REMEDIATION_DOWNGRADE",
          "FINDING_REMEDIATION_REPLACE",
          "FINDING_REMEDIATION_REMOVE",
          "FINDING_REMEDIATION_VENDOR",
          "FINDING_REMEDIATION_IMPROVE",
          "FINDING_REMEDIATION_REIMPLEMENT",
          "FINDING_REMEDIATION_REVIEW",
          "FINDING_REMEDIATION_NOTIFICATION",
          "FINDING_REMEDIATION_PIN"
        ],
        "type": "string"
      },
      "v1FindingSpec": {
        "description": "Finding specific data.",
        "properties": {
          "actions": {
            "$ref": "#/components/schemas/v1Actions"
          },
          "approximation": {
            "description": "True if this finding is for an approximate dependency\nbased on the unresolved package dependencies.",
            "type": "boolean"
          },
          "call_graph_analysis_type": {
            "$ref": "#/components/schemas/v1CallGraphAnalysisType"
          },
          "code_owners": {
            "$ref": "#/components/schemas/v1CodeOwnerData"
          },
          "dependency_file_paths": {
            "description": "List of relative paths to the dependency files used to create the bom, if\napplicable. This field is optional and is only set when the source code\nof the package version is known. For example, for Golang it contains\ngo.mod and go.sum.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dismiss": {
            "description": "Set to true to exclude finding from action policies\n(a.k.a. admission and notification policies).\nFindings can be dismissed in bulk by exception policies\nand/or individually via the snooze parameters or\nthe ignore file.",
            "type": "boolean"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "exceptions": {
            "$ref": "#/components/schemas/v1Exceptions"
          },
          "explanation": {
            "description": "Information about why this finding is considered noteworthy.",
            "type": "string"
          },
          "extra_key": {
            "description": "Additional information used to create a unique finding.\n\nIn some cases we want to create multiple findings for the same\ncombination of parent_uuid, meta.name, and target_uuid, for example when\nthere are multiple vulnerabilities affecting the same dependency. By\nsetting different values in this field, we are able to create a unique\nfinding per combination of parent_uuid, meta.name, target_uuid, and\nextra_key.",
            "type": "string"
          },
          "finding_categories": {
            "description": "List of categories that capture the use case the finding fits in.",
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "finding_metadata": {
            "$ref": "#/components/schemas/v1FindingMetadata"
          },
          "finding_tags": {
            "description": "List of tags, or attributes, that describe the scope of the finding\nand can be used to filter findings.",
            "items": {
              "$ref": "#/components/schemas/v1FindingTags"
            },
            "type": "array"
          },
          "fixing_patch": {
            "$ref": "#/components/schemas/v1FindingFixingPatch"
          },
          "fixing_upgrades": {
            "$ref": "#/components/schemas/v1FindingFixingUpgrades"
          },
          "ignore": {
            "$ref": "#/components/schemas/v1DismissParams"
          },
          "last_processed": {
            "description": "Last time the finding was processed.",
            "format": "date-time",
            "type": "string"
          },
          "latest_version": {
            "description": "Latest version of dependency, if available.",
            "type": "string"
          },
          "level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "location_urls": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The URLs that correspond to the paths contained in dependency_file_paths.",
            "type": "object"
          },
          "method": {
            "$ref": "#/components/schemas/v1SystemEvaluationMethodDefinition"
          },
          "project_uuid": {
            "description": "The UUID of the project to which this finding belongs.",
            "type": "string"
          },
          "proposed_version": {
            "description": "Recommended version of dependency if available.",
            "type": "string"
          },
          "reachable_paths": {
            "description": "Function paths to the vulnerable method.\nOnly applies to vulnerability findings.",
            "items": {
              "$ref": "#/components/schemas/FindingSpecPath"
            },
            "type": "array"
          },
          "relationship": {
            "description": "String describing the relationship to dependency,\nFor example, \"Foo is a direct dependency of bar.\", if applicable.",
            "type": "string"
          },
          "remediation": {
            "description": "String describing the recommended remediation to fix this finding.",
            "type": "string"
          },
          "remediation_action": {
            "$ref": "#/components/schemas/v1FindingRemediation"
          },
          "snooze": {
            "$ref": "#/components/schemas/v1DismissParams"
          },
          "source_code_version": {
            "$ref": "#/components/schemas/v1Version"
          },
          "summary": {
            "description": "A more detailed description of the finding.",
            "type": "string"
          },
          "target_dependency_name": {
            "description": "Dependency package name, if applicable.\nThis is just the name (i.e. it does not include the ecosystem or the\nversion).",
            "type": "string"
          },
          "target_dependency_native_scope": {
            "description": "Un-normalized native dependency scope from the package manager\n(e.g. Maven \"provided\"). Empty if none.",
            "type": "string"
          },
          "target_dependency_package_name": {
            "description": "Fully qualified name of the dependency, e.g. eco://package@version, if\napplicable.",
            "type": "string"
          },
          "target_dependency_version": {
            "description": "Dependency version, if applicable.\nThis is just the version (i.e. it does not include the ecosystem or the\npackage name).",
            "type": "string"
          },
          "target_uuid": {
            "description": "The UUID of the DependencyMetadata object for the dependency, if\napplicable.",
            "type": "string"
          }
        },
        "required": [
          "project_uuid",
          "last_processed",
          "level",
          "summary",
          "finding_tags",
          "target_uuid",
          "extra_key"
        ],
        "type": "object"
      },
      "v1FindingSummaryInfo": {
        "description": "FindingSummaryInfo contains some selected fields for a finding.",
        "properties": {
          "description": {
            "type": "string"
          },
          "finding_categories": {
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "finding_tags": {
            "items": {
              "$ref": "#/components/schemas/v1FindingTags"
            },
            "type": "array"
          },
          "level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "name": {
            "type": "string"
          },
          "parent_uuid": {
            "type": "string"
          },
          "target_dependency_package_name": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1FindingTags": {
        "default": "FINDING_TAGS_UNSPECIFIED",
        "description": "Finding attributes.\n\n - FINDING_TAGS_DIRECT: Finding applies to a direct dependency.\n - FINDING_TAGS_TRANSITIVE: Finding applies to a transitive (indirect) dependency.\n - FINDING_TAGS_PROJECT_INTERNAL: Finding applies to a dependency that belongs to the same project.\n - FINDING_TAGS_NAMESPACE_INTERNAL: Finding applies to a dependency that belongs to the same namespace.\n - FINDING_TAGS_REACHABLE_DEPENDENCY: Finding applies to a reachable dependency.\n - FINDING_TAGS_UNREACHABLE_DEPENDENCY: Finding applies to an unreachable dependency.\n - FINDING_TAGS_POTENTIALLY_REACHABLE_DEPENDENCY: Finding applies to a potentially reachable dependency.\n - FINDING_TAGS_REACHABLE_FUNCTION: Finding applies to a reachable function.\n - FINDING_TAGS_UNREACHABLE_FUNCTION: Finding applies to an unreachable function.\n - FINDING_TAGS_POTENTIALLY_REACHABLE_FUNCTION: Finding applies to a potentially reachable function.\n - FINDING_TAGS_FIXABLE: Deprecated.\n - FINDING_TAGS_UNFIXABLE: Finding is unfixable.\n - FINDING_TAGS_PRODUCTION: Deprecated.\n - FINDING_TAGS_TEST: Finding applies to a dependency not in production code.\n - FINDING_TAGS_NORMAL: Finding applies to a normal, non-test, dependency.\n - FINDING_TAGS_FIX_AVAILABLE: There is a fix available for the CVE reported in this finding.\n - FINDING_TAGS_SELF: Finding applies only to the analyzed package version, there is no\ndependency involved.\n - FINDING_TAGS_POLICY: Deprecated.\n - FINDING_TAGS_CI_BLOCKER: Finding caused a CI failure.\n - FINDING_TAGS_VALID_SECRET: Finding applies to a valid secret.\n - FINDING_TAGS_INVALID_SECRET: Finding applies to an invalid secret.\n - FINDING_TAGS_PATH_EXTERNAL: Finding applies to a transitive dependency that can only be reached via\nexternal, non-OSS, project paths.\n - FINDING_TAGS_MALWARE: Finding applies to malicious package.\n - FINDING_TAGS_UNDER_REVIEW: Finding applies to suspicious package under review.\n - FINDING_TAGS_PHANTOM: Finding applies to a phantom dependency.\n - FINDING_TAGS_EXCEPTION: Finding is exempt from action policies.\n - FINDING_TAGS_CI_WARNING: Finding caused a CI warning.\n - FINDING_TAGS_NOTIFICATION: Finding triggered a notification.\n - FINDING_TAGS_EXPLOITED: This vulnerability is known to be exploited.\n - FINDING_TAGS_DISPUTED: This vulnerability has been marked as 'disputed'.\n - FINDING_TAGS_WITHDRAWN: This vulnerability has been marked as 'withdrawn'.\n - FINDING_TAGS_FALSE_POSITIVE: This finding has been analyzed to be a false positive.\n - FINDING_TAGS_TRUE_POSITIVE: This finding has been analyzed to be a true positive.\n - FINDING_TAGS_SNOOZED: Finding has been snoozed.\n - FINDING_TAGS_AI: This finding was generated using AI.\n - FINDING_TAGS_IGNORED: Finding has been ignored via the ignore file.\n - FINDING_TAGS_SEGMENT_MATCH: Finding applies to a dependency discovered via segment-matching.\n - FINDING_TAGS_REACHABLE_BY_INCLUSION: The vulnerability is assumed reachable because the package is included;\nno call path to a vulnerable function exists.\n - FINDING_TAGS_POTENTIALLY_VALID_SECRET: Finding applies to a secret that has not been validated.",
        "enum": [
          "FINDING_TAGS_UNSPECIFIED",
          "FINDING_TAGS_DIRECT",
          "FINDING_TAGS_TRANSITIVE",
          "FINDING_TAGS_PROJECT_INTERNAL",
          "FINDING_TAGS_NAMESPACE_INTERNAL",
          "FINDING_TAGS_REACHABLE_DEPENDENCY",
          "FINDING_TAGS_UNREACHABLE_DEPENDENCY",
          "FINDING_TAGS_POTENTIALLY_REACHABLE_DEPENDENCY",
          "FINDING_TAGS_REACHABLE_FUNCTION",
          "FINDING_TAGS_UNREACHABLE_FUNCTION",
          "FINDING_TAGS_POTENTIALLY_REACHABLE_FUNCTION",
          "FINDING_TAGS_FIXABLE",
          "FINDING_TAGS_UNFIXABLE",
          "FINDING_TAGS_PRODUCTION",
          "FINDING_TAGS_TEST",
          "FINDING_TAGS_NORMAL",
          "FINDING_TAGS_FIX_AVAILABLE",
          "FINDING_TAGS_SELF",
          "FINDING_TAGS_POLICY",
          "FINDING_TAGS_CI_BLOCKER",
          "FINDING_TAGS_VALID_SECRET",
          "FINDING_TAGS_INVALID_SECRET",
          "FINDING_TAGS_PATH_EXTERNAL",
          "FINDING_TAGS_MALWARE",
          "FINDING_TAGS_UNDER_REVIEW",
          "FINDING_TAGS_PHANTOM",
          "FINDING_TAGS_EXCEPTION",
          "FINDING_TAGS_CI_WARNING",
          "FINDING_TAGS_NOTIFICATION",
          "FINDING_TAGS_EXPLOITED",
          "FINDING_TAGS_DISPUTED",
          "FINDING_TAGS_WITHDRAWN",
          "FINDING_TAGS_FALSE_POSITIVE",
          "FINDING_TAGS_TRUE_POSITIVE",
          "FINDING_TAGS_SNOOZED",
          "FINDING_TAGS_AI",
          "FINDING_TAGS_IGNORED",
          "FINDING_TAGS_SEGMENT_MATCH",
          "FINDING_TAGS_REACHABLE_BY_INCLUSION",
          "FINDING_TAGS_POTENTIALLY_VALID_SECRET"
        ],
        "type": "string"
      },
      "v1FindingUpgradeBreakdown": {
        "description": "Protobuf definition for FindingUpgradeBreakdown.",
        "properties": {
          "current_count": {
            "description": "The finding count in the current version across all severities.",
            "format": "int32",
            "type": "integer"
          },
          "fixed_findings": {
            "description": "Fixed findings.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reduction": {
            "description": "The reduction in findings across all severities.",
            "format": "int32",
            "type": "integer"
          },
          "severity": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1FindingUpgradeInfo"
            },
            "description": "The breakdown of finding information per severity level.",
            "type": "object"
          },
          "upgrade_count": {
            "description": "The finding count in the upgrade version across all severities.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1FindingUpgradeInfo": {
        "description": "Protobuf definition for FindingUpgradeInfo.",
        "properties": {
          "current_count": {
            "description": "The finding count in the current version.",
            "format": "int32",
            "type": "integer"
          },
          "fixed": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1Finding"
            },
            "description": "The findings fixed.",
            "type": "object"
          },
          "fixed_count": {
            "description": "The number of total findings fixed by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "fixed_summary": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1FindingSummaryInfo"
            },
            "description": "The findings fixed. Summary information only.",
            "type": "object"
          },
          "introduced": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1Finding"
            },
            "description": "The findings introduced.",
            "type": "object"
          },
          "introduced_count": {
            "description": "The number of total findings introduced by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "introduced_summary": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1FindingSummaryInfo"
            },
            "description": "The findings introduced. Summary information only.",
            "type": "object"
          },
          "reachable_fixed_count": {
            "description": "The number of reachable findings fixed by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "reachable_introduced_count": {
            "description": "The number of reachable findings introduced by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "reduction": {
            "description": "Overall reduction in findings.",
            "format": "int32",
            "type": "integer"
          },
          "upgrade_count": {
            "description": "The finding count in the upgrade version.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1FunctionChange": {
        "description": "Protobuf definition for FunctionChange.",
        "properties": {
          "defined": {
            "type": "boolean"
          },
          "diff_change": {
            "$ref": "#/components/schemas/v1ChangeType"
          },
          "function_reference": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "modifier_change": {
            "$ref": "#/components/schemas/v1ModifierChangeType"
          }
        },
        "type": "object"
      },
      "v1Fuzzy": {
        "description": "Fuzzy is used to search for a similar string. Parameters\ndetermine the deviation.",
        "properties": {
          "max_edits": {
            "format": "int32",
            "type": "integer"
          },
          "max_expansion": {
            "format": "int32",
            "type": "integer"
          },
          "prefix_length": {
            "format": "int32",
            "type": "integer"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "type": "object"
      },
      "v1Gated": {
        "properties": {
          "disabled": {
            "type": "boolean"
          },
          "mode_type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1GemSpec": {
        "description": "GemSpec represents a configuration for the Ruby gems package manager.",
        "properties": {
          "basic_auth": {
            "$ref": "#/components/schemas/endorv1BasicAuth"
          },
          "password": {
            "description": "An encrypted password that must be provided by the repository owner.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of the Ruby gems package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "token_auth": {
            "$ref": "#/components/schemas/v1TokenAuth"
          },
          "url": {
            "description": "The URL of the registry that the Ruby gems package manager must use.",
            "type": "string"
          },
          "user": {
            "description": "The user name to use to access this repository.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1GitHubConfig": {
        "properties": {
          "app_id": {
            "description": "The app id of the installation.",
            "type": "string"
          },
          "enable_full_scan": {
            "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled.",
            "type": "boolean"
          },
          "enable_pr_comments": {
            "description": "enable_pr_comments is a boolean value that indicates if the automated PR\ncomments should be enabled.",
            "type": "boolean"
          },
          "enable_pr_scans": {
            "description": "enable_pr_scans is a boolean value that indicates if the automated PR scans\nare enabled.",
            "type": "boolean"
          },
          "host_url": {
            "description": "The base URL of the corresponding SCM app.",
            "type": "string"
          },
          "include_archived_repos": {
            "description": "include_archived_repos is a boolean value that indicates if the archived\nrepos should be included. Default will be off.",
            "type": "boolean"
          },
          "installation_github_user": {
            "readOnly": true,
            "title": "installation_github_user is the Github user that initiated the installation",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1GitHubPRConfig": {
        "description": "GitHubPRConfig configures automated GitHub pull requests for remediations.\nDeprecated: Use RemediationPRConfig, which supports all SCM platforms.",
        "properties": {
          "enabled": {
            "description": "Turns the creation of automated pull requests on or off for this target.",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "v1GitHubWorkflows": {
        "description": "GitHubWorkflows Metric Value contains information about the workflow file's code posture management.",
        "properties": {
          "workflows": {
            "items": {
              "$ref": "#/components/schemas/GitHubWorkflowsWorkflow"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1GitLabConfig": {
        "properties": {
          "enable_full_scan": {
            "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled.",
            "type": "boolean"
          },
          "enable_mr_comments": {
            "description": "enable_mr_comments is a boolean value that indicates if the automated MR\ncomments should be enabled.",
            "type": "boolean"
          },
          "enable_mr_scans": {
            "description": "enable_mr_scans is a boolean value that indicates if the automated MR scans\nare enabled.",
            "type": "boolean"
          },
          "host_url": {
            "description": "The URL of the group/sub-group.",
            "type": "string"
          },
          "personal_access_token": {
            "description": "PAT of the user doing integration to fetch resources using REST APIs.",
            "type": "string"
          },
          "webhook_secret": {
            "description": "The webhook secret configured in GitLab for validating incoming webhook\nevents.",
            "type": "string"
          }
        },
        "required": [
          "host_url"
        ],
        "type": "object"
      },
      "v1GitSpec": {
        "description": "Git repository project configuration.\n\nFields of this object might differ from the Git host.",
        "properties": {
          "external_installation_id": {
            "description": "Endor Labs GitHub app installation ID of this project.\nOptional and only available if the project is created through an\ninstallation.",
            "format": "int64",
            "type": "string"
          },
          "full_name": {
            "description": "Represents the Git namespace and its associated hierarchy.\n\nThe format is \"namespace/name\", comprising the organization name and\nrepository name.\n\nFor example, yarpc/yarpc-go\n\nGitHub: curl https://api.github.com/repos/yarpc/yarpc-go | jq .full_name",
            "readOnly": true,
            "type": "string"
          },
          "git_clone_url": {
            "description": "The Git clone URL.\nFor example, git://github.com/yarpc/yarpc-go.git.\n\nThe URL is stored as lower case letters to normalize searches.",
            "readOnly": true,
            "type": "string"
          },
          "http_clone_url": {
            "description": "The HTTP clone URL.\n\nThe following examples show valid URLs.\n\nhttps://github.com/yarpc/yarpc-go.git\n\nhttp://github.com/yarpc/yarpc-go.git\n\nhttps://my.github.com/a/b.git\n\nhttps://www.gitlab.com/a/b/c.git\n\nhttps://github.com/eclipse-vertx/vert.x.git\n\nhttps://github.com/jboss/jboss-ejb-api_spec.git\n\nThe URL is stored as lower case letters to normalize searches.",
            "type": "string"
          },
          "invalid_installation": {
            "description": "Indicates that Endor Labs installation no longer exists\nfor this project and was potentially deleted. Endor Labs can no longer\nrefresh or rescan this project.",
            "type": "boolean"
          },
          "organization": {
            "description": "The organization where the repository is located.\n\nFor example, yarpc\n\nGitHub: curl https://api.github.com/repos/yarpc/yarpc-go | jq\n.organization.login",
            "readOnly": true,
            "type": "string"
          },
          "path": {
            "description": "The source control repository in the project without the organization.\n\nFor example, yarpc-go\n\nGitHub: curl https://api.github.com/repos/yarpc/yarpc-go | jq .name",
            "readOnly": true,
            "type": "string"
          },
          "web_url": {
            "description": "The web URL to view the repository.\n\nFor example, https://github.com/yarpc/yarpc-go\n\nGitHub: curl https://api.github.com/repos/yarpc/yarpc-go | jq .html_url\n\nThe URL is stored as lower case letters to normalize searches.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "http_clone_url"
        ],
        "type": "object"
      },
      "v1GolangToolChain": {
        "properties": {
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1GradleSpec": {
        "description": "GradleSpec represents properties that need to be set for Gradle projects.",
        "properties": {
          "mtls": {
            "$ref": "#/components/schemas/v1MTLSAuth"
          },
          "property_key_name": {
            "description": "The key name for Gradle properties.",
            "type": "string"
          },
          "property_key_value": {
            "description": "The key value for Gradle properties.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1GroupAggregationValueResponse": {
        "description": "GroupAggregationValueResponse returns the value of the aggregation if\nrequested.",
        "properties": {
          "value": {
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "v1GroupResponse": {
        "description": "Response to a list group request.",
        "properties": {
          "groups": {
            "additionalProperties": {
              "$ref": "#/components/schemas/GroupResponseGroupData"
            },
            "description": "Map indexed by values of the fields specified in aggregation_paths,\nfor example, {\"[{\"key\":\"meta.kind\",\"value\":\"Project\"}]\": {\n\"aggregation_count\": { \"count\": 1649 } } }.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1HttpHmacAuth": {
        "description": "HMAC information.",
        "properties": {
          "hdr_name": {
            "description": "The name of the header field that contains the signature.",
            "type": "string"
          },
          "secret": {
            "description": "The secret to use for the HMAC calculation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1HttpParam": {
        "description": "HttpParam is the key/value pair that will be rendered as \"Key: Value\"\nin the section of the requested portion of the HTTP request. It could\nbe part of the request like the header, the query, or the body.\n\nIf the authz flag is set, the library will render it as\n\"Authorization: Key Value\" instead of just \"Key: Value\".",
        "properties": {
          "authz": {
            "title": "If set, render the key-value as \"Authorization: Key Value\"\ninstead of just \"Key: Value\". The supported keys are the ones\nspecified in the Authorization enum (as string)",
            "type": "boolean"
          },
          "key": {
            "description": "The key for this pair.",
            "type": "string"
          },
          "separator": {
            "description": "The separator to use between key and value. Default is \":\".",
            "type": "string"
          },
          "value": {
            "description": "The value.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1HttpParamsProfile": {
        "description": "HttpParamsProfile defines the parameters to create an HTTP request.",
        "properties": {
          "allowed_template_params": {
            "items": {
              "$ref": "#/components/schemas/HttpParamsProfileAllowedTemplateParam"
            },
            "readOnly": true,
            "title": "AllowedTemplateParams defines a list of allowed template parameter names and regexes for validating their values.\nOnly the template parameters with names in this list will be allowed in the template_params field.\nExample: [{\"name\": \"TEMPLATE_PARAM_NAME_CLIENT_ID\", \"regex\": \"abc[0-9]{3}\"}, {\"name\": \"TEMPLATE_PARAM_NAME_TENANT_ID\", \"regex\": \"xyz[0-9]{3}\"}]",
            "type": "array"
          },
          "description": {
            "description": "Detailed description of the request. For example, \"GitHub credential validation\".",
            "type": "string"
          },
          "h_request": {
            "$ref": "#/components/schemas/v1HttpParamsRequest"
          },
          "h_response": {
            "$ref": "#/components/schemas/v1HttpParamsResponse"
          },
          "hmac_auth": {
            "$ref": "#/components/schemas/v1HttpHmacAuth"
          },
          "http_request": {
            "$ref": "#/components/schemas/v1HttpParamsRequest"
          },
          "http_response": {
            "$ref": "#/components/schemas/v1HttpParamsResponse"
          },
          "name": {
            "title": "Name identifies this entry. For example, \"GitHub\"",
            "type": "string"
          },
          "request_body": {
            "description": "Request body as a string. This will be sent as the body of the HTTP request.\nIf both request_body and the body parameter in SendRequest are provided,\nthe body parameter takes precedence.",
            "type": "string"
          },
          "template_params": {
            "items": {
              "$ref": "#/components/schemas/HttpParamsProfileTemplateParams"
            },
            "title": "Template parameter values to use when required template parameters are not found\nin the vicinity of the secret for validation. Each entry represents a set of values that can be\ntried in sequence during validation.\nExample: [{\"values\": [{\"name\": \"TEMPLATE_PARAM_NAME_CLIENT_ID\", \"value\": \"abc123\"}, {\"name\": \"TEMPLATE_PARAM_NAME_TENANT_ID\", \"value\": \"xyz789\"}]}]",
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1HttpParamsRequest": {
        "description": "HttpParamsRequest contains the information expected with the HTTP request.",
        "properties": {
          "body": {
            "description": "The information to be put in the HTTP body.",
            "items": {
              "$ref": "#/components/schemas/v1HttpParam"
            },
            "type": "array"
          },
          "header": {
            "description": "The information to be put in the HTTP header.",
            "items": {
              "$ref": "#/components/schemas/v1HttpParam"
            },
            "type": "array"
          },
          "method": {
            "description": "Method is either GET or POST.",
            "type": "string"
          },
          "method_name": {
            "description": "Gets appended to the URL as:\nURL[:method_name] usually followed by the query section.",
            "type": "string"
          },
          "query": {
            "description": "The information to be put in the HTTP query section.",
            "items": {
              "$ref": "#/components/schemas/v1HttpParam"
            },
            "type": "array"
          },
          "uri": {
            "title": "The URI to use for this validation. For example, \"https://api.github.com/user\"",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1HttpParamsResponse": {
        "description": "HttpParamsResponse contains the information expected with the HTTP response.",
        "properties": {
          "failed_auth_codes": {
            "description": "The codes expected on the failed authentication.",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "type": "array"
          },
          "invalid_code_regex": {
            "description": "The pattern/regex expected on failure. For example, \"5\\\\d\\\\d\".",
            "type": "string"
          },
          "status_code": {
            "description": "The code expected on success. For example, 200.",
            "type": "string"
          },
          "successful_auth_codes": {
            "description": "The codes expected for a successful authentication.",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "type": "array"
          },
          "successful_response_data": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of key-value pairs that must be present in the response body for successful validation.\nThis allows validation beyond just HTTP status codes.\nExample: {\"ok\": \"true\", \"status\": \"active\"} would require the response to contain both keys\nwith matching values. The response can contain additional fields.",
            "type": "object"
          },
          "successful_response_text": {
            "description": "The expected response body text for successful validation.\nExample: \"invalid_payload\" would require the response body to contain the text \"invalid_payload\".\nThe response body may contain additional text.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1HuggingFaceConfig": {
        "properties": {
          "access_token": {
            "description": "Optional HuggingFace API token used to authenticate requests for\nprivate models within the organization. When omitted, only publicly\naccessible models are discovered.",
            "type": "string"
          },
          "avatar_url": {
            "description": "Avatar URL of the HuggingFace organization.",
            "type": "string"
          },
          "host_url": {
            "title": "The HuggingFace organization URL.\nExample: \"https://huggingface.co/meta-llama\"",
            "type": "string"
          }
        },
        "required": [
          "host_url"
        ],
        "type": "object"
      },
      "v1HuggingFaceModel": {
        "description": "HuggingFaceModel represents the JSON object from ingesting from the HuggingFace API.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1HuggingFaceModelSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID for the ingested HuggingFace model.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1HuggingFaceModelSpec": {
        "properties": {
          "author": {
            "description": "Author of the model. For example, \"openai\".",
            "type": "string"
          },
          "authorization_required": {
            "description": "Requires authorized request to access the model.",
            "type": "boolean"
          },
          "card_data": {
            "description": "Model card metadata.",
            "type": "object"
          },
          "config": {
            "description": "Model configuration.",
            "type": "object"
          },
          "config_content": {
            "description": "config.json file content.",
            "type": "string"
          },
          "created_at": {
            "description": "Date of creation of the repository on the Hub.",
            "format": "date-time",
            "type": "string"
          },
          "disabled": {
            "description": "Whether the repository is disabled or not.",
            "type": "boolean"
          },
          "discussions": {
            "$ref": "#/components/schemas/v1Discussion"
          },
          "downloads": {
            "description": "Number of downloads of the model.",
            "format": "int32",
            "type": "integer"
          },
          "gated": {
            "$ref": "#/components/schemas/v1Gated"
          },
          "id": {
            "description": "ID of model (_id).",
            "type": "string"
          },
          "last_modified": {
            "description": "Date of last commit to the repository.",
            "format": "date-time",
            "type": "string"
          },
          "library_name": {
            "description": "Library associated with the model.",
            "type": "string"
          },
          "likes": {
            "description": "Number of likes of the model.",
            "format": "int32",
            "type": "integer"
          },
          "mask_token": {
            "description": "Mask token used by the model.",
            "type": "string"
          },
          "model_id": {
            "description": "Author and model name (seems to hold the same value as the name field).",
            "type": "string"
          },
          "model_index": {
            "description": "Model index for evaluation.",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "description": "Author and model name (id). For example, \"openai/clip-vit-base-patch16\".",
            "type": "string"
          },
          "organization_name": {
            "description": "Organization name for which this model belongs to.",
            "type": "string"
          },
          "pipeline_tag": {
            "description": "Pipeline tag associated with the model.",
            "type": "string"
          },
          "private": {
            "description": "Whether the repository is private not.",
            "type": "boolean"
          },
          "project_uuid": {
            "description": "The UUID of the project that this model relates to.",
            "type": "string"
          },
          "pull_requests": {
            "$ref": "#/components/schemas/v1Discussion"
          },
          "readme_content": {
            "description": "README.md file content.",
            "type": "string"
          },
          "readme_metadata": {
            "$ref": "#/components/schemas/v1ReadmeMetadata"
          },
          "safetensors": {
            "description": "Model's safetensors information.",
            "type": "object"
          },
          "sha": {
            "description": "Repository SHA at this particular revision.",
            "type": "string"
          },
          "siblings": {
            "description": "List of files that constitute the model.",
            "items": {
              "$ref": "#/components/schemas/v1Sibling"
            },
            "type": "array"
          },
          "spaces": {
            "description": "List of spaces using the model.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tags": {
            "description": "List of tags of the model.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transformers_info": {
            "description": "Transformers-specific information associated with the model.",
            "type": "object"
          },
          "widget_data": {
            "description": "Widget data associated with the model.",
            "items": {
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "project_uuid"
        ],
        "type": "object"
      },
      "v1HuggingFaceOrganization": {
        "description": "HuggingFaceOrganization represents a HuggingFace organization and its associated metadata.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1HuggingFaceOrganizationSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID for the HuggingFace organization.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1HuggingFaceOrganizationSpec": {
        "properties": {
          "model_names": {
            "description": "Names of models that belong to this organization.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "organization_name": {
            "description": "Name of the HuggingFace organization.",
            "type": "string"
          },
          "url": {
            "description": "URL of the HuggingFace organization page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1IOCType": {
        "default": "IOC_TYPE_UNSPECIFIED",
        "description": "IOCType classifies the type of Indicator of Compromise.",
        "enum": [
          "IOC_TYPE_UNSPECIFIED",
          "IOC_TYPE_URL",
          "IOC_TYPE_IP",
          "IOC_TYPE_DOMAIN",
          "IOC_TYPE_FILENAME",
          "IOC_TYPE_FILEPATH",
          "IOC_TYPE_DIGEST_SHA1",
          "IOC_TYPE_DIGEST_SHA256",
          "IOC_TYPE_DIGEST_SHA512",
          "IOC_TYPE_DIGEST_MD5",
          "IOC_TYPE_WALLET_ADDRESS",
          "IOC_TYPE_REGISTRY_ACCOUNT_NAME",
          "IOC_TYPE_REGISTRY_ACCOUNT_EMAIL",
          "IOC_TYPE_DEPENDENCY"
        ],
        "type": "string"
      },
      "v1IPAddressPolicy": {
        "description": "An IPAddressPolicy creates a restriction on which IP address subnets can\naccess a tenant.\nNote that only one IP address policy is allowed per tenant and IP address\npolicies cannot be declared in child namespaces.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.\nIt should be set to true for most use cases.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1IPAddressPolicySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the ip address policy.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1IPAddressPolicySpec": {
        "properties": {
          "allowed_ip_subnets": {
            "description": "The list of allowed IP subnets from where traffic should be\nallowed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allowed_ip_subnets"
        ],
        "type": "object"
      },
      "v1IdentityProvider": {
        "description": "Represents an identity provider.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1IdentityProviderSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of an identify provider.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1IdentityProviderSpec": {
        "properties": {
          "oidc_provider": {
            "$ref": "#/components/schemas/IdentityProviderOIDCProvider"
          },
          "saml_provider": {
            "$ref": "#/components/schemas/v1SAMLProvider"
          }
        },
        "type": "object"
      },
      "v1ImportedRuleSet": {
        "description": "ImportedRuleSet represents a request to import a set of rules.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ImportedRuleSetSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1ImportedRuleSetSpec": {
        "description": "The internal specification of the object.",
        "properties": {
          "bytes": {
            "description": "A file has been used as a source.",
            "format": "byte",
            "type": "string"
          },
          "opengrep_validate": {
            "description": "Validate this import request with opengrep.",
            "type": "boolean"
          },
          "result": {
            "$ref": "#/components/schemas/SpecImportedRuleSetResult"
          },
          "rule_source_type": {
            "$ref": "#/components/schemas/v1RuleSourceType"
          },
          "rule_type": {
            "$ref": "#/components/schemas/v1RuleType"
          },
          "sha256_hash": {
            "description": "The SHA256 checksum if applicable (e.g, file).",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "The version for this rule set. All rules in the set will be created with this version.",
            "type": "string"
          }
        },
        "required": [
          "rule_type"
        ],
        "type": "object"
      },
      "v1ImportedSBOM": {
        "description": "ImportedSBOM represents an SBOM that has been imported.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ImportedSBOMSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "readOnly": true,
            "title": "The UUID of the SBOM",
            "type": "string"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "v1ImportedSBOMSpec": {
        "description": "The internal specification of the object.",
        "properties": {
          "cyclone_dx": {
            "description": "CycloneDX is the cyclonedx bom struct serialized to a string.",
            "type": "string"
          },
          "cyclone_dx_bytes": {
            "description": "CycloneDX bom struct encoded in zstd bytes.",
            "format": "byte",
            "type": "string"
          },
          "identifier": {
            "description": "The unique identifer of the component of a SBOM.\nFor example, a CycloneDX SBOM will have metadata.component.bom-ref as the identifier of the main component.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/v1SBOMKind"
          },
          "main_component_purl": {
            "description": "The PURL of the main component of a SBOM.",
            "readOnly": true,
            "type": "string"
          },
          "spdx": {
            "description": "SPDX is the spdx bom struct serialized to a string.",
            "type": "string"
          },
          "spdx_bytes": {
            "description": "SPDX bom struct encoded in zstd bytes.",
            "format": "byte",
            "type": "string"
          },
          "supplier_name": {
            "description": "The suplier name of the imported SBOM.",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "The version of the imported SBOM.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "v1IndexData": {
        "description": "IndexData is used to index the resource for search. It's an internal\nobject.",
        "properties": {
          "data": {
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "search_score": {
            "description": "search_score is the score of the resource for search. Internal use only.",
            "format": "float",
            "readOnly": true,
            "type": "number"
          },
          "tenant": {
            "readOnly": true,
            "type": "string"
          },
          "will_be_deleted_at": {
            "description": "Time that the resource will be deleted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1IngestedObject": {
        "description": "Raw ingested object from a 3rd party source,\nalong with any additional metadata we want\nto add to the object.",
        "properties": {
          "ingestion_time": {
            "description": "Time the object was last ingested.",
            "format": "date-time",
            "type": "string"
          },
          "raw": {
            "description": "Generic representation of the object.",
            "type": "object"
          },
          "status": {
            "$ref": "#/components/schemas/IngestedObjectIngestedObjectStatus"
          }
        },
        "required": [
          "raw",
          "ingestion_time",
          "status"
        ],
        "type": "object"
      },
      "v1Installation": {
        "description": "Installation represents an installation request in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1InstallationSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the installation.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta"
        ],
        "type": "object"
      },
      "v1InstallationSpec": {
        "properties": {
          "azure_config": {
            "$ref": "#/components/schemas/v1AzureConfig"
          },
          "bitbucket_config": {
            "$ref": "#/components/schemas/v1BitBucketConfig"
          },
          "cleanup_stale_namespaces": {
            "description": "Indicates whether stale managed namespaces that no longer correspond\nto groups or projects in the SCM should be automatically deleted\nduring installation reconciliation. Default value is false.",
            "type": "boolean"
          },
          "enabled_features": {
            "items": {
              "$ref": "#/components/schemas/SpecEnabledFeatureType"
            },
            "title": "Enabled features. The valid values are \"git, github\"",
            "type": "array"
          },
          "exclude_project_regexes": {
            "description": "exclude_project_regexes is a list of RE2 regular expression patterns used\nto exclude repositories from ingestion during SCM integration\nreconciliation. A repository is excluded if its name (leaf name only, not\nthe full URL or path) matches any pattern in this list. Matching is\ncase-sensitive. An empty list means no filtering is applied. Supports a\nmaximum of 20 patterns.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "external_id": {
            "description": "The external ID of the installation.",
            "type": "string"
          },
          "external_name": {
            "description": "The external name of the installation.",
            "readOnly": true,
            "type": "string"
          },
          "github_config": {
            "$ref": "#/components/schemas/v1GitHubConfig"
          },
          "gitlab_config": {
            "$ref": "#/components/schemas/v1GitLabConfig"
          },
          "huggingface_config": {
            "$ref": "#/components/schemas/v1HuggingFaceConfig"
          },
          "include_archived_repos": {
            "description": "include_archived_repos is a boolean value that indicates if the archived\nrepos should be included. Default will be off.",
            "type": "boolean"
          },
          "ingestion_time": {
            "description": "The last time that we ingested the installation data.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "ingestion_token": {
            "description": "The API token that the scanner can use for scanning installation\nrelated information. If it is empty, the scanner will use local\nauthentication information.",
            "readOnly": true,
            "type": "string"
          },
          "installation_error_message": {
            "description": "Message explaining why the installation is invalid.\nThis field is populated when invalid is true.",
            "type": "string"
          },
          "invalid": {
            "description": "Identifies the installations that are in the system,\nbut potentially their corresponding configuration has been removed\nfrom GitHub and thus we cannot authenticate. In this case,\nwe stop trying to re-sync with this installation.",
            "type": "boolean"
          },
          "login": {
            "description": "The login of the account taken directly from the GitHub response\nVS spec.user, which is inferred from the identity token in the request\ncontext.",
            "type": "string"
          },
          "marked_for_deletion": {
            "description": "Indicates the installation is marked for deletion,\nand in next sync call the installation with its related data will be\ndeleted.",
            "type": "boolean"
          },
          "platform_source": {
            "$ref": "#/components/schemas/SpecPlatformSourceType"
          },
          "platform_type": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "project_uuids": {
            "description": "The list of projects that are associated with this installation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "public": {
            "description": "Apply only to public repositories. Default value is false.",
            "type": "boolean"
          },
          "scm_app_uuid": {
            "description": "The UUID of the SCM app being installed.",
            "type": "string"
          },
          "suspended": {
            "description": "Indicates if the installation is suspended.",
            "type": "boolean"
          },
          "target_type": {
            "description": "The target of the installation (Organization or User).",
            "readOnly": true,
            "type": "string"
          },
          "user": {
            "description": "The user name of the user that initiated the installation.\nRefers back to the GitHub user name.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Invitation": {
        "description": "Invitation represents an invitation for a new user in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1InvitationSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the invitation.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1InvitationSpec": {
        "properties": {
          "invitation_state": {
            "$ref": "#/components/schemas/SpecInvitationState"
          },
          "user_email": {
            "description": "The email of the user that we want to invite to the tenant.",
            "type": "string"
          }
        },
        "required": [
          "user_email"
        ],
        "type": "object"
      },
      "v1JIRAConfig": {
        "properties": {
          "api_key": {
            "description": "The API Key to authenticate with Jira.",
            "type": "string"
          },
          "bearer_token": {
            "description": "The bearer token to authenticate with Jira.",
            "type": "string"
          },
          "cloud_id": {
            "description": "The Jira Cloud ID required to route API requests through the Atlassian API gateway.",
            "readOnly": true,
            "type": "string"
          },
          "components": {
            "description": "The Components field in Jira board.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "custom_fields": {
            "items": {
              "$ref": "#/components/schemas/JIRAConfigCustomField"
            },
            "title": "user defined custom fields",
            "type": "array"
          },
          "issue_type": {
            "$ref": "#/components/schemas/JIRAConfigJiraIssueType"
          },
          "jira_child_issue_type": {
            "description": "Child issue type used for dependency aggregation. Optional.\nDefaults to the project's sub-task type when unset.",
            "type": "string"
          },
          "jira_issue_type": {
            "type": "string"
          },
          "labels": {
            "description": "The labels to apply to the Jira issue.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "project_key": {
            "description": "The project key in which the Jira issue is raised as an action for the notification.",
            "type": "string"
          },
          "resolve_state": {
            "description": "The final ticket status after resolving.",
            "type": "string"
          },
          "url": {
            "description": "The Jira endpoint.",
            "type": "string"
          },
          "use_bearer_token": {
            "description": "Denotes if we should use bearer token to authenticate with Jira.",
            "type": "boolean"
          },
          "user_name": {
            "description": "The user name to authenticate with Jira.",
            "type": "string"
          }
        },
        "required": [
          "url",
          "project_key",
          "labels"
        ],
        "type": "object"
      },
      "v1JavaScriptToolChain": {
        "properties": {
          "nodejs_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "npm_packages": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ToolChainVersion"
            },
            "type": "object"
          },
          "pnpm_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "rush_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "yarn_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "nodejs_version"
        ],
        "type": "object"
      },
      "v1JavaToolChain": {
        "properties": {
          "gradle_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "maven_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1LLMContext": {
        "properties": {
          "structured_content": {
            "$ref": "#/components/schemas/LLMContextStructuredContent"
          },
          "unstructured_content": {
            "description": "The unstructured content of the LLM context.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Language": {
        "default": "LANGUAGE_UNSPECIFIED",
        "description": " - LANGUAGE_GOSU: Gosu, a JVM language used by Guidewire applications.",
        "enum": [
          "LANGUAGE_UNSPECIFIED",
          "LANGUAGE_GO",
          "LANGUAGE_JAVA",
          "LANGUAGE_SCALA",
          "LANGUAGE_PYTHON",
          "LANGUAGE_RUST",
          "LANGUAGE_JS",
          "LANGUAGE_RUBY",
          "LANGUAGE_CSHARP",
          "LANGUAGE_PHP",
          "LANGUAGE_TYPESCRIPT",
          "LANGUAGE_KOTLIN",
          "LANGUAGE_SWIFT",
          "LANGUAGE_OBJECTIVEC",
          "LANGUAGE_C",
          "LANGUAGE_CPP",
          "LANGUAGE_SWIFTURL",
          "LANGUAGE_CONAN",
          "LANGUAGE_GOSU"
        ],
        "type": "string"
      },
      "v1Languages": {
        "description": "The languages used and bytes of code for each language in the source control repository.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          }
        },
        "required": [
          "ingested_object"
        ],
        "type": "object"
      },
      "v1LicenseData": {
        "description": "Contains a summary of license information for a project or package.\nThis will be included as the payload of a metric object.",
        "properties": {
          "all_licenses": {
            "description": "All the licenses found by Endor Labs.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseInfo"
            },
            "type": "array"
          },
          "code_licenses": {
            "description": "The licenses found in the source code.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseInfo"
            },
            "type": "array"
          },
          "copyrights": {
            "description": "The list of copyright notices found in source files.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "package_manager_licenses": {
            "description": "The licenses from the package manager.",
            "items": {
              "$ref": "#/components/schemas/v1LicenseInfo"
            },
            "type": "array"
          },
          "repository_license": {
            "$ref": "#/components/schemas/v1LicenseInfo"
          }
        },
        "type": "object"
      },
      "v1LicenseDependency": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LicenseDependencySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the license dependency.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1LicenseDependencyMetadata": {
        "description": "LicenseDependencyMetadata contains license information for a dependency.",
        "properties": {
          "category": {
            "description": "License category (e.g. \"Restricted\").",
            "type": "string"
          },
          "spdx_id": {
            "description": "SPDX license identifier (e.g. \"Apache-2.0\").",
            "type": "string"
          },
          "type": {
            "description": "License classification (based on licenseclassifier by Google).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1LicenseDependencySpec": {
        "properties": {
          "category": {
            "description": "License category.",
            "type": "string"
          },
          "declared": {
            "description": "Whether we classify the license as declared.",
            "type": "boolean"
          },
          "license_name": {
            "description": "Full name of the license.",
            "type": "string"
          },
          "osi_approved": {
            "description": "Indicates if the license is OSI approved.",
            "type": "boolean"
          },
          "package_version_uuids": {
            "description": "Package versions of dependencies with the license.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "spdx_id": {
            "description": "SPDX ID of the license.",
            "type": "string"
          }
        },
        "required": [
          "spdx_id"
        ],
        "type": "object"
      },
      "v1LicenseFileLocation": {
        "description": "LicenseFileLocation represents the location of a license, copyright, or notice in source files.",
        "properties": {
          "end_byte": {
            "description": "The end byte of the license/copyright/notice in the file.",
            "format": "int32",
            "type": "integer"
          },
          "end_line": {
            "description": "The end line of the license/copyright/notice in the file.",
            "format": "int32",
            "type": "integer"
          },
          "relative_path": {
            "description": "The relative path to the file where the license/copyright/notice was found.",
            "type": "string"
          },
          "start_byte": {
            "description": "The start byte of the license/copyright/notice in the file.",
            "format": "int32",
            "type": "integer"
          },
          "start_line": {
            "description": "The start line of the license/copyright/notice in the file.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1LicenseInfo": {
        "description": "LicenseInfo contains information for a license.",
        "properties": {
          "file": {
            "description": "The name of the file where the license was found.",
            "type": "string"
          },
          "file_location": {
            "description": "The line in the file where the license text begins.",
            "format": "int32",
            "type": "integer"
          },
          "mapping_info": {
            "$ref": "#/components/schemas/v1LicenseMappingInfo"
          },
          "matched_text": {
            "description": "The license text that was matched.",
            "type": "string"
          },
          "name": {
            "description": "Raw license description as found, for example in package managers.\nIt is free form text that may not contain a valid SPDX ID.",
            "type": "string"
          },
          "spdxid": {
            "description": "Normalized SPDX id if known.",
            "type": "string"
          },
          "type": {
            "description": "License classification (based on licenseclassifier by Google).",
            "type": "string"
          },
          "url": {
            "description": "The URL that points to the license description.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "v1LicenseMappingInfo": {
        "default": "LICENSE_MAPPING_INFO_UNSPECIFIED",
        "description": "LicenseMappingInfo contains additional information\nthat we determine when we attempt to match a license string\nto a known SPDX id.\n\n - LICENSE_MAPPING_INFO_NOT_OSS: This does not look to like an OSS license.\n - LICENSE_MAPPING_INFO_IN_CODE: License information is to be found in the code.\n - LICENSE_MAPPING_INFO_UNKNOWN: Cannot determine anything about the license.\n - LICENSE_MAPPING_INFO_NOT_INCOMPLETE: There is some license information, but is not detailed enough.\n - LICENSE_MAPPING_INFO_PRIVATE: Appears to be a private package.\n - LICENSE_MAPPING_INFO_EXACT: An exact match to a SPDX id.\n - LICENSE_MAPPING_INFO_UNLICENSED: Seems to be explicitly without license.",
        "enum": [
          "LICENSE_MAPPING_INFO_UNSPECIFIED",
          "LICENSE_MAPPING_INFO_NOT_OSS",
          "LICENSE_MAPPING_INFO_IN_CODE",
          "LICENSE_MAPPING_INFO_UNKNOWN",
          "LICENSE_MAPPING_INFO_NOT_INCOMPLETE",
          "LICENSE_MAPPING_INFO_PRIVATE",
          "LICENSE_MAPPING_INFO_EXACT",
          "LICENSE_MAPPING_INFO_UNLICENSED"
        ],
        "type": "string"
      },
      "v1LicenseNoticesReport": {
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LicenseNoticesReportSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the license notices report.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1LicenseNoticesReportSpec": {
        "properties": {
          "contents": {
            "description": "The contents of the license notices report.",
            "format": "byte",
            "type": "string"
          },
          "grouping": {
            "$ref": "#/components/schemas/LicenseNoticesReportSpecGrouping"
          },
          "package_license_edit_uuid": {
            "description": "Deprecated: not used by current implementations; kept for wire compatibility.",
            "readOnly": true,
            "type": "string"
          },
          "package_version_uuid": {
            "description": "UUID of the package version for which this report is generated.\nHandlers should use the same propagation/merge semantics as MergedLicenseData\nwhen assembling the effective licenses, copyrights, and notices.",
            "type": "string"
          },
          "report_type": {
            "$ref": "#/components/schemas/LicenseNoticesReportSpecReportType"
          }
        },
        "required": [
          "grouping",
          "report_type",
          "package_version_uuid"
        ],
        "type": "object"
      },
      "v1LicenseSummary": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LicenseSummarySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the license summary.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1LicenseSummarySpec": {
        "properties": {
          "copyright_count": {
            "description": "The number of copyrights found in the project dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "declared_spdx_ids": {
            "description": "The declared SPDX IDs per license associated with the project.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "notices_count": {
            "description": "The number of notice files found in the project dependencies.",
            "format": "int32",
            "type": "integer"
          },
          "singular_spdx_ids": {
            "description": "The singular SPDX IDs of all licenses associated with the project.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "spdx_ids": {
            "description": "The SPDX IDs per license associated with the project.\nThis includes declared and discovered licenses.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1LinterCorrectnessAnalysis": {
        "description": "LinterCorrectnessAnalysis represents an analysis of a linter result.",
        "properties": {
          "analysis_summary": {
            "description": "Analysis summary, providing an explanation of the linter result and classification.",
            "type": "string"
          },
          "analyzer": {
            "$ref": "#/components/schemas/v1CorrectnessAnalyzer"
          },
          "code_fixes": {
            "description": "Code fixes are potential fixes to the identified issue.",
            "items": {
              "$ref": "#/components/schemas/LinterCorrectnessAnalysisCodeFix"
            },
            "type": "array"
          },
          "code_references": {
            "description": "Textual description of line references/ fields/variables , etc for the linter result.",
            "type": "string"
          },
          "confidence_level": {
            "$ref": "#/components/schemas/v1AIMetaConfidenceLevel"
          },
          "content_hash": {
            "description": "sha256 over the source spans (finding location + taint dataflow) this analysis\nwas computed against; a mismatch on rescan invalidates the cached verdict and\nforces re-analysis of the result.",
            "type": "string"
          },
          "correctness": {
            "$ref": "#/components/schemas/v1Correctness"
          },
          "data_flow": {
            "description": "Textual Description of the source to sink data flow analysis for the linter result.",
            "items": {
              "$ref": "#/components/schemas/LinterCorrectnessAnalysisDataFlowNode"
            },
            "type": "array"
          },
          "description": {
            "description": "The textual description of the linter correctness analysis.",
            "type": "string"
          },
          "risk_assessment": {
            "description": "Risk assessment for the linter result. Provides False/True positive classifaction and reasoning for the linter result..",
            "type": "string"
          },
          "sanitizers": {
            "description": "The sanitizers used to determine the correctness of the linter result.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "security_control": {
            "description": "Description of any sanitizers, validators, or mitigations found (or lack thereof) for the linter result.",
            "type": "string"
          },
          "security_impact": {
            "description": "Description of the security impact/potential consequences for the linter result.",
            "type": "string"
          },
          "symbols": {
            "description": "Key variables/symbols in the data flow path for the linter result.",
            "type": "string"
          },
          "technical_detail": {
            "description": "Further technical details (eg results about the vulnerability type and exploitation potential) for the linter result.",
            "type": "string"
          },
          "version": {
            "description": "The version of the linter correctness analysis.",
            "type": "string"
          }
        },
        "required": [
          "version",
          "analyzer",
          "correctness",
          "confidence_level"
        ],
        "type": "object"
      },
      "v1LinterResult": {
        "description": "The meta parent_kind can take one of two values - PackageVersion or RepositoryVersion.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1LinterResultSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a linter result.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1LinterResultInfo": {
        "description": "A brief summary of linter results.",
        "properties": {
          "category": {
            "description": "The category of the result.",
            "type": "string"
          },
          "confidence": {
            "description": "The confidence of the result.",
            "type": "string"
          },
          "critical_api_category": {
            "description": "The critical API category of the result.",
            "type": "string"
          },
          "file": {
            "description": "The file where the result was found.",
            "type": "string"
          },
          "likelihood": {
            "description": "The likelihood of the result.",
            "type": "string"
          },
          "line": {
            "description": "The line in the file where the result was found.",
            "format": "int32",
            "type": "integer"
          },
          "match": {
            "description": "The text that matched.",
            "type": "string"
          },
          "rule_id": {
            "description": "The rule that generated the result.",
            "type": "string"
          },
          "severity": {
            "description": "The severity of the result.",
            "type": "string"
          },
          "snippet": {
            "description": "The source code that triggered the result.",
            "type": "string"
          },
          "tags": {
            "description": "The tags of the result.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1LinterResultSpec": {
        "properties": {
          "ai_result": {
            "$ref": "#/components/schemas/v1AIResult"
          },
          "aisast": {
            "$ref": "#/components/schemas/v1AISastSummary"
          },
          "distribution_format": {
            "$ref": "#/components/schemas/v1DistributionFormatType"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "endor_fingerprint": {
            "$ref": "#/components/schemas/SpecEndorFingerprint"
          },
          "extra_key": {
            "description": "Additional information that may result in creating a unique linter result.\nIn some cases we may receive multiple results for the same project and the same file and we\nwant to have multiple entries for the same field like parent_uuid, meta.name, and physical_location.\nBy setting different values in this field, we will be able to create a separate result.\nEssentially, we will have a unique entry per field.",
            "type": "string"
          },
          "fingerprint_count": {
            "format": "int64",
            "type": "integer"
          },
          "fingerprints": {
            "description": "The list and count of found fingerprints. The counter is maintained\nto ease the retrieval of these records in the analytics phase.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "level": {
            "$ref": "#/components/schemas/SpecLinterResultLevel"
          },
          "linter_correctness_analyses": {
            "description": "An analysis of the linter result.",
            "items": {
              "$ref": "#/components/schemas/v1LinterCorrectnessAnalysis"
            },
            "type": "array"
          },
          "origin": {
            "$ref": "#/components/schemas/SpecLinterResultOrigin"
          },
          "project_uuid": {
            "description": "The UUID of the project to which this result is related.",
            "type": "string"
          },
          "ref": {
            "description": "The Git reference of the repository version.",
            "type": "string"
          },
          "sarif_result": {
            "$ref": "#/components/schemas/v1SarifResult"
          },
          "secret": {
            "$ref": "#/components/schemas/v1SecretSummary"
          },
          "semgrep": {
            "$ref": "#/components/schemas/v1SemgrepSummary"
          },
          "storage_location": {
            "description": "The storage location of the package related to this linter result.",
            "type": "string"
          },
          "suppressed": {
            "description": "Result was suppressed by semgrep (e.g. because of a \"nosemgrep\" code annotation).",
            "type": "boolean"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "project_uuid",
          "origin",
          "level",
          "extra_key"
        ],
        "type": "object"
      },
      "v1LinterStats": {
        "description": "The linter statistics message. Included as the payload of a metric object.",
        "properties": {
          "distinct_file_types_with_results": {
            "description": "The count of distinct file types with results.",
            "format": "int32",
            "type": "integer"
          },
          "distinct_rules_with_results": {
            "description": "The count of distint rules with results.",
            "format": "int32",
            "type": "integer"
          },
          "file_cnt_by_category": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count per category.",
            "type": "object"
          },
          "file_cnt_by_critical_api_category": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count per critical API category.",
            "type": "object"
          },
          "file_cnt_by_file_type": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count per file type.",
            "type": "object"
          },
          "file_cnt_by_rule": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count per rule.",
            "type": "object"
          },
          "file_cnt_by_severity": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count per severity level.",
            "type": "object"
          },
          "files_with_result_count": {
            "description": "The number of files with results.",
            "format": "int32",
            "type": "integer"
          },
          "finding_results": {
            "description": "A list of the results that are marked with ANALYTICS_FINDING, which results\nin raising findings.",
            "items": {
              "$ref": "#/components/schemas/v1LinterResultInfo"
            },
            "type": "array"
          },
          "result_count": {
            "description": "The number of linter results.",
            "format": "int32",
            "type": "integer"
          },
          "results": {
            "description": "A list of all the linter results.",
            "items": {
              "$ref": "#/components/schemas/v1LinterResultInfo"
            },
            "type": "array"
          },
          "results_cnt_by_category": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count per category.",
            "type": "object"
          },
          "results_cnt_by_critical_api_category": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count per critical API category.",
            "type": "object"
          },
          "results_cnt_by_file_type": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count per file type.",
            "type": "object"
          },
          "results_cnt_by_rule": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count per rule.",
            "type": "object"
          },
          "results_cnt_by_severity": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count per severity level.",
            "type": "object"
          },
          "results_per_filecnt_ratio_by_file_type": {
            "additionalProperties": {
              "format": "float",
              "type": "number"
            },
            "description": "The ratio of result count/file count per file type.",
            "type": "object"
          },
          "results_per_filecnt_ratio_by_severity": {
            "additionalProperties": {
              "format": "float",
              "type": "number"
            },
            "description": "The ratio of result count/file count per severity level.",
            "type": "object"
          },
          "results_per_loc_ratio_by_file_type": {
            "additionalProperties": {
              "format": "float",
              "type": "number"
            },
            "description": "The ratio of result count/LOC per severity per file type.",
            "type": "object"
          },
          "results_per_loc_ratio_by_severity": {
            "additionalProperties": {
              "format": "float",
              "type": "number"
            },
            "description": "The ratio of result count/LOC per severity level.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1ListAIProviderKeysResponse": {
        "description": "Response returned for requests to list AI provider keys.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListAIProviderKeysResponseList"
          }
        },
        "type": "object"
      },
      "v1ListAIProviderKeysResponseList": {
        "description": "List of AI provider keys.",
        "properties": {
          "objects": {
            "description": "List of AI provider keys.",
            "items": {
              "$ref": "#/components/schemas/v1AIProviderKey"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListAISastCustomerContextsResponse": {
        "description": "List response for AI SAST customer contexts.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListAISastCustomerContextsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListAISastCustomerContextsResponseList": {
        "description": "List payload.",
        "properties": {
          "objects": {
            "description": "Customer contexts matching the query.",
            "items": {
              "$ref": "#/components/schemas/v1AISastCustomerContext"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListAPIKeysResponse": {
        "description": "Response to the request to list API keys.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListAPIKeysResponseList"
          }
        },
        "type": "object"
      },
      "v1ListAPIKeysResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1APIKey"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListAgentActivityResponse": {
        "description": "ListAgentActivityResponse is served at\nGET /v1/namespaces/{tenant_meta.namespace}/agent-telemetry/activity.",
        "properties": {
          "agents": {
            "description": "One entry per agent that has activity in the window. Empty is valid.",
            "items": {
              "$ref": "#/components/schemas/v1AgentActivity"
            },
            "type": "array"
          },
          "generated_at": {
            "description": "When the backend assembled this snapshot.",
            "format": "date-time",
            "type": "string"
          },
          "schema_version": {
            "description": "Schema version of this response envelope. Additive AgentActivity fields do\nnot bump it; protobuf unknown-field preservation handles forward-compat.",
            "type": "string"
          },
          "stale": {
            "description": "True when served from a degraded/stale snapshot.",
            "type": "boolean"
          },
          "window_days": {
            "description": "The look-back window the counts cover.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1ListAgentCallsResponse": {
        "description": "ListAgentCallsResponse is served at\nGET /v1/namespaces/{tenant_meta.namespace}/agent-telemetry/agents/{agent_id}/calls.\n\nCursor-only pagination: there is intentionally NO exact `total`. An exact\nCOUNT over a filtered event scan is a per-open cost trap with no product\nvalue; this surface returns recent calls, not a precise count. The\npre-aggregated per-agent count is AgentActivity.calls. More pages remain when\nnext_page_token is non-empty; it is an opaque keyset cursor, never an offset.",
        "properties": {
          "agent_id": {
            "description": "Echo of the requested agent id.",
            "type": "string"
          },
          "agent_identity": {
            "description": "The agent's {name}@{version} identity; unset for an unregistered agent.",
            "type": "string"
          },
          "calls": {
            "description": "The calls, newest first.",
            "items": {
              "$ref": "#/components/schemas/v1AgentCall"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "Opaque keyset cursor; empty when there are no more pages.",
            "type": "string"
          },
          "schema_version": {
            "description": "Schema version of this response envelope.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ListArtifactSignaturesResponse": {
        "description": "Response to the request to list all artifact signatures.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListArtifactSignaturesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListArtifactSignaturesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ArtifactSignature"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListAuditLogsResponse": {
        "description": "Response to request to list audit logs.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListAuditLogsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListAuditLogsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1AuditLog"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListAuthenticationLogsResponse": {
        "description": "Response to the request to list authentication logs.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListAuthenticationLogsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListAuthenticationLogsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1AuthenticationLog"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListAuthorizationPoliciesResponse": {
        "description": "Response to the request to list all authorization policies for a given\ntenant.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListAuthorizationPoliciesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListAuthorizationPoliciesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1AuthorizationPolicy"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListCallGraphDataResponse": {
        "description": "Response to the request to list call graph data.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListCallGraphDataResponseList"
          }
        },
        "type": "object"
      },
      "v1ListCallGraphDataResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1CallGraphData"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListCodeOwnersResponse": {
        "description": "Response to the request to list CodeOwners objects.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListCodeOwnersResponseList"
          }
        },
        "type": "object"
      },
      "v1ListCodeOwnersResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1CodeOwners"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListDependencyMetadataResponse": {
        "description": "Response returned for requests to list dependency metadata objects.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListDependencyMetadataResponseList"
          }
        },
        "type": "object"
      },
      "v1ListDependencyMetadataResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1DependencyMetadata"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListEndorIgnoreEntriesResponse": {
        "description": "Response to the request to list EndorIgnoreEntry objects.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListEndorIgnoreEntriesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListEndorIgnoreEntriesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1EndorIgnoreEntry"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListExportersResponse": {
        "description": "Response returned for requests to list exporters.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListExportersResponseList"
          }
        },
        "type": "object"
      },
      "v1ListExportersResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Exporter"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListFindingLogsResponse": {
        "description": "Response returned for requests to list finding logs.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListFindingLogsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListFindingLogsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1FindingLog"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListFindingsResponse": {
        "description": "Response returned for requests to list findings.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListFindingsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListFindingsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Finding"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListHuggingFaceModelsResponse": {
        "description": "Response to the request to list HuggingFace models.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListHuggingFaceModelsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListHuggingFaceModelsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1HuggingFaceModel"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListHuggingFaceOrganizationsResponse": {
        "description": "Response to the request to list HuggingFace organizations.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListHuggingFaceOrganizationsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListHuggingFaceOrganizationsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1HuggingFaceOrganization"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListIPAddressPoliciesResponse": {
        "description": "Response returned for requests to list ip address policies.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListIPAddressPoliciesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListIPAddressPoliciesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1IPAddressPolicy"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListIdentityProvidersResponse": {
        "description": "Response to the request to list identity providers.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListIdentityProvidersResponseList"
          }
        },
        "type": "object"
      },
      "v1ListIdentityProvidersResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1IdentityProvider"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListInstallationsResponse": {
        "description": "Response to the request to list installations.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListInstallationsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListInstallationsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Installation"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListInvitationsResponse": {
        "description": "Response to the request to list invitations.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListInvitationsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListInvitationsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Invitation"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListLicenseDependenciesResponse": {
        "description": "Response to list all the license dependencies.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListLicenseDependenciesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListLicenseDependenciesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1LicenseDependency"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListLicenseSummariesResponse": {
        "description": "Response to list all the license summaries.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListLicenseSummariesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListLicenseSummariesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1LicenseSummary"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListLinterResultsResponse": {
        "description": "Response to the request to list linter results.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListLinterResultsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListLinterResultsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1LinterResult"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListMalwareExposureResponse": {
        "description": "Response to the request to list MalwareExposure objects.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListMalwareExposureResponseList"
          }
        },
        "type": "object"
      },
      "v1ListMalwareExposureResponseList": {
        "description": "List response containing a list of MalwareExposure objects.",
        "properties": {
          "objects": {
            "description": "List of MalwareExposure objects.",
            "items": {
              "$ref": "#/components/schemas/v1MalwareExposure"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListMalwareResponse": {
        "description": "Response to the request to list malware.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListMalwareResponseList"
          }
        },
        "type": "object"
      },
      "v1ListMalwareResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Malware"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListMetricsResponse": {
        "description": "Response to the request to retrieve the metrics.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListMetricsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListMetricsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/endorv1Metric"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListNamespacesResponse": {
        "description": "Response to the request to list namespaces.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListNamespacesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListNamespacesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Namespace"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListNotificationTargetsResponse": {
        "description": "Response returned for requests to list notification targets.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListNotificationTargetsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListNotificationTargetsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1NotificationTarget"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListNotificationsResponse": {
        "description": "Response returned for requests to list notifications.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListNotificationsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListNotificationsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Notification"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListOnPremSchedulersResponse": {
        "description": "ListOnPremSchedulersResponse is used by ListOnPremSchedulers.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListOnPremSchedulersResponseList"
          }
        },
        "type": "object"
      },
      "v1ListOnPremSchedulersResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1OnPremScheduler"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPRCommentConfigsResponse": {
        "description": "Response to the request to list PR comment configurations.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPRCommentConfigsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPRCommentConfigsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PRCommentConfig"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPackageFirewallLogsResponse": {
        "description": "Response to the request to list package firewall logs.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPackageFirewallLogsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPackageFirewallLogsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PackageFirewallLog"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPackageLicenseOverridesResponse": {
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPackageLicenseOverridesResponseList"
          }
        },
        "title": "Response for ListPackageLicenseOverrides",
        "type": "object"
      },
      "v1ListPackageLicenseOverridesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PackageLicenseOverride"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPackageLicenseResponse": {
        "description": "Response to list all the package licenses.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPackageLicenseResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPackageLicenseResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PackageLicense"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPackageManagersResponse": {
        "description": "Response to the request to list package managers.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPackageManagersResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPackageManagersResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PackageManager"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPackageVersionsResponse": {
        "description": "Response to the request to list package versions.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPackageVersionsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPackageVersionsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PackageVersion"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListParameters": {
        "description": "Parameters for a list request.",
        "properties": {
          "action": {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "type": "string"
          },
          "ci_run_uuid": {
            "description": "Only return objects from PR scans that match this context id.",
            "type": "string"
          },
          "count": {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "type": "boolean"
          },
          "disable_pagination": {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "type": "boolean"
          },
          "filter": {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "type": "string"
          },
          "group": {
            "$ref": "#/components/schemas/ListParametersGroup"
          },
          "group_by_time": {
            "$ref": "#/components/schemas/ListParametersGroupByTime"
          },
          "mask": {
            "description": "List of fields to return (all fields are returned by default).",
            "type": "string"
          },
          "page_id": {
            "description": "Page ID to retrieve.",
            "type": "string"
          },
          "page_size": {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "format": "int32",
            "type": "integer"
          },
          "search_query": {
            "$ref": "#/components/schemas/v1SearchQuery"
          },
          "sort": {
            "$ref": "#/components/schemas/ListParametersSortEntry"
          },
          "traverse": {
            "description": "Get data from any child namespaces as well.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ListPluginBinariesResponse": {
        "description": "Response to the request to list plugin binaries.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPluginBinariesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPluginBinariesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PluginBinary"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPoliciesResponse": {
        "description": "Response to the request to list policies.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPoliciesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPoliciesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Policy"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListPolicyTemplatesResponse": {
        "description": "Response to the request to list policy templates.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListPolicyTemplatesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListPolicyTemplatesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1PolicyTemplate"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListProjectsResponse": {
        "description": "Response returned for requests to list projects.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListProjectsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListProjectsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Project"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListProvisioningResultsResponse": {
        "description": "ListProvisioningResultsResponse is used by ListProvisioningResults.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListProvisioningResultsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListProvisioningResultsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ProvisioningResult"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListRegistryIngestionCheckpointResponse": {
        "description": "Response to request to list registry ingestion checkpoints.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListRegistryIngestionCheckpointResponseList"
          }
        },
        "type": "object"
      },
      "v1ListRegistryIngestionCheckpointResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1RegistryIngestionCheckpoint"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListRepositoriesResponse": {
        "description": "Response returned for requests to list repositories.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListRepositoriesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListRepositoriesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Repository"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListRepositoryVersionsResponse": {
        "description": "Response returned for requests to list repository versions.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListRepositoryVersionsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListRepositoryVersionsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1RepositoryVersion"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListResponse": {
        "description": "Response to a list request.",
        "properties": {
          "next_page_id": {
            "description": "The UUID of last message retrieved.",
            "type": "string"
          },
          "next_page_token": {
            "description": "Pagination token that can be used to retrieve the next page of results.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1ListRuleSetImportsResponse": {
        "description": "Response to the request to list.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListRuleSetImportsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListRuleSetImportsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ImportedRuleSet"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListSBOMImportsResponse": {
        "description": "Response to the request to list SBOMs.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListSBOMImportsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListSBOMImportsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ImportedSBOM"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListSCMCredentialsResponse": {
        "description": "Response to the request to list SCM credentials.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListSCMCredentialsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListSCMCredentialsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1SCMCredential"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListSavedQueriesResponse": {
        "description": "Response to the request to list saved queries.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListSavedQueriesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListSavedQueriesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1SavedQuery"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListScanCreditUsagesResponse": {
        "description": "Response returned for requests to list ScanCreditUsage records.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListScanCreditUsagesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListScanCreditUsagesResponseList": {
        "description": "List of scan credit usage records.",
        "properties": {
          "objects": {
            "description": "List of scan credit usage records.",
            "items": {
              "$ref": "#/components/schemas/v1ScanCreditUsage"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListScanProfilesResponse": {
        "description": "ListScanProfilesResponse is used by ListScanProfiles.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListScanProfilesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListScanProfilesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ScanProfile"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListScanResultsResponse": {
        "description": "Response returned for requests to list scan results.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListScanResultsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListScanResultsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ScanResult"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListScanWorkflowResultsResponse": {
        "description": "Response returned for requests to list scan workflow results.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListScanWorkflowResultsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListScanWorkflowResultsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ScanWorkflowResult"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListScanWorkflowsResponse": {
        "description": "Response returned for requests to list scan workflows.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListScanWorkflowsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListScanWorkflowsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1ScanWorkflow"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListSecretRulesResponse": {
        "description": "Response to the request to list secret rules.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListSecretRulesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListSecretRulesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1SecretRule"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListSemgrepRulesResponse": {
        "description": "Response to the request to list Semgrep rules.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListSemgrepRulesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListSemgrepRulesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRule"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListSystemConfigResponse": {
        "description": "Response to request to list system configuration.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListSystemConfigResponseList"
          }
        },
        "type": "object"
      },
      "v1ListSystemConfigResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1SystemConfig"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListTenantsResponse": {
        "description": "Response to the request to list tenants.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListTenantsResponseList"
          }
        },
        "type": "object"
      },
      "v1ListTenantsResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Tenant"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListVectorStoresResponse": {
        "description": "Response to the request to list available VectorStores.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListVectorStoresResponseList"
          }
        },
        "type": "object"
      },
      "v1ListVectorStoresResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1VectorStore"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListVersionUpgradesResponse": {
        "description": "Response to the request to list version upgrades.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListVersionUpgradesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListVersionUpgradesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1VersionUpgrade"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1ListVulnerabilitiesResponse": {
        "description": "Response to the request to list vulnerabilities.",
        "properties": {
          "count_response": {
            "$ref": "#/components/schemas/v1CountResponse"
          },
          "group_response": {
            "$ref": "#/components/schemas/v1GroupResponse"
          },
          "list": {
            "$ref": "#/components/schemas/v1ListVulnerabilitiesResponseList"
          }
        },
        "type": "object"
      },
      "v1ListVulnerabilitiesResponseList": {
        "properties": {
          "objects": {
            "items": {
              "$ref": "#/components/schemas/v1Vuln"
            },
            "type": "array"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListResponse"
          }
        },
        "type": "object"
      },
      "v1LocationType": {
        "default": "LOCATION_TYPE_UNSPECIFIED",
        "description": "Classification of the location type within a data flow path.\n\n - LOCATION_TYPE_SOURCE: The source location.\n - LOCATION_TYPE_SINK: The sink location.\n - LOCATION_TYPE_INTERMEDIATE: The intermediate location.\n - LOCATION_TYPE_LOGICAL_BUG: The logical bug location.",
        "enum": [
          "LOCATION_TYPE_UNSPECIFIED",
          "LOCATION_TYPE_SOURCE",
          "LOCATION_TYPE_SINK",
          "LOCATION_TYPE_INTERMEDIATE",
          "LOCATION_TYPE_LOGICAL_BUG"
        ],
        "type": "string"
      },
      "v1LocationWithName": {
        "description": "A code location with a name and type.",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/v1SarifLocation"
          },
          "name": {
            "description": "The (preferably) unique name of the code location.\nCould be a function ref or a module name.",
            "type": "string"
          },
          "type": {
            "description": "The type of the code location.",
            "type": "string"
          }
        },
        "required": [
          "location",
          "name"
        ],
        "type": "object"
      },
      "v1LogLevel": {
        "default": "LOG_LEVEL_UNSPECIFIED",
        "description": " - LOG_LEVEL_EMERGENCY: System is unusable, for example, a panic condition.\n - LOG_LEVEL_ALERT: Action must be taken immediately, for example, a corrupted system\ndatabase.\n - LOG_LEVEL_CRITICAL: Critical conditions such as hard device errors.\n - LOG_LEVEL_ERROR: Error conditions.\n - LOG_LEVEL_WARNING: Warning conditions.\n - LOG_LEVEL_NOTICE: Normal but significant conditions that may require special handling.\n - LOG_LEVEL_INFO: Informational messages that confirmation that the program is working as\nexpected.\n - LOG_LEVEL_DEBUG: Messages that contain information normally of use only for debugging.",
        "enum": [
          "LOG_LEVEL_UNSPECIFIED",
          "LOG_LEVEL_EMERGENCY",
          "LOG_LEVEL_ALERT",
          "LOG_LEVEL_CRITICAL",
          "LOG_LEVEL_ERROR",
          "LOG_LEVEL_WARNING",
          "LOG_LEVEL_NOTICE",
          "LOG_LEVEL_INFO",
          "LOG_LEVEL_DEBUG"
        ],
        "type": "string"
      },
      "v1MTLSAuth": {
        "properties": {
          "ca_cert": {
            "description": "The CA certificate in PEM format.",
            "type": "string"
          },
          "client_cert": {
            "description": "The client certificate in PEM format.",
            "type": "string"
          },
          "client_key": {
            "description": "The client key in PEM format.",
            "type": "string"
          },
          "server_cert": {
            "description": "The server certificate in PEM format.",
            "type": "string"
          }
        },
        "required": [
          "client_cert",
          "client_key"
        ],
        "type": "object"
      },
      "v1Malware": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1MalwareSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a malware record.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1MalwareAssessmentResultType": {
        "default": "MALWARE_ASSESSMENT_RESULT_TYPE_UNSPECIFIED",
        "description": "MalwareAssessmentResultType represents the verdict of a malware assessment.",
        "enum": [
          "MALWARE_ASSESSMENT_RESULT_TYPE_UNSPECIFIED",
          "MALWARE_ASSESSMENT_RESULT_TYPE_MALICIOUS",
          "MALWARE_ASSESSMENT_RESULT_TYPE_BENIGN",
          "MALWARE_ASSESSMENT_RESULT_TYPE_TELEMETRY"
        ],
        "type": "string"
      },
      "v1MalwareExposure": {
        "description": "Namespace exposure for a given Malware package.\nThe presence of this object indicates that at least one project in the\nNamespace is, or was, potentially affected by the referenced Malware.\nIf all affected projects are in child namespaces, then there are no\nMalwareExposure objects in the parent namespace. Use traverse to\ninclude MalwareExposure objects from child namespaces.\nThe meta.name field contains the fully qualified package name of the\nMalware package. For example, \"npm://package-name\".",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1MalwareExposureSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "UUID of the MalwareExposure object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1MalwareExposureQuery": {
        "description": "Request to get the exposure of one or more Malware objects on a given namespace.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1MalwareExposureQuerySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "UUID of the MalwareExposureQuery object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1MalwareExposureQuerySpec": {
        "description": "Object specific data for MalwareExposureQuery.",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/v1MalwareExposureQuerySpecRequest"
          },
          "response": {
            "$ref": "#/components/schemas/v1MalwareExposureQuerySpecResponse"
          }
        },
        "type": "object"
      },
      "v1MalwareExposureQuerySpecRequest": {
        "description": "Request data for MalwareExposureQuery.",
        "properties": {
          "filter": {
            "description": "String of conditions to filter MalwareExposure objects by.\nFor example, to only get data for the last 7 days, use:\n\"meta.create_time \u003e= now(-168h)\".\n\nOnly applied if malware_uuids is empty.\nSkips contested malware records.\n\nNote: The filter is applied to the MalwareExposure objects,\nnot the Malware objects.\n\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "type": "string"
          },
          "malware_uuids": {
            "description": "UUIDs of the Malware objects to get exposure for.\nLeave empty to get exposure for all, non-contested Malware objects.\nUse the filter field to get exposure for a subset of Malware\nobjects if you do not have the UUIDs.\n\nNote: The UUIDs are not checked for existence.\nThere is no error returned if a UUID is not found, but there\nwill not be an entry for it in the project counts.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "project_uuid": {
            "description": "Limit the request to a specific project.",
            "type": "string"
          },
          "traverse": {
            "description": "Get data from any child namespaces as well.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1MalwareExposureQuerySpecResponse": {
        "description": "Response data for MalwareExposureQuery.\n\nContested malware records are skipped unless explicitly requested\nvia the malware_uuids field.",
        "properties": {
          "definitely_affected_projects": {
            "description": "List of definitely affected project UUIDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "malware_counts_by_project": {
            "additionalProperties": {
              "$ref": "#/components/schemas/ResponseCounts"
            },
            "description": "Malware counts per project, indexed by project UUID.",
            "type": "object"
          },
          "potentially_affected_projects": {
            "description": "List of potentially affected project UUIDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "project_counts_by_malware": {
            "additionalProperties": {
              "$ref": "#/components/schemas/ResponseCounts"
            },
            "description": "Project counts per Malware object, indexed by Malware UUID.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1MalwareExposureSpec": {
        "description": "Object specific data for MalwareExposure.",
        "properties": {
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "malware_detected_on": {
            "description": "Date the malware was detected in public repositories.\nCopied directly from the malware record, so that it\ncan be used to filter MalwareExposure objects.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "type": "string"
          },
          "malware_uuid": {
            "description": "UUID of the Malware object.",
            "type": "string"
          }
        },
        "required": [
          "malware_uuid",
          "ecosystem"
        ],
        "type": "object"
      },
      "v1MalwareIOCAttribute": {
        "description": "MalwareIOC represents a particular Indicator of Compromise.\nUse it to embed the IOC attributes in other messages.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/v1IOCType"
          },
          "value": {
            "description": "Value of the IOC attribute.",
            "type": "string"
          }
        },
        "required": [
          "type",
          "value"
        ],
        "type": "object"
      },
      "v1MalwareSpec": {
        "properties": {
          "additional_notes": {
            "description": "Additional notes for the malware record.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "advisory_last_updated": {
            "description": "Timestamp of the last update of the malware record by the advisory.",
            "format": "date-time",
            "type": "string"
          },
          "advisory_published": {
            "description": "Date when the advisory published the malware record.",
            "format": "date-time",
            "type": "string"
          },
          "aliases": {
            "description": "Aliases of the malware record.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "contested": {
            "description": "Has the malware record been contested.",
            "type": "boolean"
          },
          "contested_date": {
            "description": "Date when the malware record was contested.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "contested_reason": {
            "description": "Reason for the malware record being contested.",
            "type": "string"
          },
          "contributing_feeds": {
            "description": "Feeds that contributed to this record. Set on merge when more than one\nsource applies; each value is a concrete feed (not UNSPECIFIED). Empty\nwhen a single feed supplies the record or provenance is not tracked.",
            "items": {
              "$ref": "#/components/schemas/SpecMalwareSource"
            },
            "readOnly": true,
            "type": "array"
          },
          "cwe_id": {
            "description": "The CWE ID for the malware record.",
            "type": "string"
          },
          "deletion_exempt": {
            "description": "When true, this record is exempt from orphaned malware deletion and will never be\nautomatically removed during ingestion cleanup, regardless of whether it was ingested.",
            "type": "boolean"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "iocs": {
            "description": "IOC attributes of the malware found during the analysis.",
            "items": {
              "$ref": "#/components/schemas/v1MalwareIOCAttribute"
            },
            "type": "array"
          },
          "malware_detected_on": {
            "description": "Date when the malware was detected.",
            "format": "date-time",
            "type": "string"
          },
          "package_name": {
            "description": "Name of malicious package.",
            "type": "string"
          },
          "package_version": {
            "$ref": "#/components/schemas/v1PackageVersion"
          },
          "pkg_release_date": {
            "description": "Release date of the package version.",
            "format": "date-time",
            "type": "string"
          },
          "purl": {
            "description": "PURL of the package without the version component.",
            "type": "string"
          },
          "ranges": {
            "$ref": "#/components/schemas/SpecMalwareRanges"
          },
          "raw": {
            "$ref": "#/components/schemas/SpecRawMalware"
          },
          "reasons": {
            "description": "Reasons for flagging the package as malicious.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "references": {
            "description": "Reference URLs for the malware record.",
            "items": {
              "$ref": "#/components/schemas/VulnSpecReference"
            },
            "type": "array"
          },
          "source": {
            "$ref": "#/components/schemas/SpecMalwareSource"
          },
          "status": {
            "description": "Status of the malware record.",
            "type": "string"
          },
          "summary": {
            "description": "Summary of the malware record.",
            "type": "string"
          },
          "upsert_key": {
            "description": "The upsert key of the malware record. This will be ecosystem+package_name_version for specific version type records.\nFor range type records, it will be ecosystem+package_name.",
            "type": "string"
          },
          "version": {
            "$ref": "#/components/schemas/SpecMalwareVersion"
          }
        },
        "required": [
          "ecosystem",
          "package_name"
        ],
        "type": "object"
      },
      "v1MavenSpec": {
        "description": "MavenSpec represents a configuration for the Maven package manager.",
        "properties": {
          "basic_auth": {
            "$ref": "#/components/schemas/endorv1BasicAuth"
          },
          "id": {
            "description": "A string that uniquely identifies this proxy/server. This is the\nUUID of the object if not provided.",
            "type": "string"
          },
          "is_plugin_repository": {
            "description": "Indicates whether the repository is a plugin or binary repository.",
            "type": "boolean"
          },
          "mtls": {
            "$ref": "#/components/schemas/v1MTLSAuth"
          },
          "name": {
            "description": "User identifiable name for the repository. This is the name\nof the package manager if not provided.",
            "type": "string"
          },
          "password": {
            "description": "An encrypted password that must be provided by the repository owner.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of the Maven package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "public_repository": {
            "description": "Indicates if cloud storage is accessible publicly.",
            "type": "boolean"
          },
          "region": {
            "title": "Region to be used for cloud storage integration",
            "type": "string"
          },
          "snapshots": {
            "description": "Indicates whether the repository can contain snapshot versions.",
            "type": "boolean"
          },
          "token_auth": {
            "$ref": "#/components/schemas/v1TokenAuth"
          },
          "url": {
            "description": "The URL of the registry that the Maven package manager must use.",
            "type": "string"
          },
          "user": {
            "description": "The user name to use to access this repo.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1Meta": {
        "description": "Common fields for all Endor Labs resources.",
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations can be used to attach metadata to a resource message.\nAnnotation values can be small or large, structured or unstructured,\nand may include characters not permitted by labels.\nThe keys may contain alphanumerics, underscores (_), dots (.) and dashes\n(-). The values of an annotation must be 16384 bytes or smaller.",
            "type": "object"
          },
          "create_time": {
            "description": "Time the resource was created.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "created_by": {
            "description": "Name and authentication source of the user who created the object,\nfor example, ewok@endor.ai@google@api-key.",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "Resource description. Must be less than 1024 bytes.",
            "type": "string"
          },
          "index_data": {
            "$ref": "#/components/schemas/v1IndexData"
          },
          "kind": {
            "description": "Resource kind, for example, HelloResponse.\nAuto-generated using the protobuf message proto.MessageName().Name().",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Resource name. Must be 63 characters or less.",
            "type": "string"
          },
          "parent_kind": {
            "description": "Parent object resource kind, for example, Project.",
            "type": "string"
          },
          "parent_uuid": {
            "description": "Parent object UUID.",
            "type": "string"
          },
          "references": {
            "additionalProperties": {
              "$ref": "#/components/schemas/googleprotobufAny"
            },
            "description": "Map of objects referenced in a query API.",
            "readOnly": true,
            "type": "object"
          },
          "tags": {
            "description": "List of tags attached to the resource.\nTags can be used to select objects and to find collections of objects that\nsatisfy certain conditions. A tag must be 255 characters or less.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "update_time": {
            "description": "Time the resource was last updated.\nNote: Updated on all create/patch/delete operations.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updated_by": {
            "description": "Name and authentication source of the last user who updated the object,\nfor example, vulnerabilityingestor@endor.ai@x509.",
            "readOnly": true,
            "type": "string"
          },
          "upsert_time": {
            "description": "Time the resource was last upserted.\n\nNote:\ncreate_time is only set the first time the resource is created.\nupsert_time is set every time the resource is upseted.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "Message version.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "v1Method": {
        "default": "METHOD_UNSPECIFIED",
        "description": "The type of allowed action.\n\n - METHOD_READ: METHOD_READ is for LIST/GET\n - METHOD_CREATE: METHOD_CREATE is for POST\n - METHOD_UPDATE: METHOD_UPDATE is for PATCH\n - METHOD_DELETE: METHOD_DELETE is for DELETE\n - METHOD_ALL: METHOD_ALL is for all methods (essentially *)",
        "enum": [
          "METHOD_UNSPECIFIED",
          "METHOD_READ",
          "METHOD_CREATE",
          "METHOD_UPDATE",
          "METHOD_DELETE",
          "METHOD_ALL"
        ],
        "type": "string"
      },
      "v1MetricSpec": {
        "properties": {
          "analytic": {
            "description": "The name of the analytic used to generate this specific metric.",
            "type": "string"
          },
          "metric_values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1MetricValue"
            },
            "description": "A map of metric values.\nThese values include scores and score factors.",
            "type": "object"
          },
          "project_uuid": {
            "description": "The UUID of the project to which this metric relates.",
            "type": "string"
          },
          "raw": {
            "description": "This is a superset of the information included in the specification.",
            "type": "object"
          }
        },
        "required": [
          "analytic",
          "project_uuid",
          "metric_values"
        ],
        "type": "object"
      },
      "v1MetricValue": {
        "description": "The value of the metric and the associated category.",
        "properties": {
          "category": {
            "description": "Meteric value categories.",
            "type": "string"
          },
          "ci_cd_tools": {
            "$ref": "#/components/schemas/v1CiCdTools"
          },
          "cis_scorecard": {
            "$ref": "#/components/schemas/v1CisScorecard"
          },
          "dependency_stats": {
            "$ref": "#/components/schemas/v1DependencyStats"
          },
          "description": {
            "description": "Description of the metric value.",
            "type": "string"
          },
          "file_stats": {
            "$ref": "#/components/schemas/v1FileStats"
          },
          "float_value": {
            "format": "float",
            "type": "number"
          },
          "github_workflows": {
            "$ref": "#/components/schemas/v1GitHubWorkflows"
          },
          "int32_value": {
            "format": "int32",
            "type": "integer"
          },
          "int64_value": {
            "format": "int64",
            "type": "string"
          },
          "license_info": {
            "$ref": "#/components/schemas/v1LicenseData"
          },
          "linter_stats": {
            "$ref": "#/components/schemas/v1LinterStats"
          },
          "pr_security_review_result_info": {
            "$ref": "#/components/schemas/v1PullRequestSecurityReviewResultInfo"
          },
          "score_card": {
            "$ref": "#/components/schemas/v1ScoreCard"
          },
          "score_factor_list": {
            "$ref": "#/components/schemas/v1ScoreFactorList"
          },
          "scpm_data": {
            "$ref": "#/components/schemas/v1ScpmData"
          },
          "secret_stats": {
            "$ref": "#/components/schemas/v1SecretStats"
          },
          "string_value": {
            "type": "string"
          },
          "tag_counts": {
            "$ref": "#/components/schemas/v1TagCounts"
          },
          "time_tracker": {
            "$ref": "#/components/schemas/v1TimeTracker"
          },
          "vulnerability_stats": {
            "$ref": "#/components/schemas/v1VulnerabilityStats"
          }
        },
        "required": [
          "description"
        ],
        "type": "object"
      },
      "v1ModelSpec": {
        "properties": {
          "external_installation_id": {
            "description": "Endor Labs Hugging Face installation ID of this project.\nOptional and only available if the project is created through an installation.",
            "type": "string"
          },
          "full_name": {
            "description": "The author and model name.\nFor example, author/model_name.",
            "type": "string"
          },
          "http_clone_url": {
            "description": "The HTTP clone URL of the project.\nFor example, https://huggingface.co/openai-community/gpt2.",
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/v1AIModelProvider"
          }
        },
        "required": [
          "full_name"
        ],
        "type": "object"
      },
      "v1ModifierChangeType": {
        "default": "MODIFIER_CHANGE_TYPE_UNSPECIFIED",
        "description": "Protobuf definition for ModifierChangeType.",
        "enum": [
          "MODIFIER_CHANGE_TYPE_UNSPECIFIED",
          "MODIFIER_CHANGE_TYPE_SIGNATURE",
          "MODIFIER_CHANGE_TYPE_TO_ABSTRACT",
          "MODIFIER_CHANGE_TYPE_TO_FINAL",
          "MODIFIER_CHANGE_TYPE_PUBLIC_TO_PROTECTED",
          "MODIFIER_CHANGE_TYPE_PUBLIC_TO_PRIVATE",
          "MODIFIER_CHANGE_TYPE_PROTECTED_TO_PRIVATE",
          "MODIFIER_CHANGE_TYPE_TO_STATIC",
          "MODIFIER_CHANGE_TYPE_TO_NONSTATIC"
        ],
        "type": "string"
      },
      "v1NPMSpec": {
        "description": "NPMSpec represents a configuration for the Node package manager.",
        "properties": {
          "auth_token": {
            "description": "An auth token that cloud providers typically provide to connect to the\nregistry.",
            "type": "string"
          },
          "mtls": {
            "$ref": "#/components/schemas/v1MTLSAuth"
          },
          "priority": {
            "description": "The priority of the Node package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "scope": {
            "title": "A private registry scope.\nEx: @myorg/pkg\nmyorg is the scope",
            "type": "string"
          },
          "token": {
            "description": "A base64 encoded user name and password as token.",
            "type": "string"
          },
          "url": {
            "description": "The URL of the registry that NPM must use.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1NVDAttackComplexity": {
        "default": "NVD_ATTACK_COMPLEXITY_UNSPECIFIED",
        "enum": [
          "NVD_ATTACK_COMPLEXITY_UNSPECIFIED",
          "NVD_ATTACK_COMPLEXITY_HIGH",
          "NVD_ATTACK_COMPLEXITY_LOW"
        ],
        "type": "string"
      },
      "v1NVDAttackVector": {
        "default": "NVD_ATTACK_VECTOR_UNSPECIFIED",
        "enum": [
          "NVD_ATTACK_VECTOR_UNSPECIFIED",
          "NVD_ATTACK_VECTOR_NETWORK",
          "NVD_ATTACK_VECTOR_ADJACENT_NETWORK",
          "NVD_ATTACK_VECTOR_LOCAL",
          "NVD_ATTACK_VECTOR_PHYSICAL"
        ],
        "type": "string"
      },
      "v1NVDExploitCodeMaturity": {
        "default": "NVD_EXPLOIT_CODE_MATURITY_UNSPECIFIED",
        "enum": [
          "NVD_EXPLOIT_CODE_MATURITY_UNSPECIFIED",
          "NVD_EXPLOIT_CODE_MATURITY_UNPROVEN",
          "NVD_EXPLOIT_CODE_MATURITY_PROOF_OF_CONCEPT",
          "NVD_EXPLOIT_CODE_MATURITY_FUNCTIONAL",
          "NVD_EXPLOIT_CODE_MATURITY_HIGH",
          "NVD_EXPLOIT_CODE_MATURITY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDImpact": {
        "default": "NVD_IMPACT_UNSPECIFIED",
        "enum": [
          "NVD_IMPACT_UNSPECIFIED",
          "NVD_IMPACT_NONE",
          "NVD_IMPACT_LOW",
          "NVD_IMPACT_HIGH"
        ],
        "type": "string"
      },
      "v1NVDMetricType": {
        "default": "NVD_METRIC_TYPE_UNSPECIFIED",
        "enum": [
          "NVD_METRIC_TYPE_UNSPECIFIED",
          "NVD_METRIC_TYPE_PRIMARY",
          "NVD_METRIC_TYPE_SECONDARY"
        ],
        "type": "string"
      },
      "v1NVDModifiedAttackComplexity": {
        "default": "NVD_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED",
        "enum": [
          "NVD_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED",
          "NVD_MODIFIED_ATTACK_COMPLEXITY_HIGH",
          "NVD_MODIFIED_ATTACK_COMPLEXITY_LOW",
          "NVD_MODIFIED_ATTACK_COMPLEXITY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDModifiedAttackVector": {
        "default": "NVD_MODIFIED_ATTACK_VECTOR_UNSPECIFIED",
        "enum": [
          "NVD_MODIFIED_ATTACK_VECTOR_UNSPECIFIED",
          "NVD_MODIFIED_ATTACK_VECTOR_NETWORK",
          "NVD_MODIFIED_ATTACK_VECTOR_ADJACENT_NETWORK",
          "NVD_MODIFIED_ATTACK_VECTOR_LOCAL",
          "NVD_MODIFIED_ATTACK_VECTOR_PHYSICAL",
          "NVD_MODIFIED_ATTACK_VECTOR_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDModifiedImpact": {
        "default": "NVD_MODIFIED_IMPACT_UNSPECIFIED",
        "enum": [
          "NVD_MODIFIED_IMPACT_UNSPECIFIED",
          "NVD_MODIFIED_IMPACT_NONE",
          "NVD_MODIFIED_IMPACT_LOW",
          "NVD_MODIFIED_IMPACT_HIGH",
          "NVD_MODIFIED_IMPACT_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDModifiedPrivilegesRequired": {
        "default": "NVD_MODIFIED_PRIVILEGES_REQUIRED_UNSPECIFIED",
        "enum": [
          "NVD_MODIFIED_PRIVILEGES_REQUIRED_UNSPECIFIED",
          "NVD_MODIFIED_PRIVILEGES_REQUIRED_HIGH",
          "NVD_MODIFIED_PRIVILEGES_REQUIRED_LOW",
          "NVD_MODIFIED_PRIVILEGES_REQUIRED_NONE",
          "NVD_MODIFIED_PRIVILEGES_REQUIRED_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDModifiedScope": {
        "default": "NVD_MODIFIED_SCOPE_UNSPECIFIED",
        "enum": [
          "NVD_MODIFIED_SCOPE_UNSPECIFIED",
          "NVD_MODIFIED_SCOPE_UNCHANGED",
          "NVD_MODIFIED_SCOPE_CHANGED",
          "NVD_MODIFIED_SCOPE_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDModifiedUserInteraction": {
        "default": "NVD_MODIFIED_USER_INTERACTION_UNSPECIFIED",
        "enum": [
          "NVD_MODIFIED_USER_INTERACTION_UNSPECIFIED",
          "NVD_MODIFIED_USER_INTERACTION_NONE",
          "NVD_MODIFIED_USER_INTERACTION_REQUIRED",
          "NVD_MODIFIED_USER_INTERACTION_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDPrivilegesRequired": {
        "default": "NVD_PRIVILEGES_REQUIRED_UNSPECIFIED",
        "enum": [
          "NVD_PRIVILEGES_REQUIRED_UNSPECIFIED",
          "NVD_PRIVILEGES_REQUIRED_HIGH",
          "NVD_PRIVILEGES_REQUIRED_LOW",
          "NVD_PRIVILEGES_REQUIRED_NONE"
        ],
        "type": "string"
      },
      "v1NVDRemediationLevel": {
        "default": "NVD_REMEDIATION_LEVEL_UNSPECIFIED",
        "enum": [
          "NVD_REMEDIATION_LEVEL_UNSPECIFIED",
          "NVD_REMEDIATION_LEVEL_OFFICIAL_FIX",
          "NVD_REMEDIATION_LEVEL_TEMPORARY_FIX",
          "NVD_REMEDIATION_LEVEL_WORKAROUND",
          "NVD_REMEDIATION_LEVEL_UNAVAILABLE",
          "NVD_REMEDIATION_LEVEL_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDReportConfidence": {
        "default": "NVD_REPORT_CONFIDENCE_UNSPECIFIED",
        "enum": [
          "NVD_REPORT_CONFIDENCE_UNSPECIFIED",
          "NVD_REPORT_CONFIDENCE_UNKNOWN",
          "NVD_REPORT_CONFIDENCE_REASONABLE",
          "NVD_REPORT_CONFIDENCE_CONFIRMED",
          "NVD_REPORT_CONFIDENCE_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDRequirement": {
        "default": "NVD_REQUIREMENT_UNSPECIFIED",
        "enum": [
          "NVD_REQUIREMENT_UNSPECIFIED",
          "NVD_REQUIREMENT_LOW",
          "NVD_REQUIREMENT_MEDIUM",
          "NVD_REQUIREMENT_HIGH",
          "NVD_REQUIREMENT_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDScope": {
        "default": "NVD_SCOPE_UNSPECIFIED",
        "enum": [
          "NVD_SCOPE_UNSPECIFIED",
          "NVD_SCOPE_UNCHANGED",
          "NVD_SCOPE_CHANGED"
        ],
        "type": "string"
      },
      "v1NVDSeverity": {
        "default": "NVD_SEVERITY_UNSPECIFIED",
        "enum": [
          "NVD_SEVERITY_UNSPECIFIED",
          "NVD_SEVERITY_NONE",
          "NVD_SEVERITY_LOW",
          "NVD_SEVERITY_MEDIUM",
          "NVD_SEVERITY_HIGH",
          "NVD_SEVERITY_CRITICAL"
        ],
        "type": "string"
      },
      "v1NVDStatus": {
        "default": "NVD_STATUS_UNSPECIFIED",
        "enum": [
          "NVD_STATUS_UNSPECIFIED",
          "NVD_STATUS_RECEIVED",
          "NVD_STATUS_AWAITING_ANALYSIS",
          "NVD_STATUS_UNDERGOING_ANALYSIS",
          "NVD_STATUS_ANALYZED",
          "NVD_STATUS_MODIFIED",
          "NVD_STATUS_DEFERRED",
          "NVD_STATUS_REJECTED"
        ],
        "type": "string"
      },
      "v1NVDUserInteraction": {
        "default": "NVD_USER_INTERACTION_UNSPECIFIED",
        "enum": [
          "NVD_USER_INTERACTION_UNSPECIFIED",
          "NVD_USER_INTERACTION_NONE",
          "NVD_USER_INTERACTION_REQUIRED"
        ],
        "type": "string"
      },
      "v1NVDV40AttackComplexity": {
        "default": "NVDV40_ATTACK_COMPLEXITY_UNSPECIFIED",
        "enum": [
          "NVDV40_ATTACK_COMPLEXITY_UNSPECIFIED",
          "NVDV40_ATTACK_COMPLEXITY_HIGH",
          "NVDV40_ATTACK_COMPLEXITY_LOW"
        ],
        "type": "string"
      },
      "v1NVDV40AttackRequirements": {
        "default": "NVDV40_ATTACK_REQUIREMENTS_UNSPECIFIED",
        "enum": [
          "NVDV40_ATTACK_REQUIREMENTS_UNSPECIFIED",
          "NVDV40_ATTACK_REQUIREMENTS_NONE",
          "NVDV40_ATTACK_REQUIREMENTS_PRESENT"
        ],
        "type": "string"
      },
      "v1NVDV40AttackVector": {
        "default": "NVDV40_ATTACK_VECTOR_UNSPECIFIED",
        "enum": [
          "NVDV40_ATTACK_VECTOR_UNSPECIFIED",
          "NVDV40_ATTACK_VECTOR_NETWORK",
          "NVDV40_ATTACK_VECTOR_ADJACENT",
          "NVDV40_ATTACK_VECTOR_LOCAL",
          "NVDV40_ATTACK_VECTOR_PHYSICAL"
        ],
        "type": "string"
      },
      "v1NVDV40Automatable": {
        "default": "NVDV40_AUTOMATABLE_UNSPECIFIED",
        "enum": [
          "NVDV40_AUTOMATABLE_UNSPECIFIED",
          "NVDV40_AUTOMATABLE_NO",
          "NVDV40_AUTOMATABLE_YES",
          "NVDV40_AUTOMATABLE_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ExploitMaturity": {
        "default": "NVDV40_EXPLOIT_MATURITY_UNSPECIFIED",
        "enum": [
          "NVDV40_EXPLOIT_MATURITY_UNSPECIFIED",
          "NVDV40_EXPLOIT_MATURITY_UNREPORTED",
          "NVDV40_EXPLOIT_MATURITY_PROOF_OF_CONCEPT",
          "NVDV40_EXPLOIT_MATURITY_ATTACKED",
          "NVDV40_EXPLOIT_MATURITY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40Impact": {
        "default": "NVDV40_IMPACT_UNSPECIFIED",
        "enum": [
          "NVDV40_IMPACT_UNSPECIFIED",
          "NVDV40_IMPACT_NONE",
          "NVDV40_IMPACT_LOW",
          "NVDV40_IMPACT_HIGH"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedAttackComplexity": {
        "default": "NVDV40_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED",
          "NVDV40_MODIFIED_ATTACK_COMPLEXITY_HIGH",
          "NVDV40_MODIFIED_ATTACK_COMPLEXITY_LOW",
          "NVDV40_MODIFIED_ATTACK_COMPLEXITY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedAttackRequirements": {
        "default": "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_UNSPECIFIED",
          "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_NONE",
          "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_PRESENT",
          "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedAttackVector": {
        "default": "NVDV40_MODIFIED_ATTACK_VECTOR_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_ATTACK_VECTOR_UNSPECIFIED",
          "NVDV40_MODIFIED_ATTACK_VECTOR_NETWORK",
          "NVDV40_MODIFIED_ATTACK_VECTOR_ADJACENT",
          "NVDV40_MODIFIED_ATTACK_VECTOR_LOCAL",
          "NVDV40_MODIFIED_ATTACK_VECTOR_PHYSICAL",
          "NVDV40_MODIFIED_ATTACK_VECTOR_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedImpact": {
        "default": "NVDV40_MODIFIED_IMPACT_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_IMPACT_UNSPECIFIED",
          "NVDV40_MODIFIED_IMPACT_NONE",
          "NVDV40_MODIFIED_IMPACT_LOW",
          "NVDV40_MODIFIED_IMPACT_HIGH",
          "NVDV40_MODIFIED_IMPACT_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedPrivilegesRequired": {
        "default": "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_UNSPECIFIED",
          "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_HIGH",
          "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_LOW",
          "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_NONE",
          "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedSubImpact": {
        "default": "NVDV40_MODIFIED_SUB_IMPACT_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_SUB_IMPACT_UNSPECIFIED",
          "NVDV40_MODIFIED_SUB_IMPACT_NEGLIGIBLE",
          "NVDV40_MODIFIED_SUB_IMPACT_LOW",
          "NVDV40_MODIFIED_SUB_IMPACT_HIGH",
          "NVDV40_MODIFIED_SUB_IMPACT_SAFETY",
          "NVDV40_MODIFIED_SUB_IMPACT_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40ModifiedUserInteraction": {
        "default": "NVDV40_MODIFIED_USER_INTERACTION_UNSPECIFIED",
        "enum": [
          "NVDV40_MODIFIED_USER_INTERACTION_UNSPECIFIED",
          "NVDV40_MODIFIED_USER_INTERACTION_NONE",
          "NVDV40_MODIFIED_USER_INTERACTION_PASSIVE",
          "NVDV40_MODIFIED_USER_INTERACTION_ACTIVE",
          "NVDV40_MODIFIED_USER_INTERACTION_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40PrivilegesRequired": {
        "default": "NVDV40_PRIVILEGES_REQUIRED_UNSPECIFIED",
        "enum": [
          "NVDV40_PRIVILEGES_REQUIRED_UNSPECIFIED",
          "NVDV40_PRIVILEGES_REQUIRED_HIGH",
          "NVDV40_PRIVILEGES_REQUIRED_LOW",
          "NVDV40_PRIVILEGES_REQUIRED_NONE"
        ],
        "type": "string"
      },
      "v1NVDV40ProviderUrgency": {
        "default": "NVDV40_PROVIDER_URGENCY_UNSPECIFIED",
        "enum": [
          "NVDV40_PROVIDER_URGENCY_UNSPECIFIED",
          "NVDV40_PROVIDER_URGENCY_CLEAR",
          "NVDV40_PROVIDER_URGENCY_GREEN",
          "NVDV40_PROVIDER_URGENCY_AMBER",
          "NVDV40_PROVIDER_URGENCY_RED",
          "NVDV40_PROVIDER_URGENCY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40Recovery": {
        "default": "NVDV40_RECOVERY_UNSPECIFIED",
        "enum": [
          "NVDV40_RECOVERY_UNSPECIFIED",
          "NVDV40_RECOVERY_AUTOMATIC",
          "NVDV40_RECOVERY_USER",
          "NVDV40_RECOVERY_IRRECOVERABLE",
          "NVDV40_RECOVERY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40Requirement": {
        "default": "NVDV40_REQUIREMENT_UNSPECIFIED",
        "enum": [
          "NVDV40_REQUIREMENT_UNSPECIFIED",
          "NVDV40_REQUIREMENT_LOW",
          "NVDV40_REQUIREMENT_MEDIUM",
          "NVDV40_REQUIREMENT_HIGH",
          "NVDV40_REQUIREMENT_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40Safety": {
        "default": "NVDV40_SAFETY_UNSPECIFIED",
        "enum": [
          "NVDV40_SAFETY_UNSPECIFIED",
          "NVDV40_SAFETY_NEGLIGIBLE",
          "NVDV40_SAFETY_PRESENT",
          "NVDV40_SAFETY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40UserInteraction": {
        "default": "NVDV40_USER_INTERACTION_UNSPECIFIED",
        "enum": [
          "NVDV40_USER_INTERACTION_UNSPECIFIED",
          "NVDV40_USER_INTERACTION_NONE",
          "NVDV40_USER_INTERACTION_PASSIVE",
          "NVDV40_USER_INTERACTION_ACTIVE"
        ],
        "type": "string"
      },
      "v1NVDV40ValueDensity": {
        "default": "NVDV40_VALUE_DENSITY_UNSPECIFIED",
        "enum": [
          "NVDV40_VALUE_DENSITY_UNSPECIFIED",
          "NVDV40_VALUE_DENSITY_DIFFUSE",
          "NVDV40_VALUE_DENSITY_CONCENTRATED",
          "NVDV40_VALUE_DENSITY_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDV40VulnerabilityResponseEffort": {
        "default": "NVDV40_VULNERABILITY_RESPONSE_EFFORT_UNSPECIFIED",
        "enum": [
          "NVDV40_VULNERABILITY_RESPONSE_EFFORT_UNSPECIFIED",
          "NVDV40_VULNERABILITY_RESPONSE_EFFORT_LOW",
          "NVDV40_VULNERABILITY_RESPONSE_EFFORT_MODERATE",
          "NVDV40_VULNERABILITY_RESPONSE_EFFORT_HIGH",
          "NVDV40_VULNERABILITY_RESPONSE_EFFORT_NOT_DEFINED"
        ],
        "type": "string"
      },
      "v1NVDVulnerability": {
        "description": "NVD Vulnerability.\nBased on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/2.0/cve_api_json_2.0.schema.",
        "properties": {
          "cve": {
            "$ref": "#/components/schemas/NVDVulnerabilityRootCve"
          }
        },
        "type": "object"
      },
      "v1Namespace": {
        "description": "Namespace provides a mechanism for isolating groups of resources.\nNamespaces may be defined in a parent child hierarchy.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1NamespaceSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a namespace.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1NamespaceSpec": {
        "properties": {
          "full_name": {
            "description": "The fully qualified name of a namespace,\nwhich identifies the namespace and the associated\nhierarchy. For example, endord.dev.domain.\nThe field is auto-generated at creation.",
            "readOnly": true,
            "type": "string"
          },
          "managed": {
            "description": "Managed indicates that the object is managed by the system.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1Notification": {
        "description": "The record created when there is a policy violation.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1NotificationSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a notification.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1NotificationActionData": {
        "properties": {
          "error_status": {
            "description": "Error provided by the notification action.",
            "type": "string"
          },
          "is_ignored": {
            "description": "Is the notification ignored by the plugin.",
            "type": "boolean"
          },
          "last_failed_at": {
            "description": "Timestamp of the last failed action attempt, used for exponential backoff.",
            "format": "date-time",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/v1NotificationActionDataMetadata"
          },
          "notification_target_type": {
            "$ref": "#/components/schemas/NotificationTargetActionActionType"
          },
          "open_action_complete": {
            "description": "The value is true when action related to opening a new notification action is successfully executed.",
            "type": "boolean"
          },
          "resolve_action_complete": {
            "description": "The value is true when action related to resolving an notification is successfully executed.",
            "type": "boolean"
          },
          "retry_count": {
            "description": "Number of times the action has been retried after failure.",
            "format": "int64",
            "type": "integer"
          },
          "update_action_complete": {
            "description": "The value is true when action related to updating an existing notification is successfully executed.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1NotificationActionDataMetadata": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/googleprotobufAny"
          }
        },
        "type": "object"
      },
      "v1NotificationDiff": {
        "properties": {
          "new_finding_uuids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resolved_finding_uuids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1NotificationPayload": {
        "properties": {
          "policy_output": {
            "$ref": "#/components/schemas/v1PolicyOutput"
          }
        },
        "type": "object"
      },
      "v1NotificationSpec": {
        "properties": {
          "aggregation_details": {
            "$ref": "#/components/schemas/SpecAggregationDetails"
          },
          "diff": {
            "$ref": "#/components/schemas/v1NotificationDiff"
          },
          "dismiss": {
            "$ref": "#/components/schemas/SpecNotificationDismiss"
          },
          "finding_details": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SpecFindingDetails"
            },
            "description": "The map of finding UUID to finding object.",
            "type": "object"
          },
          "hashsum": {
            "description": "The SHA-256 hash sum of the notification payload.\nThe notification payload is a list of UUIDs (of say Findings/Metrics) and/or\nan opaque blob. The list of UUIDs and the opaque data is used as input for the hashing function.\n\nThe hashsum is used to determine if the latest notification payload has changed\nso as to update the notification target when there is a change.",
            "readOnly": true,
            "type": "string"
          },
          "last_seen_at": {
            "description": "The time when the notification was last raised.",
            "format": "date-time",
            "type": "string"
          },
          "notification_action_data": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1NotificationActionData"
            },
            "description": "A map of metadata related to the notification action, indexed by the notification target UUID.\n\nIt maintains the following information related to every notification target.\n\n- Flags to determine if an action related to a notification target\n  is successfully completed or not.  If not, the action\n  is retried in subsequent attempts. Flags are maintained for\n  actions related to OPEN/UPDATE/RESOLVE.\n- Metadata specific to a notification target type. Some of\n  the notification target types need to maintain state so that\n  subsequent updates to the notifications can operate on the\n  same entity created by the notification. For example, JIRA\n  updates needs to be performed on the same JIRA issue and\n  hence the need to store JIRA ID.",
            "type": "object"
          },
          "notification_external_ids": {
            "description": "The ids/keys of the tickets created by notification.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "payload": {
            "$ref": "#/components/schemas/v1NotificationPayload"
          },
          "policy_type": {
            "$ref": "#/components/schemas/PolicyPolicyType"
          },
          "policy_uuid": {
            "description": "The UUID of the policy to which this notification belongs.\nOptional.\nNotifications created directly from findings do not have policy_uuid.",
            "type": "string"
          },
          "project_uuid": {
            "description": "The UUID of the project to which this notification belongs.",
            "type": "string"
          },
          "remediation_parameters": {
            "$ref": "#/components/schemas/v1RemediationParameters"
          },
          "repository_version_uuid": {
            "description": "The UUID of the repository version to which this notification belongs.",
            "type": "string"
          },
          "resolved_at": {
            "description": "The time when the notification was marked resolved.",
            "format": "date-time",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/SpecNotificationState"
          }
        },
        "required": [
          "state",
          "project_uuid"
        ],
        "type": "object"
      },
      "v1NotificationTarget": {
        "description": "Indicates actions taken when a corresponding notification is raised.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether the object should be visible in the child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1NotificationTargetSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the notification target.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1NotificationTargetSpec": {
        "properties": {
          "action": {
            "$ref": "#/components/schemas/NotificationTargetNotificationTargetAction"
          },
          "custom_template": {
            "$ref": "#/components/schemas/v1CustomTemplate"
          }
        },
        "required": [
          "action"
        ],
        "type": "object"
      },
      "v1NugetSpec": {
        "description": "NugetSpec represents a configuration for the NuGet package manager.",
        "properties": {
          "basic_auth": {
            "$ref": "#/components/schemas/endorv1BasicAuth"
          },
          "password": {
            "description": "An encrypted password that must be provided by the repository owner.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of the NuGet package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "token_auth": {
            "$ref": "#/components/schemas/v1TokenAuth"
          },
          "url": {
            "description": "The URL of the registry that the NuGet package manager must use.",
            "type": "string"
          },
          "user": {
            "description": "The username to use to access this repository.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1OAuthClientCredentialsAuthConfig": {
        "description": "OAuthClientCredentialsAuthConfig configures OAuth 2.0 client credentials authentication.",
        "properties": {
          "auth_endpoint_url": {
            "description": "auth_endpoint_url is the OAuth token endpoint URL.\nIf not specified, defaults may be vendor-specific.",
            "type": "string"
          },
          "client_id": {
            "description": "client_id is the OAuth client ID for authentication.",
            "type": "string"
          },
          "client_secret": {
            "description": "client_secret is the OAuth client secret for authentication.\nThis field is handled securely and stored encrypted.",
            "type": "string"
          }
        },
        "required": [
          "client_id",
          "client_secret"
        ],
        "type": "object"
      },
      "v1OnPremScheduler": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1OnPremSchedulerSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the onprem scheduler.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1OnPremSchedulerSpec": {
        "properties": {
          "api_credentials": {
            "$ref": "#/components/schemas/v1AuthMethodAPICredentials"
          },
          "azure": {
            "$ref": "#/components/schemas/v1AuthMethodAzure"
          },
          "connection_status": {
            "$ref": "#/components/schemas/SpecConnectionStatus"
          },
          "endorctl_config": {
            "$ref": "#/components/schemas/SpecEndorctlConfig"
          },
          "gcp": {
            "$ref": "#/components/schemas/v1AuthMethodGCP"
          },
          "helm_values": {
            "description": "Contains the base64 encoded helm values.yaml file.",
            "readOnly": true,
            "type": "string"
          },
          "scheduler_config": {
            "$ref": "#/components/schemas/SpecSchedulerConfig"
          },
          "scheduler_version": {
            "description": "Contains the version of the scheduler.",
            "type": "string"
          },
          "use_bazel_cache": {
            "description": "Enables bazel remote cache.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1Organization": {
        "description": "The ingested information about an organization.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          }
        },
        "required": [
          "ingested_object"
        ],
        "type": "object"
      },
      "v1OrganizationAccess": {
        "description": "OrganizationAccess contains normalized organization access settings.",
        "properties": {
          "action_policies": {
            "$ref": "#/components/schemas/v1ActionPolicies"
          },
          "admins": {
            "description": "List of all organization administrator usernames.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "allow_internal_repo_create": {
            "description": "Allows members to create internal repositories.",
            "type": "boolean"
          },
          "allow_private_repo_create": {
            "description": "Allows members to create private repositories.",
            "type": "boolean"
          },
          "allow_private_repo_fork": {
            "description": "Allows members to fork private repositories.",
            "type": "boolean"
          },
          "allow_public_repo_create": {
            "description": "Allows members to create public repositories.",
            "type": "boolean"
          },
          "default_workflow_permissions": {
            "description": "Default GITHUB_TOKEN permissions for workflows.\nCan be one of: \"read\", \"write\".",
            "type": "string"
          },
          "mfa_external": {
            "description": "Multi-factor authentication is required for external contributors.",
            "type": "boolean"
          },
          "mfa_internal": {
            "description": "Multi-factor authentication is required for internal contributors.",
            "type": "boolean"
          },
          "repo_edit_permission": {
            "description": "Default permission required to execute EDIT commands on repository.\nCan be one of: \"read\", \"write\", \"admin\", \"none\".",
            "type": "string"
          },
          "repo_get_permission": {
            "description": "Default permission required to run GET queries on repository.\nCan be one of: \"read\", \"write\", \"admin\", \"none\".",
            "type": "string"
          },
          "runner_group": {
            "description": "List of all organization runners.",
            "items": {
              "$ref": "#/components/schemas/ScpmDataRunner"
            },
            "type": "array"
          },
          "verified": {
            "description": "Organization is verified.",
            "type": "boolean"
          },
          "webhooks": {
            "description": "List of all organization webhooks.",
            "items": {
              "$ref": "#/components/schemas/ScpmDataWebhook"
            },
            "type": "array"
          },
          "workflows_can_approve_prs": {
            "description": "Allows workflows to approve pull request reviews.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1PHPToolChain": {
        "properties": {
          "composer_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1PRCommentConfig": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Whether the object should be visible in child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PRCommentConfigSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a PR comment configuration.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PRCommentConfigSpec": {
        "properties": {
          "platform_type": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "template": {
            "$ref": "#/components/schemas/v1PRCommentsTemplate"
          }
        },
        "required": [
          "template"
        ],
        "type": "object"
      },
      "v1PRCommentsTemplate": {
        "properties": {
          "findings_summary_template": {
            "description": "The template for the PR comment for summary of findings.",
            "type": "string"
          }
        },
        "required": [
          "findings_summary_template"
        ],
        "type": "object"
      },
      "v1PackageFirewallAction": {
        "default": "PACKAGE_FIREWALL_ACTION_UNSPECIFIED",
        "description": "PackageFirewallAction defines how the package firewall responds when a check is triggered.\nUsed in both configuration (what to do) and audit logs (what was done).\n\n - PACKAGE_FIREWALL_ACTION_BLOCK: Block the request and return HTTP 403.\n - PACKAGE_FIREWALL_ACTION_WARN: Log a warning audit event and allow the request to proceed.\n - PACKAGE_FIREWALL_ACTION_CURATED: One or more versions were removed from the package metadata response as part of package curation.\nThe package manager resolves to the best remaining safe version without seeing the curated-out versions.",
        "enum": [
          "PACKAGE_FIREWALL_ACTION_UNSPECIFIED",
          "PACKAGE_FIREWALL_ACTION_BLOCK",
          "PACKAGE_FIREWALL_ACTION_WARN",
          "PACKAGE_FIREWALL_ACTION_CURATED"
        ],
        "type": "string"
      },
      "v1PackageFirewallCheckFailureCause": {
        "default": "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UNSPECIFIED",
        "description": "PackageFirewallCheckFailureCause identifies why a policy decision was unavailable.\n\n - PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UNSPECIFIED: No safe failure cause was recorded.\n - PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_POLICY_DATASTORE_UNAVAILABLE: Firewall configuration could not be read from the policy datastore.\n - PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_MALWARE_DATA_UNAVAILABLE: Malware status could not be read for the requested package version.\n - PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_POLICY_EVALUATION_ERROR: A configured policy check could not complete its evaluation or query.\n - PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UPSTREAM_METADATA_UNAVAILABLE: Supporting upstream package metadata could not be fetched or transformed.\n - PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UPSTREAM_METADATA_NOT_FOUND: Supporting upstream package metadata did not contain the requested package or version.",
        "enum": [
          "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UNSPECIFIED",
          "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_POLICY_DATASTORE_UNAVAILABLE",
          "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_MALWARE_DATA_UNAVAILABLE",
          "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_POLICY_EVALUATION_ERROR",
          "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UPSTREAM_METADATA_UNAVAILABLE",
          "PACKAGE_FIREWALL_CHECK_FAILURE_CAUSE_UPSTREAM_METADATA_NOT_FOUND"
        ],
        "type": "string"
      },
      "v1PackageFirewallLog": {
        "description": "PackageFirewallLog represents a package firewall audit event recording the\naction taken and the reason that triggered it.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageFirewallLogSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the package firewall log.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PackageFirewallLogSpec": {
        "properties": {
          "action": {
            "$ref": "#/components/schemas/v1PackageFirewallAction"
          },
          "action_at": {
            "description": "Timestamp when the firewall action (block or warn) occurred.",
            "format": "date-time",
            "type": "string"
          },
          "api_key_id": {
            "description": "API key ID used for the request (for audit purposes).",
            "type": "string"
          },
          "api_key_name": {
            "title": "Human-readable name of the API key (APIKey.meta.name) used for the request",
            "type": "string"
          },
          "block_reason": {
            "$ref": "#/components/schemas/v1BlockReason"
          },
          "blocked_at": {
            "description": "Deprecated: use action_at instead.",
            "format": "date-time",
            "type": "string"
          },
          "configured_fail_closed": {
            "description": "Configured failure behavior at evaluation time (populated only when reason is POLICY_NOT_EVALUATED).",
            "type": "boolean"
          },
          "cvss_severity_level": {
            "$ref": "#/components/schemas/SpecCVSSSeverityLevel"
          },
          "cvss_severity_threshold": {
            "$ref": "#/components/schemas/SpecCVSSSeverityLevel"
          },
          "cvss_vuln_uuid": {
            "description": "UUID of the Vuln object for the highest-severity vulnerability detected (populated only when reason is CVSS_SEVERITY_DETECTED).",
            "type": "string"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "failure_cause": {
            "$ref": "#/components/schemas/v1PackageFirewallCheckFailureCause"
          },
          "filtered_versions": {
            "description": "Per-version detail for MetadataAllVersions curation events.\nPopulated when package_curation_enabled = true and one or more versions were suppressed\nfrom the metadata response because their per-policy action is BLOCK. Empty for all other request types.",
            "items": {
              "$ref": "#/components/schemas/PackageFirewallLogFilteredVersion"
            },
            "type": "array"
          },
          "malware_uuid": {
            "description": "UUID of detected malware (populated only when reason is MALWARE_DETECTED).",
            "type": "string"
          },
          "min_age_hours": {
            "description": "Configured minimum age threshold in hours, snapshotted from PackageFirewallConfig.min_age_hours\nat evaluation time (populated only when reason is MIN_AGE_NOT_MET). Combine with action_at and\npackage_age_hours to derive when the package becomes eligible.",
            "format": "int32",
            "type": "integer"
          },
          "package_age_hours": {
            "description": "Age of package in hours (populated only when reason is MIN_AGE_NOT_MET).",
            "format": "int32",
            "type": "integer"
          },
          "package_license": {
            "description": "License of the package (populated only when reason is RESTRICTED_LICENSE).",
            "type": "string"
          },
          "package_name": {
            "description": "Name of the blocked package.",
            "type": "string"
          },
          "package_version": {
            "description": "Version of the blocked package (if available).",
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/v1PackageFirewallReason"
          },
          "remote_address": {
            "description": "The remote IP address that made the request.",
            "type": "string"
          },
          "request_type": {
            "description": "Type of request that was blocked (metadata, download, etc.).",
            "type": "string"
          },
          "request_uri": {
            "description": "URI of the request that was blocked.",
            "type": "string"
          },
          "restricted_license": {
            "description": "Configured restricted license string that matched and caused this event, snapshotted from\nPackageFirewallConfig.restricted_licenses at evaluation time (populated only when reason is RESTRICTED_LICENSE).",
            "type": "string"
          },
          "user": {
            "description": "Client-supplied user attribution decoded from the Basic-auth username (e.g. user/machine); free-form and unverified.",
            "type": "string"
          }
        },
        "required": [
          "ecosystem",
          "package_name"
        ],
        "type": "object"
      },
      "v1PackageFirewallReason": {
        "default": "PACKAGE_FIREWALL_REASON_UNSPECIFIED",
        "description": "PackageFirewallReason represents the check that triggered the firewall event.\n\n - PACKAGE_FIREWALL_REASON_MALWARE_DETECTED: Malware was detected in the requested package version.\n - PACKAGE_FIREWALL_REASON_MIN_AGE_NOT_MET: The requested package version does not meet the configured minimum age.\n - PACKAGE_FIREWALL_REASON_RESTRICTED_LICENSE: The requested package version has a license that is on the restricted list.\n - PACKAGE_FIREWALL_REASON_CVSS_SEVERITY_DETECTED: The requested package version has a CVSS vulnerability meeting or exceeding the configured severity threshold.\n - PACKAGE_FIREWALL_REASON_VERSIONS_CURATED: One or more versions were removed from the package metadata response as part of package curation.\nSee PackageFirewallLog.Spec.filtered_versions for per-version detail.\n - PACKAGE_FIREWALL_REASON_POLICY_NOT_EVALUATED: The configured policy could not produce a decision for the package request.",
        "enum": [
          "PACKAGE_FIREWALL_REASON_UNSPECIFIED",
          "PACKAGE_FIREWALL_REASON_MALWARE_DETECTED",
          "PACKAGE_FIREWALL_REASON_MIN_AGE_NOT_MET",
          "PACKAGE_FIREWALL_REASON_RESTRICTED_LICENSE",
          "PACKAGE_FIREWALL_REASON_CVSS_SEVERITY_DETECTED",
          "PACKAGE_FIREWALL_REASON_VERSIONS_CURATED",
          "PACKAGE_FIREWALL_REASON_POLICY_NOT_EVALUATED"
        ],
        "type": "string"
      },
      "v1PackageLicense": {
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageLicenseSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the package license.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1PackageLicenseInfo": {
        "properties": {
          "additional_files": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "Other files that contain the same license, mapped to line number.",
            "type": "object"
          },
          "confidence": {
            "description": "The confidence in the license match.",
            "format": "float",
            "type": "number"
          },
          "copyrights": {
            "description": "Copyrights within the license text.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "file_location": {
            "description": "The line in the file where the license text begins.",
            "format": "int32",
            "type": "integer"
          },
          "file_name": {
            "description": "The name of the file where the license was found.",
            "type": "string"
          },
          "hash": {
            "description": "Hash should only be set if matched_text is empty.",
            "type": "string"
          },
          "license_description": {
            "description": "Raw license description as found, for example in package managers.\nIt is free form text that may not contain a valid SPDX ID.",
            "type": "string"
          },
          "llm": {
            "description": "The LLM used to identify the license, if applicable.\nIf no LLM was used, then this will be empty.",
            "type": "string"
          },
          "mapping_info": {
            "$ref": "#/components/schemas/PackageLicenseInfoLicenseInfoMapping"
          },
          "matched_text": {
            "description": "The license text that was matched.",
            "type": "string"
          },
          "notices_file": {
            "description": "True if it is a notices file identified by name.",
            "type": "boolean"
          },
          "spdx_expr": {
            "description": "SPDX expression for the license.",
            "type": "string"
          },
          "spdx_id": {
            "description": "Normalized SPDX id if known.",
            "type": "string"
          },
          "type": {
            "description": "License classification (based on licenseclassifier by Google).",
            "type": "string"
          },
          "url": {
            "description": "The URL that points to the license description.",
            "type": "string"
          }
        },
        "required": [
          "license_description"
        ],
        "type": "object"
      },
      "v1PackageLicenseOverride": {
        "description": "PackageLicenseOverride represents user edits and selections for licenses, copyrights, and notices\nat the package version level. Edits made at this level apply across all projects in the namespace\nthat use the same package version.\nThe package version UUID is stored in spec.package_version_uuid.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates whether this override should be visible in child namespaces.\nWhen querying from a descendant namespace, handlers should include parent\noverrides only when this flag is set to true (same inheritance pattern as policies).",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageLicenseOverrideSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the package license override.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PackageLicenseOverrideSpec": {
        "properties": {
          "copyright_overrides": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PackageLicenseOverrideCopyrightOverride"
            },
            "description": "Map of copyright key to CopyrightOverride.\nContains copyrights that have been edited or newly added by the user.\nOriginal copyrights from PackageLicense are NOT stored here - they are fetched from PackageLicense when needed.\nKey format:\n  - For edited copyrights from PackageLicense: use the key from PackageLicense.spec.copyrights map.\n    (this is the file path where the copyright was found).\n  - For new copyrights added by user: use generated UUID prefixed with \"new-\".",
            "type": "object"
          },
          "deselected_copyrights": {
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "Map of copyright key to selection state.\nOnly deselected copyrights are stored here (value = false).\nIf a copyright key is not present in this map, it defaults to selected (true).",
            "type": "object"
          },
          "deselected_licenses": {
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "Map of license identifier to selection state.\nOnly deselected licenses are stored here (value = false).\nIf a license identifier is not present in this map, it defaults to selected (true).",
            "type": "object"
          },
          "deselected_notices": {
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "Map of notice identifier to selection state.\nOnly deselected notices are stored here (value = false).\nIf a notice identifier is not present in this map, it defaults to selected (true).",
            "type": "object"
          },
          "license_overrides": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PackageLicenseOverrideLicenseOverride"
            },
            "description": "Map of license identifier to LicenseOverride.\nContains licenses that have been edited or newly added by the user.\nOriginal licenses from PackageLicense are NOT stored here - they are fetched from PackageLicense when needed.\nKey format: hash calculated from normalized license text (same calculation as PackageLicenseInfo.hash).\n  - For edited licenses from PackageLicense: use hash from PackageLicenseInfo.hash.\n    (this hash maps to the key in PackageLicense.spec.license_text map).\n  - For new licenses added by user: calculate hash from the license_text provided in LicenseOverride.\n    The hash is calculated using the same method: SHA256(MakeLicenseKey(normalized_license_text)).\nThe hash is calculated from the normalized license text and is available for all\nlicense types (code_licenses, package_manager_licenses, declared_code_licenses).",
            "type": "object"
          },
          "notice_overrides": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PackageLicenseOverrideNoticeOverride"
            },
            "title": "Map of notice identifier to NoticeOverride.\nContains notices that have been edited or newly added by the user.\nOriginal notices from PackageLicense are NOT stored here - they are fetched from PackageLicense when needed.\nKey format:\n  - For edited notices from PackageLicense: use hash or composite identifier\n  - For new notices added by user: use generated UUID prefixed with \"new-\"",
            "type": "object"
          },
          "package_version_uuid": {
            "description": "The UUID of the package version this override is for.",
            "type": "string"
          }
        },
        "required": [
          "package_version_uuid"
        ],
        "type": "object"
      },
      "v1PackageLicenseQuery": {
        "description": "PackageLicenseQuery represents the merged result of PackageLicense + PackageLicenseOverride.\nThis response combines original license data from PackageLicense with any overrides and\nselection states from PackageLicenseOverride across all namespaces in the namespace chain,\nproviding a complete view for the UI.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageLicenseQuerySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The uuid of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1PackageLicenseQuerySpec": {
        "properties": {
          "applied_overrides": {
            "items": {
              "$ref": "#/components/schemas/PackageLicenseQueryAppliedOverride"
            },
            "readOnly": true,
            "type": "array"
          },
          "copyrights": {
            "description": "Merged copyright entries (combines original + overrides).\nEach entry includes the copyright text, selection state, and edit status.",
            "items": {
              "$ref": "#/components/schemas/PackageLicenseQueryMergedCopyrightEntry"
            },
            "readOnly": true,
            "type": "array"
          },
          "licenses": {
            "description": "Merged license entries (combines original + overrides).\nEach entry includes the license data, selection state, and edit status.",
            "items": {
              "$ref": "#/components/schemas/PackageLicenseQueryMergedLicenseEntry"
            },
            "readOnly": true,
            "type": "array"
          },
          "notices": {
            "description": "Merged notice entries (combines original + overrides).\nEach entry includes the notice text, selection state, and edit status.",
            "items": {
              "$ref": "#/components/schemas/PackageLicenseQueryMergedNoticeEntry"
            },
            "readOnly": true,
            "type": "array"
          },
          "package_license_name": {
            "description": "Name of the base PackageLicense to use. If not given, then we use package_version_uuid.",
            "type": "string"
          },
          "package_version_uuid": {
            "description": "UUID of the package version this data is for.",
            "type": "string"
          }
        },
        "required": [
          "package_version_uuid"
        ],
        "type": "object"
      },
      "v1PackageLicenseSpec": {
        "properties": {
          "all_licenses": {
            "description": "All the licenses found by Endor Labs.",
            "items": {
              "$ref": "#/components/schemas/v1PackageLicenseInfo"
            },
            "type": "array"
          },
          "code_licenses": {
            "description": "The discovered licenses found in the source code.",
            "items": {
              "$ref": "#/components/schemas/v1PackageLicenseInfo"
            },
            "type": "array"
          },
          "copyrights": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The map of copyright notices per file name found in source files.\nThe key is the file name and the value is the copyright notice texts combined together into a single string.",
            "type": "object"
          },
          "declared_code_licenses": {
            "description": "The declared licenses found in the source code.",
            "items": {
              "$ref": "#/components/schemas/v1PackageLicenseInfo"
            },
            "type": "array"
          },
          "license_text": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of sha256 to license text.",
            "type": "object"
          },
          "package_manager_licenses": {
            "description": "The licenses from the package manager.",
            "items": {
              "$ref": "#/components/schemas/v1PackageLicenseInfo"
            },
            "type": "array"
          },
          "project_uuid": {
            "description": "UUID of the project that the package license relates to.",
            "type": "string"
          },
          "version": {
            "$ref": "#/components/schemas/v1Version"
          }
        },
        "type": "object"
      },
      "v1PackageManager": {
        "description": "PackageManager holds the data for the various package\nmanagers of the enterprise. Mainly locations and\naccess credentials when needed to resolve/scan packages\nfrom private package managers.\nAn enterprise can create one or more package managers\nin a namespace. All the package managers of the given\nnamespace will be taken into account when resolving.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageManagerSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the package manager.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PackageManagerSpec": {
        "properties": {
          "auth_provider": {
            "$ref": "#/components/schemas/PackageManagerAuthProvider"
          },
          "cargo": {
            "$ref": "#/components/schemas/v1CargoSpec"
          },
          "cocoapod": {
            "$ref": "#/components/schemas/v1CocoapodSpec"
          },
          "conan": {
            "$ref": "#/components/schemas/v1ConanSpec"
          },
          "gem": {
            "$ref": "#/components/schemas/v1GemSpec"
          },
          "gradle": {
            "$ref": "#/components/schemas/v1GradleSpec"
          },
          "mvn": {
            "$ref": "#/components/schemas/v1MavenSpec"
          },
          "npm": {
            "$ref": "#/components/schemas/v1NPMSpec"
          },
          "nuget": {
            "$ref": "#/components/schemas/v1NugetSpec"
          },
          "package_manager_status": {
            "$ref": "#/components/schemas/SpecPackageManagerStatus"
          },
          "packagist": {
            "$ref": "#/components/schemas/v1PackagistSpec"
          },
          "pypi": {
            "$ref": "#/components/schemas/v1PypiSpec"
          },
          "swift": {
            "$ref": "#/components/schemas/v1SwiftSpec"
          }
        },
        "type": "object"
      },
      "v1PackageVersion": {
        "description": "PackageVersion represents a version of a package.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageVersionSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the package version resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1PackageVersionDependency": {
        "description": "PackageVersionDependency is a dependency of a package version.",
        "properties": {
          "c": {
            "$ref": "#/components/schemas/PackageVersionDependencyUnresolvedDependencySpec"
          },
          "cargo": {
            "$ref": "#/components/schemas/PackageVersionDependencyCargoDependencySpec"
          },
          "cocoapod": {
            "$ref": "#/components/schemas/PackageVersionDependencyCocoapodDependencySpec"
          },
          "conan": {
            "$ref": "#/components/schemas/PackageVersionDependencyConanDependencySpec"
          },
          "gem": {
            "$ref": "#/components/schemas/PackageVersionDependencyGemDependencySpec"
          },
          "githubaction": {
            "$ref": "#/components/schemas/PackageVersionDependencyGitHubActionDependencySpec"
          },
          "go": {
            "$ref": "#/components/schemas/PackageVersionDependencyGoDependencySpec"
          },
          "hugging_face": {
            "$ref": "#/components/schemas/PackageVersionDependencyHuggingFaceDependencySpec"
          },
          "maven": {
            "$ref": "#/components/schemas/PackageVersionDependencyMavenDependencySpec"
          },
          "npm": {
            "$ref": "#/components/schemas/PackageVersionDependencyNpmDependencySpec"
          },
          "nuget": {
            "$ref": "#/components/schemas/PackageVersionDependencyNugetDependencySpec"
          },
          "packagist": {
            "$ref": "#/components/schemas/PackageVersionDependencyPackagistDependencySpec"
          },
          "pypi": {
            "$ref": "#/components/schemas/PackageVersionDependencyPypiDependencySpec"
          },
          "swift": {
            "$ref": "#/components/schemas/PackageVersionDependencySwiftDependencySpec"
          }
        },
        "type": "object"
      },
      "v1PackageVersionMetadata": {
        "description": "PackageVersionMetadata represents a metadata for a package version.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PackageVersionMetadataSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the package version metadata.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PackageVersionMetadataSpec": {
        "properties": {
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "last_updated": {
            "description": "The last time that this entry was updated.",
            "format": "date-time",
            "type": "string"
          },
          "versions": {
            "items": {
              "$ref": "#/components/schemas/endorv1VersionMetadata"
            },
            "type": "array"
          }
        },
        "required": [
          "versions",
          "ecosystem"
        ],
        "type": "object"
      },
      "v1PackageVersionSpec": {
        "properties": {
          "bazel_metadata": {
            "$ref": "#/components/schemas/v1BazelMetadata"
          },
          "call_graph_available": {
            "description": "Set to true if a call graph was successfully created by the latest scan.",
            "type": "boolean"
          },
          "code_owners": {
            "$ref": "#/components/schemas/v1CodeOwnerData"
          },
          "container_metadata": {
            "$ref": "#/components/schemas/v1ContainerMetadata"
          },
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "internal_reference_key": {
            "description": "Unique key for the package generated by Endor Labs to simplify lookups.",
            "readOnly": true,
            "type": "string"
          },
          "language": {
            "$ref": "#/components/schemas/v1Language"
          },
          "package_name": {
            "description": "The name of the package of this package version. It is\ncalculated automatically from the package version name.",
            "readOnly": true,
            "type": "string"
          },
          "precomputed_call_graph_state": {
            "$ref": "#/components/schemas/v1PrecomputedState"
          },
          "project_uuid": {
            "description": "The UUID of the project to which this package version belongs.",
            "type": "string"
          },
          "relative_path": {
            "description": "Relative path of the package from where the package was discovered\nrelative to the workspace root.",
            "type": "string"
          },
          "release_timestamp": {
            "description": "The release timestamp corresponding to the time a particular package\nversion was released.",
            "format": "date-time",
            "type": "string"
          },
          "resolution_errors": {
            "$ref": "#/components/schemas/PackageVersionResolutionErrors"
          },
          "resolved_dependencies": {
            "$ref": "#/components/schemas/v1Bom"
          },
          "source_code_reference": {
            "$ref": "#/components/schemas/PackageVersionSourceCodeReference"
          },
          "unresolved_dependencies": {
            "description": "The exact dependency declarations in the package manager descriptor file.\nIn Golang, this represents the list of dependencies in the go.mod.\nIn Java/Maven, this represents the list of dependencies in the pom.xml.",
            "items": {
              "$ref": "#/components/schemas/v1PackageVersionDependency"
            },
            "type": "array"
          },
          "upstream_reference": {
            "description": "The public package this private package was forked from, so its\nvulnerabilities can be attributed to the fork. Empty means the resolver\nhas not run yet; \"N/A\" means it ran and found no upstream.",
            "type": "string"
          }
        },
        "required": [
          "project_uuid"
        ],
        "type": "object"
      },
      "v1PackagistSpec": {
        "description": "Represents a configuration for the Packagist(PHP) package manager.",
        "properties": {
          "auth_kind": {
            "$ref": "#/components/schemas/PackagistSpecAuthKind"
          },
          "host": {
            "description": "The host name of the registry or repository where the PHP packages are\nhosted.",
            "type": "string"
          },
          "password": {
            "description": "An encrypted password that must be provided by the repository owner.",
            "type": "string"
          },
          "user": {
            "description": "The user name to use to access the given host.",
            "type": "string"
          }
        },
        "required": [
          "auth_kind"
        ],
        "type": "object"
      },
      "v1Permissions": {
        "description": "Holds a map associating each resource kind with the\n set of methods that are allowed for this kind.\n\n For example:",
        "properties": {
          "except_resources": {
            "description": "List of resources that should not be accounted in any * resource rules.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "roles": {
            "items": {
              "$ref": "#/components/schemas/v1SystemRole"
            },
            "type": "array"
          },
          "rules": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PermissionsMethods"
            },
            "title": "For message (or resource) repository, I want to provide permissions READ\nonly. This will create map[\"repository\"] = []{READ}",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1PlatformAccount": {
        "description": "PlatformAccount represents an account of a user to third-party site like GitHub/Gitlab or some package platform.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PlatformAccountSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a platform account.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "ingested_object"
        ],
        "type": "object"
      },
      "v1PlatformAccountSpec": {
        "properties": {
          "create_time": {
            "description": "Create time of the platform account.",
            "format": "date-time",
            "type": "string"
          },
          "email": {
            "description": "The email of the platform account.",
            "type": "string"
          },
          "external_id": {
            "description": "The ID of the platform account in the orginal platform.",
            "type": "string"
          },
          "name": {
            "description": "The name of the platform account.",
            "type": "string"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "update_time": {
            "description": "Update time of the platform account.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "platform_source",
          "external_id"
        ],
        "type": "object"
      },
      "v1PlatformSource": {
        "default": "PLATFORM_SOURCE_UNSPECIFIED",
        "description": "Type of source control platform a resource was discovered on.",
        "enum": [
          "PLATFORM_SOURCE_UNSPECIFIED",
          "PLATFORM_SOURCE_GITHUB",
          "PLATFORM_SOURCE_GITLAB",
          "PLATFORM_SOURCE_GITSERVER",
          "PLATFORM_SOURCE_BITBUCKET",
          "PLATFORM_SOURCE_BINARY",
          "PLATFORM_SOURCE_HUGGING_FACE",
          "PLATFORM_SOURCE_AZURE",
          "PLATFORM_SOURCE_ARCHIVE",
          "PLATFORM_SOURCE_EXTERNAL_AI_SERVICE",
          "PLATFORM_SOURCE_GITHUB_ENTERPRISE"
        ],
        "type": "string"
      },
      "v1PluginBinary": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PluginBinarySpec"
          },
          "uuid": {
            "description": "The UUID of the plugin binary.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1PluginBinarySpec": {
        "properties": {
          "arch_type": {
            "$ref": "#/components/schemas/SpecArchType"
          },
          "binary_type": {
            "$ref": "#/components/schemas/SpecBinaryType"
          },
          "checksum": {
            "description": "Checksum of the plugin binary.",
            "type": "string"
          },
          "compatibility_matrix": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1Constraint"
            },
            "description": "Compatibility matrix containing the min/max supported values for runtime\ntools.",
            "type": "object"
          },
          "published_date": {
            "description": "The date when this binary was published.",
            "format": "date-time",
            "type": "string"
          },
          "unsupported": {
            "description": "Unsupported identifies this binary as not officially supported by Endor\nLabs.",
            "type": "boolean"
          },
          "url": {
            "description": "The URL from which the binary is retrieved.",
            "type": "string"
          },
          "version": {
            "description": "The version of the plugin binary.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Policy": {
        "description": "Policy represents a policy in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Whether the object should be visible in child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PolicySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the policy.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PolicyNotificationAction": {
        "properties": {
          "aggregation_type": {
            "$ref": "#/components/schemas/NotificationActionAggregationType"
          },
          "bypass_exceptions": {
            "description": "Set to true if exception policies should be ignored for findings\nmatching this policy.",
            "type": "boolean"
          },
          "notification_target_uuids": {
            "description": "The list of UUIDs of the notification targets that are configured for\nthis policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1PolicyOutput": {
        "properties": {
          "allow": {
            "description": "True if input data is accepted by policy.\nFalse if input data violates the expected state.",
            "type": "boolean"
          },
          "raw": {
            "description": "Raw policy output.",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "violating_resources": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ResourceUuids"
            },
            "description": "Lists of UUIDs of resources that violate the policy,\nif applicable, indexed by resource name.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1PolicySpec": {
        "properties": {
          "admission": {
            "$ref": "#/components/schemas/PolicyAdmissionAction"
          },
          "disable": {
            "description": "Disables a policy without deleting it.",
            "type": "boolean"
          },
          "exception": {
            "$ref": "#/components/schemas/PolicyExceptionAction"
          },
          "finding": {
            "$ref": "#/components/schemas/PolicyFindingAction"
          },
          "finding_categories": {
            "description": "List of finding categories that the policy creates or acts on findings\nfor. This field can be used to group policies.",
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "finding_level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "group_by_fields": {
            "description": "Custom fields to group policy output by. This may be a\nsubset of all custom keys in the policy output. You do not need to\nadd all custom fields here, just the ones you want to be used to\ngroup the matches by. The corresponding values\nare always treated as a single string.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "notification": {
            "$ref": "#/components/schemas/v1PolicyNotificationAction"
          },
          "policy_type": {
            "$ref": "#/components/schemas/PolicyPolicyType"
          },
          "project_exceptions": {
            "description": "The set of tags that projects that are matched\nwith are excluded from the policy. Allows exceptions. Exceptions\ncan be provided with or without selectors.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "project_selector": {
            "description": "The set of tags that projects must have for the policy to be executed\nagainst. If left empty, the policy applies to all projects of the\nnamespace. The items in the array correspond to an OR operator. That is,\nany project with a tag that matches any of the project_selector values\nwill be matched.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "query_statements": {
            "description": "The list of OPA query statements that must be executed to evaluate the\npolicy. For example, [ \"data.packagename.allow\" ], [opulated from\ntemplate if applicable.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resource_kinds": {
            "description": "Identifies all resources that a policy requires.\nFor example, \"Project\", \"Repository\", \"RepositoryVersion\",\n\"PackageVersion\", \"DependencyMetadata\", \"Metric\", \"LinterResult\",\n\"Finding\", etc. For the \"Metric\" resource you must also specify the\ncorresponding parent resource kind.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rule": {
            "description": "The policy rule in text format.\n\nFor example:\n\npackage policyexample\n\ndefault allow = false\n\nallow {\n   data.resources.Project[_].meta.name = go-memdb\"\n}",
            "type": "string"
          },
          "template_parameters": {
            "description": "Template parameter metadata for this template version.",
            "items": {
              "$ref": "#/components/schemas/PolicyTemplateParameter"
            },
            "type": "array"
          },
          "template_uuid": {
            "description": "Indicates that the policy is created from a template.",
            "type": "string"
          },
          "template_values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PolicyTemplateParameterValues"
            },
            "description": "The map of key-value pairs for parameters used to customize the template.",
            "type": "object"
          },
          "template_version": {
            "description": "Template version.",
            "type": "string"
          }
        },
        "required": [
          "policy_type"
        ],
        "type": "object"
      },
      "v1PolicyTemplate": {
        "description": "PolicyTemplate represents a policy system in the system. Policy\ntemplates can be used to create policies from these templates.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Whether the object should be visible in child namespaces or not.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1PolicyTemplateSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the policy template.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1PolicyTemplateSpec": {
        "properties": {
          "admission": {
            "$ref": "#/components/schemas/PolicyAdmissionAction"
          },
          "default_enabled": {
            "description": "True if generated out-of-the-box policy is enabled by default\n(unless Policy.AutoEnable is explicitly disabled in SystemConfig).\nDefault user finding policies are also generated for new tenants\nif this flag is set to true.",
            "type": "boolean"
          },
          "deprecated": {
            "description": "Set to True if the policy template has been deprecated.\nPolicies created from deprecated templates are never deleted,\nbut the template is no longer visible in the UI.",
            "type": "boolean"
          },
          "finding": {
            "$ref": "#/components/schemas/PolicyFindingAction"
          },
          "finding_categories": {
            "description": "List of finding categories that the policy creates or acts on findings\nfor. This field can be used to group policy templates.",
            "items": {
              "$ref": "#/components/schemas/v1FindingCategory"
            },
            "type": "array"
          },
          "finding_level": {
            "$ref": "#/components/schemas/SpecFindingLevel"
          },
          "group_by_fields": {
            "description": "Custom fields to group policy output by. This may be a subset of all\ncustom keys in the policy output. You do not need to add all custom\nfields here. You can add just the custom fileds you want to be used to\ngroup the matches by. The corresponding values are always treated as a\nsingle string.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "policy_type": {
            "$ref": "#/components/schemas/PolicyPolicyType"
          },
          "query_statements": {
            "description": "The list of OPA query statements that must be executed to evaluate the\nresulting policy. For example, [ \"data.packagename.allow\" ].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "release_notes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Release notes indexed by template version.",
            "type": "object"
          },
          "resource_kinds": {
            "description": "The additional resources that a policy requires.\nBy default, policies are executed against Project, Repository,\nRepositoryVersion, PackageVersion, Metric and Finding. If a policy\nmust include additional objects they must be defined here.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rule": {
            "description": "The policy template rule in text format.\n\nFor example:\n\npackage policyexample\n\ndefault allow = false\n\nallow {\n   input.Value1 = input.Value2\n}",
            "type": "string"
          },
          "template_parameters": {
            "description": "The list of values to customize the template. In the example above,\nValue1 and Value2.",
            "items": {
              "$ref": "#/components/schemas/PolicyTemplateParameter"
            },
            "type": "array"
          },
          "version": {
            "title": "Template version (for example, \"1.0.0\")",
            "type": "string"
          }
        },
        "required": [
          "rule",
          "query_statements",
          "policy_type",
          "version"
        ],
        "type": "object"
      },
      "v1PrecomputedState": {
        "default": "PRECOMPUTED_STATE_UNSPECIFIED",
        "description": "PrecomputedState represents the state of precomputed operations.\n\n - PRECOMPUTED_STATE_UNSPECIFIED: UNSPECIFIED indicates that the precomputed state is not set or unknown.\n - PRECOMPUTED_STATE_SUCCESS: SUCCESS indicates that the precomputed operation completed successfully.\n - PRECOMPUTED_STATE_FAILURE: FAILURE indicates that the precomputed operation failed.",
        "enum": [
          "PRECOMPUTED_STATE_UNSPECIFIED",
          "PRECOMPUTED_STATE_SUCCESS",
          "PRECOMPUTED_STATE_FAILURE"
        ],
        "type": "string"
      },
      "v1PrioritizationConfig": {
        "description": "Configuration of the factors that control the prioritization of artifacts.",
        "properties": {
          "factors": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1PrioritizationFactorConfig"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1PrioritizationFactorConfig": {
        "properties": {
          "category": {
            "$ref": "#/components/schemas/v1FactorCategory"
          },
          "description": {
            "description": "Brief description of the factor.",
            "type": "string"
          },
          "impact": {
            "$ref": "#/components/schemas/v1FactorImpact"
          },
          "name": {
            "description": "External name for the factor.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ProcessingStatus": {
        "properties": {
          "analytic_time": {
            "description": "Last time a project was analyzed.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "type": "string"
          },
          "deactivated": {
            "description": "Indicates whether the project is deactivated.\nDeactivated projects are not scanned and are not visible to users in the UI by default.",
            "type": "boolean"
          },
          "disable_automated_scan": {
            "description": "This is a private package and it must not be scanned by the background\nscheduler. It will be scanned by an endorctl client instead. Default:\nfalse.",
            "type": "boolean"
          },
          "metadata": {
            "$ref": "#/components/schemas/v1ProcessingStatusMetadata"
          },
          "queue_time": {
            "description": "Last time a project was queued.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
            "format": "date-time",
            "type": "string"
          },
          "scan_state": {
            "$ref": "#/components/schemas/v1ScanState"
          },
          "scan_time": {
            "description": "Last time a project was ingested.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ProcessingStatusMetadata": {
        "properties": {
          "full_history_scan_time": {
            "format": "date-time",
            "title": "Last time a project was scanned with deep secrets scanning",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1Project": {
        "description": "Logical root object that serves as the basis for organizing and managing all\ninformation related to a repository.\n\nA project corresponds to a repository.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "processing_status": {
            "$ref": "#/components/schemas/v1ProcessingStatus"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ProjectSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The unique identifier of the project.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ProjectSpec": {
        "properties": {
          "git": {
            "$ref": "#/components/schemas/v1GitSpec"
          },
          "ingestion_token": {
            "description": "Third-party API authentication token to read project related information.",
            "readOnly": true,
            "type": "string"
          },
          "internal_reference_key": {
            "description": "Unique key for the project generated by Endor Labs to simplify lookups.",
            "readOnly": true,
            "type": "string"
          },
          "is_archived": {
            "description": "Indicates whether the project is archived.\nArchived projects are typically read-only and users can choose to scan or not scan the project in the app integrations settings.",
            "type": "boolean"
          },
          "model": {
            "$ref": "#/components/schemas/v1ModelSpec"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "sbom": {
            "$ref": "#/components/schemas/v1SBOMSpec"
          },
          "scan_profile_uuid": {
            "type": "string"
          },
          "toolchain_profile_uuid": {
            "description": "The toolchain required to build and scan the project.",
            "type": "string"
          },
          "unsupported": {
            "$ref": "#/components/schemas/v1UnsupportedSpec"
          }
        },
        "required": [
          "platform_source"
        ],
        "type": "object"
      },
      "v1ProvisioningResult": {
        "description": "ProvisioningResult represents the versions that are maintained\nby Endor Labs.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ProvisioningResultSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "UUID is a universally unique identifier for the provisioning result.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "context",
          "spec"
        ],
        "type": "object"
      },
      "v1ProvisioningResultSpec": {
        "description": "Spec is the internal specification of the object.",
        "properties": {
          "arch": {
            "description": "The OS architecture where the provisioning occurred.",
            "type": "string"
          },
          "auto_detect_result": {
            "$ref": "#/components/schemas/v1AutoDetectResult"
          },
          "automated_scan_parameters_config": {
            "$ref": "#/components/schemas/v1AutomatedScanParametersConfig"
          },
          "automated_scan_parameters_source": {
            "$ref": "#/components/schemas/v1AutomatedScanParametersSource"
          },
          "error": {
            "description": "Provisioning error message.",
            "type": "string"
          },
          "exit_code": {
            "description": "Provisioning exit code.",
            "format": "int32",
            "type": "integer"
          },
          "languages_detected": {
            "description": "Languages detected.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "os": {
            "description": "The OS where the provisioning occurred.",
            "type": "string"
          },
          "project_url": {
            "description": "Repository URL of the project for which the scan is run.",
            "type": "string"
          },
          "provisioning_config": {
            "$ref": "#/components/schemas/SpecProvisioningConfig"
          },
          "sandbox_config": {
            "$ref": "#/components/schemas/SpecSandboxConfig"
          },
          "scan_profile": {
            "$ref": "#/components/schemas/v1ScanProfile"
          },
          "tool_chains": {
            "$ref": "#/components/schemas/v1ToolChains"
          },
          "tool_chains_source": {
            "$ref": "#/components/schemas/v1ToolChainsSource"
          }
        },
        "required": [
          "os",
          "arch",
          "exit_code",
          "project_url"
        ],
        "type": "object"
      },
      "v1PullRequestSecurityReviewResultInfo": {
        "description": "PullRequestSecurityReviewResultInfo represents the comprehensive results of an automated security review\nperformed on a pull request. It includes detailed information about code changes, security metrics,\nand relevant code snippets that may have security implications.",
        "properties": {
          "changes_description": {
            "title": "High-level description of all changes",
            "type": "string"
          },
          "file_changes": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoFileChanges"
            },
            "description": "Comprehensive information about all file changes in the pull request.\nThe map key is the file path.",
            "type": "object"
          },
          "llm_context": {
            "$ref": "#/components/schemas/v1LLMContext"
          },
          "security_description": {
            "title": "Overall security assessment description",
            "type": "string"
          },
          "security_metrics": {
            "items": {
              "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoSecurityAspectMetric"
            },
            "title": "Security review findings and metrics\nDetailed security metrics and findings",
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1PypiSpec": {
        "description": "PypiSpec represents a configuration for the Python package manager.",
        "properties": {
          "basic_auth": {
            "$ref": "#/components/schemas/endorv1BasicAuth"
          },
          "mtls": {
            "$ref": "#/components/schemas/v1MTLSAuth"
          },
          "password": {
            "description": "An encrypted password that must be provided by the repository owner.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of the Python package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "token_auth": {
            "$ref": "#/components/schemas/v1TokenAuth"
          },
          "url": {
            "description": "The URL of the registry that the Python package manager must use.",
            "type": "string"
          },
          "user": {
            "description": "The user name to use to access this repository.\nSuperseded by `auth`; kept only for migration, removed in a later CR.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1PythonToolChain": {
        "properties": {
          "pip_packages": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ToolChainVersion"
            },
            "description": "the key is the package name to install through pip.",
            "type": "object"
          },
          "poetry_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1Query": {
        "description": "Query implements the metric query requests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QuerySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "v1QueryMalware": {
        "description": "QueryMalware is used to do query request on malware that are\nnot supported by ListMalware and the filter. For instance, you must\nuse this method to get a list of malware based on a version.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListMalwareResponse"
          },
          "responses": {
            "$ref": "#/components/schemas/v1QueryMalwareResponseMap"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QueryMalwareSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1QueryMalwarePackageVersionNames": {
        "properties": {
          "names": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1QueryMalwareResponseMap": {
        "properties": {
          "values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ListMalwareResponse"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1QueryMalwareSpec": {
        "properties": {
          "mask": {
            "description": "Mask specifies the list of fields to return with a request.\nIf no mask is given, all fields will be returned by the API.",
            "type": "string"
          },
          "package_names": {
            "$ref": "#/components/schemas/v1QueryMalwarePackageVersionNames"
          },
          "package_version_name": {
            "type": "string"
          },
          "package_version_names": {
            "$ref": "#/components/schemas/v1QueryMalwarePackageVersionNames"
          },
          "purls": {
            "description": "a list of PURLs to lookup.\nUsing a PURL for the lookup allows the caller to provide additional\nmetadata.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1QueryReference": {
        "properties": {
          "connect_from": {
            "description": "The parent field from which we are connecting. If emtpy, it is UUID.",
            "type": "string"
          },
          "connect_operator": {
            "description": "The operation that should be used to connect\nparent and child. If empty it is the equal operator. Only\nsupporting scalar value operators at this time.",
            "type": "string"
          },
          "connect_to": {
            "description": "The child field to connect to. If empty, it is parent_uuid.",
            "type": "string"
          },
          "query_spec": {
            "$ref": "#/components/schemas/QueryQuerySpec"
          }
        },
        "type": "object"
      },
      "v1QuerySimilarPackages": {
        "description": "QuerySimilarPackages implements the similar packages query requests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "query_response": {
            "description": "Aggregates the results of the query.",
            "items": {
              "$ref": "#/components/schemas/QuerySimilarPackagesQueryResponse"
            },
            "readOnly": true,
            "type": "array"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QuerySimilarPackagesSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "v1QuerySimilarPackagesSpec": {
        "properties": {
          "edit_distance": {
            "format": "int32",
            "type": "integer"
          },
          "exact_match": {
            "type": "boolean"
          },
          "name": {
            "description": "The name of the package for which similar packaged are being queried.",
            "type": "string"
          },
          "repo": {
            "$ref": "#/components/schemas/v1Ecosystem"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "v1QuerySpec": {
        "properties": {
          "query_response": {
            "$ref": "#/components/schemas/googleprotobufAny"
          },
          "query_spec": {
            "$ref": "#/components/schemas/QueryQuerySpec"
          }
        },
        "type": "object"
      },
      "v1QueryVulnerability": {
        "description": "QueryVulnerability is used to do query request on vulnerabilities that are\nnot supported by ListVulnerabilities and the filter. For instance, you must\nuse this method to get a list of vulnerabilities based on a version.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "response": {
            "$ref": "#/components/schemas/v1ListVulnerabilitiesResponse"
          },
          "responses": {
            "$ref": "#/components/schemas/v1QueryVulnerabilityResponseMap"
          },
          "spec": {
            "$ref": "#/components/schemas/v1QueryVulnerabilitySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1QueryVulnerabilityPackageVersionNames": {
        "properties": {
          "names": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1QueryVulnerabilityResponseMap": {
        "properties": {
          "values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ListVulnerabilitiesResponse"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1QueryVulnerabilitySpec": {
        "properties": {
          "mask": {
            "description": "Mask specifies the list of fields to return with a request.\nIf no mask is given, all fields will be returned by the API.",
            "type": "string"
          },
          "package_version_name": {
            "type": "string"
          },
          "package_version_names": {
            "$ref": "#/components/schemas/v1QueryVulnerabilityPackageVersionNames"
          },
          "purls": {
            "description": "a list of PURLs to lookup.\nUsing a PURL for the lookup allows the caller to provide additional\nmetadata.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "vulnerability_name_query": {
            "$ref": "#/components/schemas/QueryVulnerabilityVulnerabilityNameQuery"
          },
          "vulnerability_type": {
            "$ref": "#/components/schemas/SpecVulnerabilityType"
          }
        },
        "type": "object"
      },
      "v1ReadmeAIQuery": {
        "properties": {
          "answer": {
            "description": "Extracted string answer from the raw response.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "evidence": {
            "description": "Extracted evidence supporting answer from the raw response.",
            "type": "string"
          },
          "exists": {
            "description": "Extracted boolean whether or not specified field in prompt exists.",
            "type": "boolean"
          },
          "prompt": {
            "description": "Prompt to query AI.",
            "type": "string"
          },
          "raw_response": {
            "description": "Raw response received from the query.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ReadmeMetadata": {
        "properties": {
          "alignment_trained": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          },
          "base_model": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          },
          "evaluation_results": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          },
          "example_code": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          },
          "fine_tuned": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          },
          "linked_github": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          },
          "training_data": {
            "$ref": "#/components/schemas/v1ReadmeAIQuery"
          }
        },
        "type": "object"
      },
      "v1RegistryIngestionCheckpoint": {
        "description": "RegistryIngestionCheckpoint represents ingestion progress checkpoints per ecosystem/registry.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1RegistryIngestionCheckpointSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the registry ingestion checkpoint.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1RegistryIngestionCheckpointSpec": {
        "description": "Spec contains ingestion state per ecosystem.",
        "properties": {
          "ecosystem": {
            "$ref": "#/components/schemas/v1Ecosystem"
          },
          "npm": {
            "$ref": "#/components/schemas/SpecNpm"
          },
          "pypi": {
            "$ref": "#/components/schemas/SpecPypi"
          }
        },
        "required": [
          "ecosystem"
        ],
        "type": "object"
      },
      "v1ReleaseUpgradeConfiguration": {
        "properties": {
          "avoid_pre_releases": {
            "description": "Avoid prereleases.",
            "type": "boolean"
          },
          "no_upgrade_package_set": {
            "description": "These packages can not be upgraded and will be skipped.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "prefer_minor_version_upgrades": {
            "description": "Give higher priority to upgrades to versions with the same major version since these are more likely to be compatible.",
            "type": "boolean"
          },
          "reachable_findings_only": {
            "description": "Only consider reachable findings.",
            "type": "boolean"
          },
          "score_improvement_threshold": {
            "description": "Score improvement to consider an upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "skip_test": {
            "description": "If true, ignores all the direct dependencies that are marked as TEST/BUILD.",
            "type": "boolean"
          },
          "target_dependency": {
            "description": "Only analyze this direct dependency and ignore the others.",
            "type": "string"
          },
          "top_only": {
            "description": "Only show the top N dependency upgrades.",
            "format": "int32",
            "type": "integer"
          },
          "upgrade_if_better_scores": {
            "description": "Whether to consider a version upgrade just to improve the Endor scores or not.",
            "type": "boolean"
          },
          "upgrade_if_operational_findings": {
            "description": "Whether to consider a version upgrade if the current version has only operational findings or not.",
            "type": "string"
          },
          "upgrade_if_vulnerability_findings": {
            "description": "Whether to consider a version upgrade if the current version has vulnerability findings or not.",
            "type": "string"
          },
          "use_cia": {
            "description": "Whether using change impact analysis or not.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ReleaseUpgradeInfo": {
        "description": "Protobuf definition for ReleaseUpgradeInfo.",
        "properties": {
          "cia_results": {
            "description": "Details from the CIA analysis.",
            "items": {
              "$ref": "#/components/schemas/v1VersionDiffResult"
            },
            "type": "array"
          },
          "cia_status": {
            "description": "The status of the CIA analysis, including errors.",
            "type": "string"
          },
          "conflicts": {
            "description": "The number of conflicts between the dependencies of the two versions.",
            "format": "int32",
            "type": "integer"
          },
          "conflicts_map": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1Conflict"
            },
            "description": "The list of conflicting direct dependency packages.",
            "type": "object"
          },
          "cur_dep_count": {
            "description": "The number of dependencies in the current version.",
            "format": "int32",
            "type": "integer"
          },
          "current_conflicts": {
            "description": "The count of conflicts with even the current version.",
            "format": "int32",
            "type": "integer"
          },
          "deps_added": {
            "description": "The number of new dependencies added in the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "deps_removed": {
            "description": "The number of dependencies removed in the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "direct_dependency_manifest_files": {
            "description": "Manifest file information for the direct dependency being upgraded.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "direct_dependency_package": {
            "description": "The package being upgraded.",
            "type": "string"
          },
          "endor_scores_improvement": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "title": "The breakdown of the Endor score improvements in the upgrade",
            "type": "object"
          },
          "from_pkg_version_uuid": {
            "description": "The UUID of the package version of the current dependency version.",
            "type": "string"
          },
          "from_version": {
            "description": "The current version of the dependency.",
            "type": "string"
          },
          "from_version_age_in_days": {
            "description": "Deprecated.",
            "format": "int32",
            "type": "integer"
          },
          "from_version_publish_time": {
            "description": "Publish time of the from version.",
            "format": "date-time",
            "type": "string"
          },
          "is_best": {
            "description": "Whether this the best upgrade according to our analysis or not.",
            "type": "boolean"
          },
          "is_endor_patch": {
            "description": "True if this is an Endor Labs Assured package version.",
            "type": "boolean"
          },
          "is_latest": {
            "description": "Whether this an upgrade to the latest version or not.",
            "type": "boolean"
          },
          "minor_conflicts": {
            "description": "The number of minor (same major version) conflicts between the dependencies of the two versions.",
            "format": "int32",
            "type": "integer"
          },
          "minor_conflicts_map": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1Conflict"
            },
            "description": "The list of minor (same major version) conflicts.",
            "type": "object"
          },
          "other_finding_info": {
            "$ref": "#/components/schemas/v1FindingUpgradeBreakdown"
          },
          "package_count": {
            "description": "The number of packages affected by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "project": {
            "description": "The name of the project.",
            "type": "string"
          },
          "root_package_version": {
            "description": "The project package that imports this dependency.",
            "type": "string"
          },
          "root_pkg_version_uuid": {
            "description": "The UUID of the root package version.",
            "type": "string"
          },
          "score": {
            "description": "The internal score for this upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "score_explanation": {
            "description": "The reasons for the score.",
            "type": "string"
          },
          "to_pkg_version_uuid": {
            "description": "The UUID of the package version of the dependency version to which we upgrade.",
            "type": "string"
          },
          "to_version": {
            "description": "The version to which the package is to be upgraded.",
            "type": "string"
          },
          "to_version_age_in_days": {
            "description": "Deprecated.",
            "format": "int32",
            "type": "integer"
          },
          "to_version_publish_time": {
            "description": "Publish time of the to version.",
            "format": "date-time",
            "type": "string"
          },
          "total_findings_fixed": {
            "description": "Count of findings (all types and severity levels) fixed by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "total_findings_introduced": {
            "description": "Count of findings (all types and severity levels) introduced by the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "update_dep_count": {
            "description": "The number of dependencies in the upgrade.",
            "format": "int32",
            "type": "integer"
          },
          "upgrade_risk": {
            "description": "Upgrade risk.",
            "type": "string"
          },
          "vuln_finding_info": {
            "$ref": "#/components/schemas/v1FindingUpgradeBreakdown"
          },
          "worth_it": {
            "description": "Whether the upgrade worth it or not.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1ReleaseUpgradeStats": {
        "properties": {
          "cia_invocations": {
            "description": "CIA Invocations.",
            "format": "int32",
            "type": "integer"
          },
          "compute_time": {
            "description": "Compute time.",
            "format": "float",
            "type": "number"
          },
          "data_load_time": {
            "description": "Data load time.",
            "format": "float",
            "type": "number"
          },
          "database_version_count": {
            "description": "The number of versions for direct dependencies we found in our database.",
            "format": "int32",
            "type": "integer"
          },
          "dep_meta_count": {
            "description": "Dependency meta Count.",
            "format": "int32",
            "type": "integer"
          },
          "dep_uuids": {
            "description": "Dependency UUIDs.",
            "format": "int32",
            "type": "integer"
          },
          "direct_dependency_count": {
            "description": "Direct dependency count.",
            "format": "int32",
            "type": "integer"
          },
          "direct_deps_count": {
            "description": "Direct cependencies count.",
            "format": "int32",
            "type": "integer"
          },
          "direct_deps_package_count": {
            "description": "Direct dependencies package count.",
            "format": "int32",
            "type": "integer"
          },
          "findings_after_filtering": {
            "description": "Findings after filtering.",
            "format": "int32",
            "type": "integer"
          },
          "findings_fixed_by_upgrade_count": {
            "description": "Findings Fixed By Upgrade Count.",
            "format": "int32",
            "type": "integer"
          },
          "findings_read": {
            "description": "Findings read.",
            "format": "int32",
            "type": "integer"
          },
          "incomplete_releases": {
            "description": "Releases not considered because of lack of information.",
            "format": "int32",
            "type": "integer"
          },
          "max_releases_behind": {
            "description": "Max Releases Behind.",
            "format": "int32",
            "type": "integer"
          },
          "missing_version_count": {
            "description": "The number of direct dependency versions we miss from our database.",
            "format": "int32",
            "type": "integer"
          },
          "namespace": {
            "description": "Namespace.",
            "type": "string"
          },
          "package_count": {
            "description": "Package Count.",
            "format": "int32",
            "type": "integer"
          },
          "package_manager_version_count": {
            "description": "The number of versions for direct dependencies that we found in the package manager.",
            "format": "int32",
            "type": "integer"
          },
          "pre_upgrade_findings_count": {
            "description": "Pre-upgrade Findings Count.",
            "format": "int32",
            "type": "integer"
          },
          "project_name": {
            "description": "Project Name.",
            "type": "string"
          },
          "project_uuid": {
            "description": "Project UUID.",
            "type": "string"
          },
          "score_breakdown": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "Score breakdown.",
            "type": "object"
          },
          "scores_read": {
            "description": "Scores read.",
            "format": "int32",
            "type": "integer"
          },
          "skipped_due_to_cia": {
            "description": "Skipped due To CIA.",
            "format": "int32",
            "type": "integer"
          },
          "upgrades_proposed": {
            "description": "Upgrades proposed.",
            "format": "int32",
            "type": "integer"
          },
          "upgrades_reviewed": {
            "description": "Upgrades reviewed.",
            "format": "int32",
            "type": "integer"
          },
          "upgrades_skipped": {
            "description": "Upgrades skipped.",
            "format": "int32",
            "type": "integer"
          },
          "zero_conflict_upgrades_proposed": {
            "description": "Zero conflict upgrades proposed.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1RemediationPRConfig": {
        "description": "RemediationPRConfig configures automated remediation pull requests.\nThe SCM platform is determined by the platform source of the violating project.",
        "properties": {
          "enabled": {
            "description": "Turns the creation of automated pull requests on or off for this target.",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "v1RemediationParameters": {
        "description": "RemediationParameters holds the settings for remediation actions.",
        "properties": {
          "automated_pr_parameters": {
            "$ref": "#/components/schemas/RemediationParametersAutomatedPRParameters"
          }
        },
        "type": "object"
      },
      "v1Repository": {
        "description": "Repository represents the ingested information about a source control repository.\nA repository may refer to any type of source control repository, such as GitLab or GitHub.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1RepositorySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the source control repository.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "ingested_object"
        ],
        "type": "object"
      },
      "v1RepositoryAccess": {
        "description": "RepositoryAccess contains normalized repository access settings.",
        "properties": {
          "admins": {
            "description": "List of all repository administrator usernames.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "advanced_security_enabled": {
            "description": "Advanced security is automatically enabled for new repositories.",
            "type": "boolean"
          },
          "allow_auto_merge": {
            "description": "Repository allows auto-merge on pull requests.",
            "type": "boolean"
          },
          "allow_fork": {
            "description": "Repository allows forking.",
            "type": "boolean"
          },
          "allow_merge_commit": {
            "description": "Repository allows merging pull requests with a merge commit.",
            "type": "boolean"
          },
          "allow_rebase_merge": {
            "description": "Repository allows rebase-merging pull requests.",
            "type": "boolean"
          },
          "allow_squash_merge": {
            "description": "Repository allows squash merging pull-requests.",
            "type": "boolean"
          },
          "archived": {
            "description": "Repository is archived.",
            "type": "boolean"
          },
          "default_branch_protection_status": {
            "description": "Branch protection status of default branch.",
            "type": "boolean"
          },
          "disabled": {
            "description": "Repository is disabled.",
            "type": "boolean"
          },
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          },
          "private": {
            "description": "Repository is private.",
            "type": "boolean"
          },
          "pushed_at": {
            "description": "Time of the most recent commit to the repository.",
            "format": "date-time",
            "type": "string"
          },
          "require_web_commit_signoff": {
            "description": "Require developers to sign off on commits made through a web interface.",
            "type": "boolean"
          },
          "webhooks": {
            "description": "List of all repository webhooks.",
            "items": {
              "$ref": "#/components/schemas/ScpmDataWebhook"
            },
            "type": "array"
          }
        },
        "required": [
          "ingested_object"
        ],
        "type": "object"
      },
      "v1RepositoryLicense": {
        "description": "Contains information related to a source control repository software license.",
        "properties": {
          "ingested_object": {
            "$ref": "#/components/schemas/v1IngestedObject"
          },
          "name": {
            "description": "Name of the source control repository software license.",
            "type": "string"
          }
        },
        "required": [
          "ingested_object"
        ],
        "type": "object"
      },
      "v1RepositorySpec": {
        "properties": {
          "branch_protections": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1BranchProtection"
            },
            "description": "Branch protections is a map of branch name to its github branch protection rules.",
            "type": "object"
          },
          "commit_hashes": {
            "description": "Commit hashes contains a list of all of the commit presents in the repository.\n\nA commit hash contains all commits branches that were already ingested.\n\nFor example: with branch A, branch B and branch C, where branch A and branch B were\ningested, the array contains the union of commits of branch A and branch B.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "contributors": {
            "description": "Contributors represents all account external_ids that have been seen throughout the ingestion.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "create_time": {
            "description": "Create time of the repository in the platform.",
            "format": "date-time",
            "type": "string"
          },
          "default_branch": {
            "description": "The default branch of the source control repository.",
            "type": "string"
          },
          "external_id": {
            "description": "The unique identifier of the repository in the source platform before ingestion.",
            "type": "string"
          },
          "http_clone_url": {
            "description": "The HTTP clone URL of the project.\nFor example, https://github.com/yarpc/yarpc-go.git.",
            "type": "string"
          },
          "languages": {
            "$ref": "#/components/schemas/v1Languages"
          },
          "org": {
            "$ref": "#/components/schemas/v1Organization"
          },
          "owner": {
            "$ref": "#/components/schemas/v1PlatformAccount"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "repository_license": {
            "$ref": "#/components/schemas/v1RepositoryLicense"
          },
          "tags": {
            "description": "The tags of the repository.",
            "items": {
              "$ref": "#/components/schemas/endorv1Tag"
            },
            "type": "array"
          },
          "update_time": {
            "description": "Update time of the repository in the platform.",
            "format": "date-time",
            "type": "string"
          },
          "vulnerability_alerts_enabled": {
            "description": "Denotes whether vulnerability alerts have been enabled on the source control repository.",
            "type": "boolean"
          }
        },
        "required": [
          "platform_source",
          "http_clone_url",
          "default_branch"
        ],
        "type": "object"
      },
      "v1RepositoryVersion": {
        "description": "The ingested information about a repository version.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "scan_object": {
            "$ref": "#/components/schemas/RepositoryVersionScanObject"
          },
          "spec": {
            "$ref": "#/components/schemas/v1RepositoryVersionSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the repository version.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "v1RepositoryVersionSpec": {
        "properties": {
          "allow_ref_as_pr_scan_base": {
            "description": "Allows this monitored branch to be used as the base for automated PR scans when PR scans are enabled for the project.",
            "type": "boolean"
          },
          "last_commit_date": {
            "description": "The last known time when the repository version was updated.",
            "format": "date-time",
            "type": "string"
          },
          "version": {
            "$ref": "#/components/schemas/v1Version"
          }
        },
        "type": "object"
      },
      "v1ResolutionStatus": {
        "description": "ResolutionStatus is the response status that indicates if the operation\nsucceeded. The response status will be stored with the\nresults. The caller will continue with subsequent requests\nand the server can continue with additional packages.",
        "properties": {
          "description": {
            "description": "A description of the error. Plugins should use proper descriptions that\nwill be helpful to users or operations.",
            "type": "string"
          },
          "error_analysis": {
            "description": "The analysis of the error based on the error parsing rules\nthat can provide additional context on possible fixes.",
            "items": {
              "$ref": "#/components/schemas/ResolutionStatusErrorAnalysis"
            },
            "type": "array"
          },
          "error_analysis_best_match": {
            "$ref": "#/components/schemas/ResolutionStatusErrorAnalysis"
          },
          "operation": {
            "description": "The operation during which encountered the error.\nA Go plugin can return as operation reading go.mod file,\na Java plugin can be reading a pom.xml. Every plugin is\ndoing different operations and it should identify here\nthe operation that failed. This again will help with debugging.",
            "type": "string"
          },
          "status_error": {
            "$ref": "#/components/schemas/ResolutionStatusStatusError"
          },
          "target": {
            "description": "The target object (path or package) where the failure happened. For package\nscans it is the package. For the workspace scans it is the target path.",
            "type": "string"
          },
          "target_files": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The content of manifest files or the list of files based on the operation.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1ResourceUuids": {
        "properties": {
          "uuids": {
            "description": "The list of resource UUIDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1RubyToolChain": {
        "properties": {
          "dependabot_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "ruby_gems": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1ToolChainVersion"
            },
            "type": "object"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1RuleSourceType": {
        "default": "RULE_SOURCE_TYPE_UNSPECIFIED",
        "description": "The source type of the rule set.",
        "enum": [
          "RULE_SOURCE_TYPE_UNSPECIFIED",
          "RULE_SOURCE_TYPE_ZIP",
          "RULE_SOURCE_TYPE_TAR",
          "RULE_SOURCE_TYPE_ZSTD",
          "RULE_SOURCE_TYPE_GZIP"
        ],
        "type": "string"
      },
      "v1RuleType": {
        "default": "RULE_TYPE_UNSPECIFIED",
        "enum": [
          "RULE_TYPE_UNSPECIFIED",
          "RULE_TYPE_SEMGREP",
          "RULE_TYPE_SAST"
        ],
        "type": "string"
      },
      "v1RustToolChain": {
        "properties": {
          "mirai_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "rustup_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version",
          "rustup_version"
        ],
        "type": "object"
      },
      "v1SAMLProvider": {
        "properties": {
          "attribute_names": {
            "description": "Attributes that must be mapped to the Endor identity.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "certificates": {
            "description": "Certificate of the identity provider.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "issuer": {
            "title": "Issuer of the identity provider",
            "type": "string"
          },
          "provider_metadata_url": {
            "description": "The SAML metadata URL.",
            "type": "string"
          },
          "sso_url": {
            "description": "Single Sign On URL of the identity provider.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SBOMExportJobRequest": {
        "description": "Request holds the input parameters for running an SBOM export job.",
        "properties": {
          "component_type": {
            "$ref": "#/components/schemas/v1ExportedSBOMComponentType"
          },
          "cyclonedx_spec_version": {
            "$ref": "#/components/schemas/v1CycloneDxSpecVersion"
          },
          "export_parameters": {
            "$ref": "#/components/schemas/v1ExportParameters"
          },
          "format": {
            "$ref": "#/components/schemas/v1ExportedSBOMFormat"
          },
          "hide_private_components": {
            "description": "Whether to hide private (internal) packages in the SBOM output.",
            "type": "boolean"
          },
          "include_test_dependencies": {
            "description": "Whether to include test/dev/build/optional dependencies. When false\n(default), non-production dependencies are excluded along with any\ntransitive dependencies reachable only through them.",
            "type": "boolean"
          },
          "include_vulnerabilities": {
            "description": "When true, embed the scope's vulnerabilities as a top-level\nvulnerabilities[] array in the SBOM, producing one unified document.\nCycloneDx only.",
            "type": "boolean"
          },
          "kind": {
            "$ref": "#/components/schemas/v1SBOMKind"
          },
          "package_version_uuid": {
            "description": "UUID of a single PackageVersion to export. When set, the handler\ngenerates an SBOM containing just this package version. Mutually\nexclusive with export_parameters.",
            "type": "string"
          },
          "spdx_spec_version": {
            "$ref": "#/components/schemas/v1SPDXSpecVersion"
          }
        },
        "required": [
          "component_type"
        ],
        "type": "object"
      },
      "v1SBOMExportJobResponse": {
        "description": "Response holds the output after the SBOM export job completes.",
        "properties": {
          "file_path": {
            "description": "The file path of the generated SBOM in object storage.\nStored on the Job by the handler; the apiserver Job RPC layer reads\nthis on every GetJob and produces a fresh signed download URL.",
            "type": "string"
          },
          "report_url": {
            "description": "The signed download URL for the generated SBOM. Populated by the\napiserver Job RPC layer on each GetJob call (5-minute TTL).",
            "type": "string"
          },
          "resource_namespace": {
            "description": "Namespace jobctl read the referenced resources from — the caller's\ntenant, or \"oss\" if the fallback fired.",
            "type": "string"
          },
          "sbom_size_bytes": {
            "description": "Byte length of the generated SBOM artifact in object storage. Useful\nfor clients deciding whether to display a download progress indicator\nand for operational reporting on export sizes.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SBOMKind": {
        "default": "SBOM_KIND_UNSPECIFIED",
        "description": "SBOM type.",
        "enum": [
          "SBOM_KIND_UNSPECIFIED",
          "SBOM_KIND_CYCLONEDX",
          "SBOM_KIND_SPDX"
        ],
        "type": "string"
      },
      "v1SBOMSpec": {
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/v1SBOMKind"
          },
          "main_component_purl": {
            "description": "Package URL (PURL) is a standard to identify packages, libraries, or\nmodules in an SBOM. Provides information about the package like name,\nversion, and repository location.",
            "type": "string"
          }
        },
        "required": [
          "main_component_purl",
          "kind"
        ],
        "type": "object"
      },
      "v1SCMCredential": {
        "description": "SCMCredential represents SCM org/repo credentials for private dependency resolution.\nCustomers configure these credentials to allow endorctl to authenticate with\nprivate Git repositories during agentless or SCM-integrated scans, eliminating\nresolution failures for cross-org private dependencies.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SCMCredentialSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the SCM credential.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "tenant_meta",
          "spec"
        ],
        "type": "object"
      },
      "v1SCMCredentialSpec": {
        "properties": {
          "access_token": {
            "description": "Access token for authenticating to the SCM platform.\nUsed for HTTPS-based Git operations (e.g., git URL rewrites).\nWorks across all SCM providers: GitHub PAT, GitLab PAT, Bitbucket access\ntoken, Azure DevOps PAT, etc.\nThe secure annotation ensures automatic redaction and secure storage.",
            "type": "string"
          },
          "description": {
            "title": "Optional human-readable description for this credential",
            "type": "string"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "scm_credential_status": {
            "$ref": "#/components/schemas/SpecSCMCredentialStatus"
          },
          "target_url": {
            "description": "The target URL of the SCM org or repo for which this credential applies.\nExamples:\n  - Org-level:  \"https://github.com/myorg\"\n  - Repo-level: \"https://github.com/myorg/private-repo\"\nGit URL rewrites will be applied for all sub-paths of this URL.",
            "type": "string"
          }
        },
        "required": [
          "platform_source",
          "target_url",
          "access_token"
        ],
        "type": "object"
      },
      "v1SPDXSpecVersion": {
        "default": "SPDX_SPEC_VERSION_UNSPECIFIED",
        "description": "SPDX specification versions Endor emits. Values are added as Endor adds\nsupport, so this list is the supported set.\n\n - SPDX_SPEC_VERSION_UNSPECIFIED: Unset. The export uses the current SPDX default.\n - SPDX_SPEC_VERSION_2_3: SPDX 2.3.",
        "enum": [
          "SPDX_SPEC_VERSION_UNSPECIFIED",
          "SPDX_SPEC_VERSION_2_3"
        ],
        "type": "string"
      },
      "v1SarifArtifactContent": {
        "description": "Represents content of an artifact.",
        "properties": {
          "binary": {
            "title": "Base64-encoded content",
            "type": "string"
          },
          "rendered": {
            "$ref": "#/components/schemas/v1SarifText"
          },
          "text": {
            "title": "UTF-8 encoded content",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SarifArtifactLocation": {
        "properties": {
          "uri": {
            "title": "URI of the artifact (file)",
            "type": "string"
          },
          "uri_base_id": {
            "title": "Base URI identifier for resolving relative paths",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SarifCodeFlow": {
        "description": "Code flow object representing a sequence of code locations that specify a data flow path.",
        "properties": {
          "message": {
            "$ref": "#/components/schemas/v1SarifText"
          },
          "thread_flows": {
            "items": {
              "$ref": "#/components/schemas/v1SarifThreadFlow"
            },
            "title": "An array of one or more unique threadFlow objects",
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SarifFingerprint": {
        "properties": {
          "author": {
            "title": "Name of the commit author",
            "type": "string"
          },
          "commit_message": {
            "title": "Commit message associated with the change",
            "type": "string"
          },
          "commit_sha": {
            "title": "Git commit SHA where the finding was detected",
            "type": "string"
          },
          "date": {
            "title": "Date of the commit",
            "type": "string"
          },
          "email": {
            "title": "Email of the commit author",
            "type": "string"
          },
          "hash": {
            "title": "Hash of the primary location line for deduplication",
            "type": "string"
          },
          "id": {
            "title": "Unique identifier based on matching criteria",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SarifLocation": {
        "properties": {
          "annotations": {
            "items": {
              "$ref": "#/components/schemas/v1SarifRegion"
            },
            "title": "An array of regions that describe regions within the artifact specified by the location object that is relevant to the location",
            "type": "array"
          },
          "id": {
            "description": "A unique identifier for this location object.",
            "format": "int32",
            "type": "integer"
          },
          "logical_locations": {
            "description": "The logical locations associated with a physical location.",
            "items": {
              "$ref": "#/components/schemas/v1SarifLogicalLocation"
            },
            "type": "array"
          },
          "message": {
            "$ref": "#/components/schemas/v1SarifText"
          },
          "physical_location": {
            "$ref": "#/components/schemas/SarifLocationPhysicalLocation"
          },
          "relationships": {
            "description": "An array of relationships between this location and other locations.",
            "items": {
              "$ref": "#/components/schemas/v1SarifRelationship"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SarifLogicalLocation": {
        "description": "A logical location that can be used to locate an artifact.",
        "properties": {
          "decorated_name": {
            "description": "The name of the decorated logical location.",
            "type": "string"
          },
          "fully_qualified_name": {
            "description": "The fully qualified name of the logical location.",
            "type": "string"
          },
          "index": {
            "description": "The 0-based index of this logical location in an array of logical locations.",
            "format": "int32",
            "type": "integer"
          },
          "kind": {
            "description": "The kind of logical location.",
            "type": "string"
          },
          "name": {
            "description": "The name of the logical location.",
            "type": "string"
          },
          "parent_index": {
            "description": "The name of the parent of this logical location.",
            "format": "int32",
            "type": "integer"
          },
          "properties": {
            "description": "Key/value pairs that provide additional information.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1SarifRegion": {
        "properties": {
          "end_column": {
            "format": "int32",
            "title": "Ending column number in the file",
            "type": "integer"
          },
          "end_line": {
            "format": "int32",
            "title": "Ending line number in the file",
            "type": "integer"
          },
          "snippet": {
            "$ref": "#/components/schemas/v1SarifText"
          },
          "start_column": {
            "format": "int32",
            "title": "Starting column number in the file",
            "type": "integer"
          },
          "start_line": {
            "format": "int32",
            "title": "Starting line number in the file",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1SarifRelationship": {
        "description": "A relationship between two locations.",
        "properties": {
          "description": {
            "$ref": "#/components/schemas/v1SarifText"
          },
          "kinds": {
            "description": "A set of strings that describe the relationship.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "properties": {
            "description": "Key/value pairs that provide additional information about the relationship.",
            "type": "object"
          },
          "target": {
            "description": "The id of the location that is the target of the relationship.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1SarifReportingDescriptorReference": {
        "description": "A reference to a reporting descriptor.",
        "properties": {
          "guid": {
            "description": "The globally unique identifier for the referenced reporting descriptor.",
            "type": "string"
          },
          "id": {
            "description": "The id of the referenced reporting descriptor.",
            "type": "string"
          },
          "index": {
            "description": "The index of the referenced reporting descriptor in the toolComponent.rules array.",
            "format": "int32",
            "type": "integer"
          },
          "tool_component": {
            "$ref": "#/components/schemas/v1SarifToolComponentReference"
          }
        },
        "type": "object"
      },
      "v1SarifResult": {
        "properties": {
          "code_flows": {
            "description": "Code flow object representing a sequence of code locations that specify a data flow path.",
            "items": {
              "$ref": "#/components/schemas/v1SarifCodeFlow"
            },
            "type": "array"
          },
          "fingerprints": {
            "$ref": "#/components/schemas/v1SarifFingerprint"
          },
          "level": {
            "title": "Severity level of the notification (e.g., \"error\", \"warning\")",
            "type": "string"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/v1SarifLocation"
            },
            "title": "List of locations in the code where the finding was detected",
            "type": "array"
          },
          "message": {
            "$ref": "#/components/schemas/v1SarifText"
          },
          "partial_fingerprints": {
            "$ref": "#/components/schemas/v1SarifFingerprint"
          },
          "properties": {
            "$ref": "#/components/schemas/v1SarifResultProperty"
          },
          "rule_id": {
            "title": "Unique identifier of the rule that triggered this result",
            "type": "string"
          },
          "suppressions": {
            "items": {
              "$ref": "#/components/schemas/v1SarifSuppression"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SarifResultProperty": {
        "properties": {
          "action_policies_triggered": {
            "items": {
              "type": "string"
            },
            "title": "List of action policies that were triggered by this finding",
            "type": "array"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "title": "List of categories the finding belongs to",
            "type": "array"
          },
          "cvss_score": {
            "format": "float",
            "title": "Common Vulnerability Scoring System (CVSS) score, ranging from 0.0 to 10.0",
            "type": "number"
          },
          "cvss_vector": {
            "title": "CVSS vector string describing the characteristics of the vulnerability",
            "type": "string"
          },
          "cvss_version": {
            "$ref": "#/components/schemas/SpecCVSSVersion"
          },
          "epss_percentile_score": {
            "format": "double",
            "title": "EPSS percentile score, showing how severe the vulnerability is compared to others",
            "type": "number"
          },
          "epss_probability_score": {
            "format": "double",
            "title": "Exploit Prediction Scoring System (EPSS) probability score, indicating likelihood of exploitation",
            "type": "number"
          },
          "explanation": {
            "title": "Detailed explanation of the finding and its implications",
            "type": "string"
          },
          "finding_url": {
            "title": "URL to view the finding in the Endor platform",
            "type": "string"
          },
          "finding_uuid": {
            "title": "Unique identifier for the finding",
            "type": "string"
          },
          "impact_score": {
            "format": "float",
            "title": "Custom impact score assigned to the finding based on business context",
            "type": "number"
          },
          "project_uuid": {
            "title": "Unique identifier for the project where the finding was discovered",
            "type": "string"
          },
          "remediation": {
            "title": "Recommended steps to fix or mitigate the finding",
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "title": "List of tags associated with the finding, used for categorization and filtering",
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SarifStack": {
        "description": "Represents a call stack.",
        "properties": {
          "frames": {
            "items": {
              "$ref": "#/components/schemas/v1SarifStackFrame"
            },
            "title": "An array of stack frames",
            "type": "array"
          },
          "message": {
            "$ref": "#/components/schemas/v1SarifText"
          }
        },
        "required": [
          "frames"
        ],
        "type": "object"
      },
      "v1SarifStackFrame": {
        "description": "A single stack frame.",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/v1SarifLocation"
          },
          "module": {
            "title": "The name of the module that contains the location to which this stack frame refers",
            "type": "string"
          },
          "parameters": {
            "items": {
              "type": "string"
            },
            "title": "The parameters passed to the function",
            "type": "array"
          },
          "thread_id": {
            "format": "int32",
            "title": "The thread identifier",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "v1SarifSuppression": {
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/SarifSuppressionKind"
          }
        },
        "type": "object"
      },
      "v1SarifText": {
        "properties": {
          "markdown": {
            "description": "Markdown representation of the content.",
            "type": "string"
          },
          "text": {
            "title": "The actual text content",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SarifThreadFlow": {
        "description": "Thread flow object representing a sequence of code locations executed by a single thread.",
        "properties": {
          "id": {
            "title": "A unique identifier for the thread flow within the code flow",
            "type": "string"
          },
          "immutable_state": {
            "title": "Values of relevant expressions at the start of the thread flow that remain constant",
            "type": "object"
          },
          "initial_state": {
            "title": "Values of relevant expressions at the start of the thread flow",
            "type": "object"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/v1SarifThreadFlowLocation"
            },
            "title": "The locations that were executed during this thread flow",
            "type": "array"
          },
          "message": {
            "$ref": "#/components/schemas/v1SarifText"
          }
        },
        "required": [
          "locations"
        ],
        "type": "object"
      },
      "v1SarifThreadFlowLocation": {
        "description": "A location visited by an analysis tool in the course of simulating or tracing the execution of a program.",
        "properties": {
          "execution_order": {
            "format": "int32",
            "title": "An integer representing the temporal order in which execution reached this location",
            "type": "integer"
          },
          "execution_time_utc": {
            "title": "The time at which execution reached this location",
            "type": "string"
          },
          "importance": {
            "$ref": "#/components/schemas/SarifThreadFlowLocationImportance"
          },
          "index": {
            "format": "int32",
            "title": "The index of the thread flow location within the thread flow",
            "type": "integer"
          },
          "kinds": {
            "items": {
              "type": "string"
            },
            "title": "An array of strings that classify the location",
            "type": "array"
          },
          "location": {
            "$ref": "#/components/schemas/v1SarifLocation"
          },
          "module": {
            "title": "The name of the module that contains the code location",
            "type": "string"
          },
          "nesting_level": {
            "format": "int32",
            "title": "An integer representing the level of nesting within the thread flow",
            "type": "integer"
          },
          "stack": {
            "$ref": "#/components/schemas/v1SarifStack"
          },
          "state": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1SarifText"
            },
            "title": "Values of relevant expressions at this location",
            "type": "object"
          },
          "taxa": {
            "description": "A set of distinct strings that categorize the thread flow location.",
            "items": {
              "$ref": "#/components/schemas/v1SarifReportingDescriptorReference"
            },
            "type": "array"
          },
          "web_request": {
            "$ref": "#/components/schemas/v1SarifWebRequest"
          },
          "web_response": {
            "$ref": "#/components/schemas/v1SarifWebResponse"
          }
        },
        "type": "object"
      },
      "v1SarifToolComponentReference": {
        "description": "A reference to a tool component.",
        "properties": {
          "guid": {
            "description": "The globally unique identifier for the tool component.",
            "type": "string"
          },
          "index": {
            "description": "The index of the tool component in the tool.extensions array.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "The name of the tool component.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SarifWebRequest": {
        "description": "Describes an HTTP request.",
        "properties": {
          "body": {
            "$ref": "#/components/schemas/v1SarifArtifactContent"
          },
          "headers": {
            "title": "The request headers",
            "type": "object"
          },
          "index": {
            "format": "int32",
            "title": "The index of the request within run.webRequests",
            "type": "integer"
          },
          "method": {
            "title": "The HTTP method",
            "type": "string"
          },
          "parameters": {
            "title": "The request parameters",
            "type": "object"
          },
          "protocol": {
            "title": "The HTTP protocol used",
            "type": "string"
          },
          "target": {
            "title": "The target of the request",
            "type": "string"
          },
          "version": {
            "title": "The HTTP version",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SarifWebResponse": {
        "description": "Describes an HTTP response.",
        "properties": {
          "body": {
            "$ref": "#/components/schemas/v1SarifArtifactContent"
          },
          "headers": {
            "title": "The response headers",
            "type": "object"
          },
          "index": {
            "format": "int32",
            "title": "The index of the response within run.webResponses",
            "type": "integer"
          },
          "no_response_received": {
            "title": "Set to true if the response was intercepted",
            "type": "boolean"
          },
          "protocol": {
            "title": "The HTTP protocol used",
            "type": "string"
          },
          "reason_phrase": {
            "title": "The reason phrase",
            "type": "string"
          },
          "status_code": {
            "format": "int32",
            "title": "The status code",
            "type": "integer"
          },
          "version": {
            "title": "The HTTP version",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SastData": {
        "description": "Fields common to every SAST-shaped finding: AI SAST and rule-based\n(opengrep) findings alike. location reuses SourceLocation rather than a\nseparate snippet field.",
        "properties": {
          "ai_analyses": {
            "description": "False-positive analyses. Populating this reroutes the finding to the\nFP-validation UI tab.",
            "items": {
              "$ref": "#/components/schemas/v1LinterCorrectnessAnalysis"
            },
            "type": "array"
          },
          "classification": {
            "$ref": "#/components/schemas/v1FindingClassification"
          },
          "confidence": {
            "description": "Confidence that the finding is a true positive.",
            "type": "string"
          },
          "cwes": {
            "description": "CWE identifiers associated with the finding.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "impact": {
            "description": "Impact of the finding if exploited.",
            "type": "string"
          },
          "languages": {
            "description": "Programming languages the finding's location spans.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "likelihood": {
            "description": "Likelihood the finding is exploitable. Rule-based findings only.",
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/v1SourceLocation"
          },
          "message": {
            "description": "Detailed finding message, shown when the finding has no explanation or\nremediation text of its own.",
            "type": "string"
          },
          "references": {
            "description": "Reference links for the finding.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rule_id": {
            "description": "Rule identifier: CWE ID for an AI SAST finding, or the rule id for a\nrule-based finding.",
            "type": "string"
          },
          "rule_name": {
            "description": "Human-readable rule/CWE name, used for UI grouping and rule filtering.",
            "type": "string"
          },
          "rule_uuid": {
            "description": "UUID of the SemgrepRule resource that produced the finding. Rule-based\nfindings only.",
            "type": "string"
          },
          "rule_version": {
            "description": "Version of the rule that produced the finding. Rule-based findings only.",
            "type": "string"
          },
          "tags": {
            "description": "Compliance/classification tags (e.g. OWASP, SANS).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "description": "Short display title for the detected pattern, distinct from rule_name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SavedQuery": {
        "description": "SavedQuery implements the metric query requests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SavedQuerySpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a saved query.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta"
        ],
        "type": "object"
      },
      "v1SavedQuerySpec": {
        "properties": {
          "is_default": {
            "description": "Indicates that this saved query is the namespace default for the\nresource kind in the query.",
            "type": "boolean"
          },
          "lock": {
            "description": "Lock is used internally and not available to users.",
            "readOnly": true,
            "type": "boolean"
          },
          "monitor": {
            "description": "Indicates that the service will automatically evaluate this query on\na daily basis and keep a value available for quick display.",
            "type": "boolean"
          },
          "query": {
            "$ref": "#/components/schemas/v1Query"
          },
          "query_type": {
            "$ref": "#/components/schemas/SavedQuerySpecQueryType"
          }
        },
        "type": "object"
      },
      "v1ScalaToolChain": {
        "properties": {
          "java_version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1ScanCreditUsage": {
        "description": "ScanCreditUsage is a per-tenant snapshot of scan credit consumption produced\nby the licensing aggregation job. One object is written per aggregation run\ncovering a fixed [period_start, period_end) window. The most recent object's\nterm_* fields hold cumulative usage for the current contract term anchored\nat EndorLicense.spec.credits_period_start.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanCreditUsageSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the scan credit usage record.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ScanCreditUsageSpec": {
        "properties": {
          "credits_period_start": {
            "description": "Anchor timestamp of the current contract term. Snapshotted from\nEndorLicense.spec.credits_period_start at aggregation time so historic\nrows remain interpretable after renewal.",
            "format": "date-time",
            "type": "string"
          },
          "cumulative_breakdown": {
            "$ref": "#/components/schemas/ScanCreditUsageScanCreditBreakdown"
          },
          "cumulative_scan_credits": {
            "description": "Cumulative credits consumed since credits_period_start through\nwindow_end. Sum of all six cumulative_breakdown counters. Used to\nrender remaining credits and overage in the UI without rescanning all\nsnapshots.",
            "format": "int64",
            "type": "string"
          },
          "onboarded_project_count": {
            "description": "Number of non-deleted projects onboarded under the tenant observed at\naggregation time. Used to decide whether the 5x-seats default-branch cap\nwas exceeded.",
            "format": "int32",
            "type": "integer"
          },
          "overflow_project_count": {
            "description": "Number of projects beyond the 5x-seats cap whose default-branch scans\ncontributed to *_main_overflow_credits counters. Zero when\nonboarded_project_count \u003c= 5 * seats.",
            "format": "int32",
            "type": "integer"
          },
          "scan_credit_limit": {
            "description": "Scan credit limit in effect at aggregation time. Snapshotted from\nEndorLicense.spec.scan_credit_limit. Overage = max(0, cumulative_scan_credits - credit_limit).",
            "format": "int64",
            "type": "string"
          },
          "window_breakdown": {
            "$ref": "#/components/schemas/ScanCreditUsageScanCreditBreakdown"
          },
          "window_end": {
            "description": "End of the aggregation window this snapshot covers (exclusive). All\nScanResults with create_time in [window_start, window_end) contributed\nto window_* fields.",
            "format": "date-time",
            "type": "string"
          },
          "window_scan_credits": {
            "description": "Total credits consumed during [window_start, window_end). Sum of all\nsix window_breakdown counters.",
            "format": "int64",
            "type": "string"
          },
          "window_start": {
            "description": "Start of the aggregation window this snapshot covers (inclusive).\nTypically equals the previous run's window_end, or term_start for the\nfirst run of a term.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "window_start",
          "window_end",
          "credits_period_start",
          "window_scan_credits",
          "cumulative_scan_credits",
          "window_breakdown",
          "cumulative_breakdown"
        ],
        "type": "object"
      },
      "v1ScanLogRequest": {
        "description": "ScanLogRequest represents a CRUD operation on a message.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanLogRequestSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of scan log request.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ScanLogRequestLogMessage": {
        "properties": {
          "json_payload": {
            "description": "The json payload of the message.",
            "type": "object"
          },
          "level": {
            "$ref": "#/components/schemas/v1LogLevel"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The tags that are associated with the log message.",
            "type": "object"
          },
          "timestamp": {
            "description": "The timestamp of the log message.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ScanLogRequestSpec": {
        "properties": {
          "admin_filter": {
            "description": "admin_filter is an extra filter that is only available for admin users.",
            "type": "string"
          },
          "admin_search": {
            "description": "admin_search enables searching logs across all scans within the requested\nnamespace using only admin_filter (e.g., grep for an error string).\nRequires admin_filter and start_time to be set.\nOnly available to Endor internal accounts.",
            "type": "boolean"
          },
          "applied_filter": {
            "description": "applied_filter is the filter that is applied to the logs.",
            "readOnly": true,
            "type": "string"
          },
          "end_time": {
            "description": "Cap the time range of the logs to be returned.\nDefault is 2 days from start_time.",
            "format": "date-time",
            "type": "string"
          },
          "execution_id": {
            "description": "Execution id of the scan that should be used to filter the logs.\nThis maps to spec.result.ci_run_uuid in the ScanRequest and\nspec.environment.config.ExecutionID in the ScanResult.\n\nPerformance optimization:\nProvide spec.start_time to avoid DB lookups for scan request/result timestamps.\nNote: If using scan result timestamps, subtract an hour to ensure no logs are missed.",
            "type": "string"
          },
          "installation_uuid": {
            "description": "installation_uuid of the installation that should be used to filter the logs.",
            "type": "string"
          },
          "log_levels": {
            "description": "log_levels are the log levels that should be used to filter the logs.\nOptional argument.",
            "items": {
              "$ref": "#/components/schemas/v1LogLevel"
            },
            "type": "array"
          },
          "log_messages": {
            "description": "An array of log messages provided as JSON payloads\nthat the output of the request.",
            "items": {
              "$ref": "#/components/schemas/v1ScanLogRequestLogMessage"
            },
            "readOnly": true,
            "type": "array"
          },
          "max_entries": {
            "description": "max_entries is the maximum number of log entries to return.",
            "format": "int32",
            "type": "integer"
          },
          "newest_first": {
            "description": "newest_first asks for log entries to be returned in reverse chronological\norder.",
            "type": "boolean"
          },
          "onprem_scheduler_uuid": {
            "description": "onprem_scheduler_uuid of the onprem scheduler that should be used to filter the logs.",
            "type": "string"
          },
          "project_uuid": {
            "description": "project_uuid of the project that should be used to filter the logs.",
            "type": "string"
          },
          "scan_request_uuid": {
            "description": "scan_request_uuid that should be used to filter the logs.",
            "type": "string"
          },
          "scan_result_uuid": {
            "description": "UUID of the scan result that should be used to filter the logs.",
            "type": "string"
          },
          "start_time": {
            "description": "start_time is the time that the log should start from.\nif not defined, the create time of the corresponding scan request\nwill be used.",
            "format": "date-time",
            "type": "string"
          },
          "traverse": {
            "description": "traverse includes child namespaces in the search. Only honored when\ntarget_uuid = admin_search. Endor-only.",
            "type": "boolean"
          }
        },
        "required": [
          "max_entries"
        ],
        "type": "object"
      },
      "v1ScanProfile": {
        "description": "ScanProfile represents the scan configuration to use across different\nprojects.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in the child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanProfileSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "UUID is a universally unique identifier for the tool chain profile.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ScanProfileSpec": {
        "description": "Spec is the internal specification of the object.",
        "properties": {
          "ai_sast_analysis_parameters": {
            "$ref": "#/components/schemas/v1AISastAnalysisParameters"
          },
          "automated_scan_parameters": {
            "$ref": "#/components/schemas/v1AutomatedScanParameters"
          },
          "exporter_parameters": {
            "$ref": "#/components/schemas/SpecExporterParameters"
          },
          "is_default": {
            "description": "is_default indicates that the scan profile is the namespace default.",
            "type": "boolean"
          },
          "remediation_parameters": {
            "$ref": "#/components/schemas/v1RemediationParameters"
          },
          "security_review_scanner_parameters": {
            "$ref": "#/components/schemas/SpecSecurityReviewScannerParameters"
          },
          "toolchain_profile": {
            "$ref": "#/components/schemas/v1ToolChainProfile"
          }
        },
        "type": "object"
      },
      "v1ScanResult": {
        "description": "Contains the results of an endorctl scan.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanResultSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the object.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "context"
        ],
        "type": "object"
      },
      "v1ScanResultSpec": {
        "description": "ScanResult specific data.",
        "properties": {
          "all_findings": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SpecFindingData"
            },
            "description": "Deprecated.",
            "type": "object"
          },
          "blocking_findings": {
            "description": "List of blocking finding uuids identified by the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "components_executed": {
            "description": "Scanner components that actually executed during this scan.",
            "items": {
              "$ref": "#/components/schemas/SpecScanComponent"
            },
            "type": "array"
          },
          "deleted_findings": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SpecFindingData"
            },
            "description": "Map of basic metadata for all findings deleted by the scan, indexed by finding uuid.\nNot available for CI runs.",
            "type": "object"
          },
          "deleted_package_versions": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SpecPackageVersionData"
            },
            "description": "List of deleted package versions indexed by UUID.",
            "type": "object"
          },
          "ecosystem_dep_counts": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "Number of dependencies per ecosystems processed during the scan.",
            "type": "object"
          },
          "ecosystem_pkg_counts": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "Number of package versions per ecosystems processed during the scan.",
            "type": "object"
          },
          "end_time": {
            "description": "Time the scan ended.",
            "format": "date-time",
            "type": "string"
          },
          "environment": {
            "$ref": "#/components/schemas/SpecEnvironment"
          },
          "errors": {
            "description": "Deprecated.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exception_findings": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SpecFindingData"
            },
            "description": "Deprecated.",
            "type": "object"
          },
          "exit_code": {
            "$ref": "#/components/schemas/v1EndorctlRC"
          },
          "findings": {
            "description": "List of all finding UUIDs identified by the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "has_panic": {
            "description": "True if there was a panic during the scan.",
            "type": "boolean"
          },
          "infos": {
            "description": "Deprecated.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "languages_detected": {
            "description": "List of languages detected by the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "logs": {
            "description": "User facing log output for the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "policies_triggered": {
            "description": "List of policy uuids triggered during the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "provisioning_result": {
            "$ref": "#/components/schemas/SpecProvisioningResultData"
          },
          "provisioning_result_uuid": {
            "type": "string"
          },
          "refs": {
            "description": "List of branches scanned.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "runtimes": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "A map of internal scan type runtimes (in milliseconds) indexed by internal scan type string.",
            "type": "object"
          },
          "start_time": {
            "description": "Time the scan started.",
            "format": "date-time",
            "type": "string"
          },
          "stats": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "Map of stats such as how many issues were ingested during the scan.",
            "type": "object"
          },
          "status": {
            "$ref": "#/components/schemas/ScanResultSpecStatus"
          },
          "type": {
            "$ref": "#/components/schemas/ScanResultSpecType"
          },
          "versions": {
            "description": "Version information for each ref.",
            "items": {
              "$ref": "#/components/schemas/v1Version"
            },
            "type": "array"
          },
          "warning_findings": {
            "description": "List of warning finding uuids identified by the scan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "description": "Deprecated.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "status",
          "type"
        ],
        "type": "object"
      },
      "v1ScanState": {
        "default": "SCAN_STATE_UNSPECIFIED",
        "description": "Scan state for a project or package version.\n\n - SCAN_STATE_NOT_PROCESSED: Object has not been processed by the system yet.\nSet when the project or package is created for the first time.\nA new project or package version is automatically placed in this state.\n - SCAN_STATE_IDLE: Object has been scanned at least once.\n - SCAN_STATE_INGESTING: Object is being scanned.\n - SCAN_STATE_ANALYTIC: Object is being analyzed.\n - SCAN_STATE_UNREACHABLE: Object cannot be ingested because it is not reachable from the scheduler.\n - SCAN_STATE_REQUEST_FULL_RESCAN: Object is marked for a complete rescan.\nThis only applies to OSS projects.\n - SCAN_STATE_REQUEST_INCREMENTAL_RESCAN: Object is marked for an incremental rescan, where only new packages\ndiscovered in the scan are added. Indicates that this project should be\nrescanned with a higher priority. Often because it is used by a customer\nand we need any new packages to be discovered and scanned with higher\npriority. If the project is put in this state, we will scan any new\npackages at high priority but we will not re-scan older packages.\n - SCAN_STATE_QUEUED: Object is queued to be scanned.\n - SCAN_STATE_QUARANTINED: Scan scheduling was unsuccessful due to a system errors. Object is\nquarantined from additional scheduling. Potentially object is an\norphan or similar situations.",
        "enum": [
          "SCAN_STATE_UNSPECIFIED",
          "SCAN_STATE_NOT_PROCESSED",
          "SCAN_STATE_IDLE",
          "SCAN_STATE_INGESTING",
          "SCAN_STATE_ANALYTIC",
          "SCAN_STATE_UNREACHABLE",
          "SCAN_STATE_REQUEST_FULL_RESCAN",
          "SCAN_STATE_REQUEST_INCREMENTAL_RESCAN",
          "SCAN_STATE_QUEUED",
          "SCAN_STATE_QUARANTINED"
        ],
        "type": "string"
      },
      "v1ScanWorkflow": {
        "description": "ScanWorkflow corresponds to a workflow of scan steps.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanWorkflowSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The unique identifier of the scan workflow.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1ScanWorkflowResult": {
        "description": "ScanWorkflowResult corresponds to a workflow scan result.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1ScanWorkflowResultSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The unique identifier of the scan workflow result.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec",
          "context"
        ],
        "type": "object"
      },
      "v1ScanWorkflowResultSpec": {
        "properties": {
          "end_time": {
            "description": "Time the scan ended.",
            "format": "date-time",
            "type": "string"
          },
          "execution_id": {
            "description": "The execution ID for all scans.",
            "type": "string"
          },
          "start_time": {
            "description": "Time the scan started.",
            "format": "date-time",
            "type": "string"
          },
          "stats": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "Map of stats such as how many issues were ingested during the scan.",
            "type": "object"
          },
          "status": {
            "$ref": "#/components/schemas/ScanResultSpecStatus"
          },
          "versions": {
            "description": "Version information for each ref.",
            "items": {
              "$ref": "#/components/schemas/v1Version"
            },
            "type": "array"
          },
          "workflow_results": {
            "description": "The workflow step results.",
            "items": {
              "$ref": "#/components/schemas/SpecWorkflowResult"
            },
            "type": "array"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "v1ScanWorkflowSpec": {
        "properties": {
          "automated_scan_parameters": {
            "$ref": "#/components/schemas/v1AutomatedScanParameters"
          },
          "remediation_parameters": {
            "$ref": "#/components/schemas/v1RemediationParameters"
          },
          "steps": {
            "description": "The workflow steps.",
            "items": {
              "$ref": "#/components/schemas/SpecWorkflowStep"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ScoreCard": {
        "description": "A scorecard contains a total score per ScoreCategory.",
        "properties": {
          "analysis_scope_description": {
            "description": "Description of the analysis scope.",
            "type": "string"
          },
          "category_scores": {
            "description": "The per category scores.",
            "items": {
              "$ref": "#/components/schemas/v1CategoryScore"
            },
            "type": "array"
          },
          "overall_score": {
            "description": "The overall score.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "v1ScoreCategory": {
        "default": "SCORE_CATEGORY_UNSPECIFIED",
        "description": "The types of scores that Endor Labs tracks.\n\n - SCORE_CATEGORY_POPULARITY: Tracks a project's popularity.\n - SCORE_CATEGORY_ACTIVITY: Tracks the amount of activity around a project.\n - SCORE_CATEGORY_BEST_PRACTICES: Tracks how much a project follows various development best practices.\n - SCORE_CATEGORY_SUSPICIOUS_ACTIVITY: Tracks suspicious activity on a project.\n - SCORE_CATEGORY_DEPENDENCIES: Tracks the dependencies of a project.\n - SCORE_CATEGORY_SECURITY: Tracks security aspects of a project.\n - SCORE_CATEGORY_CODE_QUALITY: Tracks the code quality of a project.\n - SCORE_CATEGORY_OPERATIONAL_RISK: Tracks the operationa risk of a project.",
        "enum": [
          "SCORE_CATEGORY_UNSPECIFIED",
          "SCORE_CATEGORY_POPULARITY",
          "SCORE_CATEGORY_ACTIVITY",
          "SCORE_CATEGORY_BEST_PRACTICES",
          "SCORE_CATEGORY_SUSPICIOUS_ACTIVITY",
          "SCORE_CATEGORY_DEPENDENCIES",
          "SCORE_CATEGORY_SECURITY",
          "SCORE_CATEGORY_CODE_QUALITY",
          "SCORE_CATEGORY_OPERATIONAL_RISK"
        ],
        "type": "string"
      },
      "v1ScoreFactor": {
        "description": "A score factor for an object. Each score factor\ndescribes a piece of information used while computing the overall score.\nEach factor is associated with a specific category. Score factors can have a\npositive impact on the repository score and then they have a positive score, or can\nhave a negative impact on the overall score and then they have a positive score.\nThe description captures additional information for the particular factor.\nIn general there are many (tens or hundreds) of such score factors split across the ScoreCategory categories.\n\nPostive score factor example:\n\n Category: SCORE_CATEGORY_BEST_PRACTICES\n\n Score: 2\n\n Description: The repository is enforcing signed commits.\n\nNegative score factor example:\n\nCategory: SCORE_CATEGORY_VULNERABILITIES\n\nScore: -1\n\nDescription: the repository has unresolved issues related to vulnerabilities that have been open for more than 3 months.",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/v1ScoreCategory"
          },
          "description": {
            "description": "Text description of the factor and its meaning.",
            "type": "string"
          },
          "evidence": {
            "description": "The details of what the factor was raised.",
            "type": "string"
          },
          "id": {
            "description": "Unique ID to identify the factor.",
            "type": "string"
          },
          "name": {
            "description": "An external name for the factor.",
            "type": "string"
          },
          "score": {
            "description": "The score for this factor.",
            "format": "int32",
            "type": "integer"
          },
          "score_float": {
            "description": "The float value of the score for the factor.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "v1ScoreFactorList": {
        "description": "A list of score factors that are directly exported by the related anlaytics.",
        "properties": {
          "score_factors": {
            "items": {
              "$ref": "#/components/schemas/v1ScoreFactor"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ScoreOptions": {
        "description": "ScoreOptions is used to score the result and potentially adjust the score.",
        "properties": {
          "boost": {
            "description": "boost is used to boost the score of the result.",
            "format": "float",
            "type": "number"
          },
          "constant": {
            "description": "constant is to used to replace the score of the result.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "v1ScpmData": {
        "description": "ScpmData contains normalized SCPM data.",
        "properties": {
          "branch_access": {
            "$ref": "#/components/schemas/v1BranchAccess"
          },
          "organization_access": {
            "$ref": "#/components/schemas/v1OrganizationAccess"
          },
          "platform_source": {
            "$ref": "#/components/schemas/v1PlatformSource"
          },
          "raw": {
            "description": "Raw, platform specific, ingested data.",
            "type": "object"
          },
          "repository_access": {
            "$ref": "#/components/schemas/v1RepositoryAccess"
          }
        },
        "required": [
          "platform_source",
          "raw"
        ],
        "type": "object"
      },
      "v1SearchClause": {
        "description": "SearchClause defines the search criteria.",
        "properties": {
          "autocomplete": {
            "$ref": "#/components/schemas/v1SearchClauseAutocomplete"
          },
          "compound": {
            "$ref": "#/components/schemas/v1SearchQuery"
          },
          "equals": {
            "$ref": "#/components/schemas/v1SearchClauseEquals"
          },
          "in": {
            "$ref": "#/components/schemas/v1SearchClauseIn"
          },
          "phrase": {
            "$ref": "#/components/schemas/v1SearchClausePhrase"
          },
          "query_string": {
            "$ref": "#/components/schemas/v1SearchClauseQueryString"
          },
          "range": {
            "$ref": "#/components/schemas/v1SearchClauseRange"
          },
          "regex": {
            "$ref": "#/components/schemas/v1SearchClauseRegex"
          },
          "text": {
            "$ref": "#/components/schemas/v1SearchClauseText"
          },
          "wildcard": {
            "$ref": "#/components/schemas/v1SearchClauseWildcard"
          }
        },
        "type": "object"
      },
      "v1SearchClauseAutocomplete": {
        "description": "Search clause for the autocomplete operator.",
        "properties": {
          "fuzzy": {
            "$ref": "#/components/schemas/v1Fuzzy"
          },
          "path": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          },
          "token_order": {
            "title": "\"sequential\" or \"any\"",
            "type": "string"
          }
        },
        "required": [
          "path",
          "query"
        ],
        "type": "object"
      },
      "v1SearchClauseEquals": {
        "description": "Search clause for equals operator. Field must be indexed as token.",
        "properties": {
          "path": {
            "description": "The path to the field to search.",
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          },
          "value": {
            "$ref": "#/components/schemas/v1SearchValue"
          }
        },
        "required": [
          "path",
          "value"
        ],
        "type": "object"
      },
      "v1SearchClauseIn": {
        "description": "Search clause for in operator. Field must be indexed as token.",
        "properties": {
          "path": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/v1SearchValue"
            },
            "type": "array"
          }
        },
        "required": [
          "path",
          "values"
        ],
        "type": "object"
      },
      "v1SearchClausePhrase": {
        "description": "Search clause for phrase operator. Field must be indexed as text.",
        "properties": {
          "path": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "required": [
          "path",
          "query"
        ],
        "type": "object"
      },
      "v1SearchClauseQueryString": {
        "description": "Search clause for query string operator. Field must be indexed as text.",
        "properties": {
          "path": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "required": [
          "path",
          "query"
        ],
        "type": "object"
      },
      "v1SearchClauseRange": {
        "description": "Search clause for the range operator. Field must be indexed as number.",
        "properties": {
          "gt": {
            "$ref": "#/components/schemas/v1SearchValue"
          },
          "gte": {
            "$ref": "#/components/schemas/v1SearchValue"
          },
          "lt": {
            "$ref": "#/components/schemas/v1SearchValue"
          },
          "lte": {
            "$ref": "#/components/schemas/v1SearchValue"
          },
          "path": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "v1SearchClauseRegex": {
        "description": "Regex is used to search for a string that matches a regular expression.",
        "properties": {
          "allow_analyzed": {
            "description": "Default: false.",
            "type": "boolean"
          },
          "path": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "required": [
          "path",
          "query"
        ],
        "type": "object"
      },
      "v1SearchClauseText": {
        "description": "Search clause for text operator. Field must be indexed as text.",
        "properties": {
          "full_match": {
            "description": "Default: false.",
            "type": "boolean"
          },
          "fuzzy": {
            "$ref": "#/components/schemas/v1Fuzzy"
          },
          "path": {
            "description": "The path to the field to search.",
            "type": "string"
          },
          "query": {
            "description": "The text to search for.",
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "required": [
          "path",
          "query"
        ],
        "type": "object"
      },
      "v1SearchClauseWildcard": {
        "description": "Search clause for the wildcard operator.",
        "properties": {
          "allow_analyzed": {
            "description": "Default: false.",
            "type": "boolean"
          },
          "path": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "score_options": {
            "$ref": "#/components/schemas/v1ScoreOptions"
          }
        },
        "required": [
          "path",
          "query"
        ],
        "type": "object"
      },
      "v1SearchQuery": {
        "description": "SearchQuery is the top level message for search queries.",
        "properties": {
          "filters": {
            "description": "filters are used to filter the results.",
            "items": {
              "$ref": "#/components/schemas/v1SearchClause"
            },
            "type": "array"
          },
          "must": {
            "description": "must clauses must be satisfied.",
            "items": {
              "$ref": "#/components/schemas/v1SearchClause"
            },
            "type": "array"
          },
          "must_not": {
            "description": "must_not clauses must not be satisfied for a result to be returned.",
            "items": {
              "$ref": "#/components/schemas/v1SearchClause"
            },
            "type": "array"
          },
          "should": {
            "description": "should clauses should be satisfied for a result to be returned.\nMainly used for partial matching.",
            "items": {
              "$ref": "#/components/schemas/v1SearchClause"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SearchValue": {
        "description": "Search value is used to search for a value. This needs to be typed.",
        "properties": {
          "bool_value": {
            "type": "boolean"
          },
          "double_value": {
            "format": "double",
            "type": "number"
          },
          "int64_value": {
            "format": "int64",
            "type": "string"
          },
          "string_value": {
            "type": "string"
          },
          "timestamp_value": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SecretInfo": {
        "description": "A brief summary of secret results.",
        "properties": {
          "confidence": {
            "description": "Confidence of the result.",
            "type": "string"
          },
          "file": {
            "description": "The file where the result was found.",
            "type": "string"
          },
          "line": {
            "description": "The line in the file where the result was found.",
            "format": "int32",
            "type": "integer"
          },
          "match": {
            "description": "The text that matched.",
            "type": "string"
          },
          "rule_id": {
            "description": "The rule that generated the result.",
            "type": "string"
          },
          "severity": {
            "description": "The severity of the result.",
            "type": "string"
          },
          "snippet": {
            "description": "The source code that was responsible for triggering the result.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SecretRule": {
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in\nchildren namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SecretRuleSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the secret rule.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1SecretRuleSpec": {
        "description": "Internal specification of the object.\n\nFollows the specification of the gitleaks configuration object defined\nhere: https://github.com/gitleaks/gitleaks/blob/master/config/rule.go",
        "properties": {
          "allowlist": {
            "$ref": "#/components/schemas/v1Allowlist"
          },
          "allowlists": {
            "description": "Allows a rule to be ignored for specific regexes, paths, and/or commits.\nReplaces the singular allowlist field to align with gitleaks v8.21+\nconfig format, which supports multiple allowlists per rule with\nindependent regex_target and condition values.",
            "items": {
              "$ref": "#/components/schemas/v1Allowlist"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the rule.",
            "type": "string"
          },
          "disabled": {
            "description": "Rule is disabled.",
            "type": "boolean"
          },
          "entropy": {
            "description": "A float representing the minimum Shannon entropy\na regex group must have to be considered a secret.",
            "format": "float",
            "type": "number"
          },
          "keywords": {
            "description": "Keywords are used for pre-regex check filtering. Rules that contain\nkeywords will perform a quick string compare check to make sure the\nkeywords are in the content being scanned.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "path": {
            "title": "A golang regular expression used to\nfilter secrets by path",
            "type": "string"
          },
          "regex": {
            "description": "A golang regular expression used to detect secrets.",
            "type": "string"
          },
          "rule_id": {
            "description": "The unique identifier for this rule.",
            "type": "string"
          },
          "secret_group": {
            "description": "An int used to extract secret from regex\nmatch and used as the group that will have its entropy\nchecked if `entropy` is set.",
            "format": "int32",
            "type": "integer"
          },
          "tags": {
            "description": "An array of strings used for metadata\nand reporting purposes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validation": {
            "$ref": "#/components/schemas/v1HttpParamsProfile"
          }
        },
        "type": "object"
      },
      "v1SecretStats": {
        "description": "The secret statistics message. This is included as the payload of a metric object.",
        "properties": {
          "distinct_file_types_with_secrets": {
            "description": "The count of distinct file types with secrets.",
            "format": "int32",
            "type": "integer"
          },
          "distinct_rules_with_results": {
            "description": "The count of distint rules with results.",
            "format": "int32",
            "type": "integer"
          },
          "file_cnt_by_category": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count for each category.",
            "type": "object"
          },
          "file_cnt_by_file_type": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count for each file type.",
            "type": "object"
          },
          "file_cnt_by_rule": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count for each rule.",
            "type": "object"
          },
          "file_cnt_by_severity": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of distinct file count for each severity level.",
            "type": "object"
          },
          "files_with_secrets_count": {
            "description": "The number of files with secrets.",
            "format": "int32",
            "type": "integer"
          },
          "result_count": {
            "description": "The number of secrets found.",
            "format": "int32",
            "type": "integer"
          },
          "results_cnt_by_file_type": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count for each file type.",
            "type": "object"
          },
          "results_cnt_by_rule": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count for each rule.",
            "type": "object"
          },
          "results_cnt_by_severity": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "description": "The breakdown of result count for each severity level.",
            "type": "object"
          },
          "secrets": {
            "description": "A list of all the linter results.",
            "items": {
              "$ref": "#/components/schemas/v1SecretInfo"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SecretSummary": {
        "properties": {
          "fs_scanned": {
            "title": "Set when the secret was discovered by looking into the filesystem",
            "type": "boolean"
          },
          "git_log_scanned": {
            "description": "Set when the secret was discovered by looking in the Git logs using the\nfull history option.",
            "type": "boolean"
          },
          "secret_id": {
            "description": "Same value for two linter results with the same secret found in different\nlocations.",
            "type": "string"
          },
          "validation": {
            "$ref": "#/components/schemas/v1ValidationStatus"
          }
        },
        "title": "Secret summary",
        "type": "object"
      },
      "v1SecurityReviewFindingData": {
        "properties": {
          "ai_meta": {
            "$ref": "#/components/schemas/v1AIMeta"
          },
          "category": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoSecurityReviewCategory"
          },
          "code_snippet": {
            "$ref": "#/components/schemas/PullRequestSecurityReviewResultInfoCodeSnippet"
          },
          "justification": {
            "description": "Justification for the security review category.",
            "type": "string"
          },
          "security_impact_type": {
            "$ref": "#/components/schemas/SecurityAspectMetricSecurityImpactType"
          }
        },
        "type": "object"
      },
      "v1SegmentContentKind": {
        "default": "SEGMENT_CONTENT_KIND_UNSPECIFIED",
        "description": "SegmentContentKind is the kind of the segment.",
        "enum": [
          "SEGMENT_CONTENT_KIND_UNSPECIFIED",
          "SEGMENT_CONTENT_KIND_FUNCTION",
          "SEGMENT_CONTENT_KIND_TYPE",
          "SEGMENT_CONTENT_KIND_LICENSE"
        ],
        "type": "string"
      },
      "v1SegmentMetadata": {
        "properties": {
          "code_size": {
            "description": "Size of code for this segment.",
            "format": "int64",
            "type": "string"
          },
          "content_kind": {
            "$ref": "#/components/schemas/v1SegmentContentKind"
          },
          "embedding": {
            "$ref": "#/components/schemas/v1EmbeddingVector"
          },
          "signature": {
            "description": "Signature for this segment.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepEndpoints": {
        "properties": {
          "web": {
            "$ref": "#/components/schemas/v1SemgrepWeb"
          }
        },
        "type": "object"
      },
      "v1SemgrepExposure": {
        "properties": {
          "exclude": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "include": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SemgrepFixRegex": {
        "properties": {
          "count": {
            "format": "int32",
            "type": "integer"
          },
          "regex": {
            "type": "string"
          },
          "replacement": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepManagement": {
        "properties": {
          "endpoints": {
            "$ref": "#/components/schemas/v1SemgrepEndpoints"
          }
        },
        "type": "object"
      },
      "v1SemgrepMetaAsvs": {
        "properties": {
          "control_id": {
            "type": "string"
          },
          "control_url": {
            "type": "string"
          },
          "section": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepMetavariableAnalysis": {
        "properties": {
          "analyzer": {
            "type": "string"
          },
          "metavariable": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepMetavariableComparison": {
        "properties": {
          "base": {
            "type": "boolean"
          },
          "comparison": {
            "type": "string"
          },
          "metavariable": {
            "type": "string"
          },
          "strip": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1SemgrepMetavariablePattern": {
        "properties": {
          "language": {
            "type": "string"
          },
          "metavariable": {
            "type": "string"
          },
          "pattern": {
            "type": "string"
          },
          "pattern_either": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_regex": {
            "type": "string"
          },
          "patterns": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SemgrepMetavariableRegex": {
        "properties": {
          "metavariable": {
            "type": "string"
          },
          "regex": {
            "type": "string"
          },
          "x": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepMetavariableType": {
        "properties": {
          "metavariable": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepNativeRule": {
        "description": "SemgrepNativeRule reflects the Semgrep rules as per the specification.",
        "properties": {
          "fix": {
            "type": "string"
          },
          "fix_regex": {
            "$ref": "#/components/schemas/v1SemgrepFixRegex"
          },
          "focus_metavariable": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "languages": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "message": {
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/v1SemgrepRuleMeta"
          },
          "metavariable_pattern": {
            "$ref": "#/components/schemas/v1SemgrepMetavariablePattern"
          },
          "metavariable_regex": {
            "$ref": "#/components/schemas/v1SemgrepMetavariableRegex"
          },
          "min_version": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "options": {
            "$ref": "#/components/schemas/v1SemgrepOptions"
          },
          "paths": {
            "$ref": "#/components/schemas/v1SemgrepPaths"
          },
          "pattern": {
            "type": "string"
          },
          "pattern_either": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_inside": {
            "type": "string"
          },
          "pattern_inside_either": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_not": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_propagators": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_regex": {
            "type": "string"
          },
          "pattern_sanitizers": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_sinks": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_sources": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "patterns": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "references": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "severity": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepOptions": {
        "properties": {
          "constant_propagation": {
            "description": "Enables constant propagation analysis.",
            "type": "boolean"
          },
          "generic_ellipsis_max_span": {
            "description": "Maximum span for generic ellipsis patterns.",
            "format": "int32",
            "type": "integer"
          },
          "generic_engine": {
            "description": "Specifies the generic engine to use for analysis.",
            "type": "string"
          },
          "implicit_deep_exprstmt": {
            "description": "Enables implicit deep expression statement analysis.",
            "type": "boolean"
          },
          "interfile": {
            "description": "Enables interfile analysis for cross-file taint tracking.",
            "type": "boolean"
          },
          "symbolic_propagation": {
            "description": "Enables symbolic propagation analysis for taint tracking.",
            "type": "boolean"
          },
          "taint_assume_safe_booleans": {
            "description": "Assumes boolean values are safe in taint analysis.",
            "type": "boolean"
          },
          "taint_assume_safe_functions": {
            "description": "Assumes function calls are safe in taint analysis.",
            "type": "boolean"
          },
          "taint_assume_safe_numbers": {
            "description": "Assumes numeric values are safe in taint analysis.",
            "type": "boolean"
          },
          "taint_unify_mvars": {
            "description": "Enables unification of metavariables in taint analysis.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "v1SemgrepPaths": {
        "properties": {
          "exclude": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "include": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SemgrepRule": {
        "properties": {
          "disabled": {
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Propagate indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SemgrepRuleSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the Semgrep rule.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1SemgrepRuleMeta": {
        "properties": {
          "ai_provider": {
            "type": "string"
          },
          "asvs": {
            "$ref": "#/components/schemas/v1SemgrepMetaAsvs"
          },
          "author": {
            "type": "string"
          },
          "bandit_code": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "confidence": {
            "type": "string"
          },
          "confidence_level": {
            "$ref": "#/components/schemas/endorv1ConfidenceLevel"
          },
          "cwe": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cwe2020_top25": {
            "type": "boolean"
          },
          "cwe2021_top25": {
            "type": "boolean"
          },
          "cwe2022_top25": {
            "type": "boolean"
          },
          "cwe2023_top25": {
            "type": "boolean"
          },
          "deprecated": {
            "type": "boolean"
          },
          "description": {
            "description": "A description of the rule.",
            "type": "string"
          },
          "display_name": {
            "type": "string"
          },
          "endor_attack_examples": {
            "description": "References to the description of an attack (if any) that used the\nrespective code.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "endor_category": {
            "description": "Determines what a rule is used for (possible values: vulnerability,\nmalware-detection, critical-api, or llm).",
            "type": "string"
          },
          "endor_rule_origin": {
            "$ref": "#/components/schemas/v1EndorRuleOrigin"
          },
          "endor_tags": {
            "description": "ENDOR_TAG_SEMGREP_IGNORE\n  ENDOR_TAG_ANALYTICS_INFO\n  ENDOR_TAG_ANALYTICS_IMPACT",
            "items": {
              "type": "string"
            },
            "title": "Container for generic tags that control later processing of rule results.\nCertain ENDOR specific tags exist and are reserved for internal use, like:",
            "type": "array"
          },
          "endor_targets": {
            "description": "Determines whether a rule is run against the repository and/or package\n(possible values: package, repository).",
            "items": {
              "$ref": "#/components/schemas/v1EndorTarget"
            },
            "type": "array"
          },
          "explanation": {
            "type": "string"
          },
          "functional_categories": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "help": {
            "type": "string"
          },
          "impact": {
            "type": "string"
          },
          "interfile": {
            "type": "boolean"
          },
          "license": {
            "type": "string"
          },
          "likelihood": {
            "type": "string"
          },
          "masvs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "owasp": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "owaspapi": {
            "type": "string"
          },
          "precision": {
            "type": "string"
          },
          "references": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "remediation": {
            "type": "string"
          },
          "resources": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rule_origin_note": {
            "type": "string"
          },
          "security_severity": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "short_description": {
            "type": "string"
          },
          "source_rule_url": {
            "type": "string"
          },
          "source_url_open": {
            "type": "string"
          },
          "subcategory": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "technology": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "version": {
            "description": "The semantic version of this rule.",
            "type": "string"
          },
          "vulnerability": {
            "type": "string"
          },
          "vulnerability_class": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "title": "Semgrep rule specifications",
        "type": "object"
      },
      "v1SemgrepRulePatternType": {
        "properties": {
          "by_side_effect": {
            "type": "boolean"
          },
          "exact": {
            "type": "boolean"
          },
          "focus_metavariable": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "from": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "management": {
            "$ref": "#/components/schemas/v1SemgrepManagement"
          },
          "metavariable_analysis": {
            "$ref": "#/components/schemas/v1SemgrepMetavariableAnalysis"
          },
          "metavariable_comparison": {
            "$ref": "#/components/schemas/v1SemgrepMetavariableComparison"
          },
          "metavariable_pattern": {
            "$ref": "#/components/schemas/v1SemgrepMetavariablePattern"
          },
          "metavariable_regex": {
            "$ref": "#/components/schemas/v1SemgrepMetavariableRegex"
          },
          "metavariable_type": {
            "$ref": "#/components/schemas/v1SemgrepMetavariableType"
          },
          "not_conflicting": {
            "type": "boolean"
          },
          "pattern": {
            "type": "string"
          },
          "pattern_either_new": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_inside": {
            "type": "string"
          },
          "pattern_inside_either": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "pattern_not": {
            "type": "string"
          },
          "pattern_not_inside": {
            "type": "string"
          },
          "pattern_not_regex": {
            "type": "string"
          },
          "pattern_regex": {
            "type": "string"
          },
          "patterns": {
            "items": {
              "$ref": "#/components/schemas/v1SemgrepRulePatternType"
            },
            "type": "array"
          },
          "requires": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepRuleSpec": {
        "properties": {
          "defined_by": {
            "description": "Endor Labs or the name of the tenant creating the rule.",
            "readOnly": true,
            "type": "string"
          },
          "disabled": {
            "description": "Rule is disabled.",
            "type": "boolean"
          },
          "rule": {
            "$ref": "#/components/schemas/v1SemgrepNativeRule"
          },
          "severity_level": {
            "$ref": "#/components/schemas/v1SemgrepRuleSpecSeverityLevel"
          },
          "yaml": {
            "description": "Yaml is the rule in its original yaml format.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SemgrepRuleSpecSeverityLevel": {
        "default": "SEVERITY_LEVEL_UNSPECIFIED",
        "description": "The severity level of the rule. This is computed using the values of the\nconfidence and the impact from the rule itself. If those values are not\ndefined, the severity level is set to LOW.",
        "enum": [
          "SEVERITY_LEVEL_UNSPECIFIED",
          "SEVERITY_LEVEL_LOW",
          "SEVERITY_LEVEL_MEDIUM",
          "SEVERITY_LEVEL_HIGH",
          "SEVERITY_LEVEL_CRITICAL"
        ],
        "type": "string"
      },
      "v1SemgrepSummary": {
        "description": "Semgrep summary.",
        "properties": {
          "ai_provider": {
            "type": "string"
          },
          "confidence": {
            "type": "string"
          },
          "cwes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "type": "string"
          },
          "explanation": {
            "type": "string"
          },
          "impact": {
            "type": "string"
          },
          "languages": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "likelihood": {
            "type": "string"
          },
          "references": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "remediation": {
            "type": "string"
          },
          "rule_name": {
            "type": "string"
          },
          "rule_uuid": {
            "type": "string"
          },
          "rule_version": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1SemgrepTriggerPattern": {
        "description": "A pattern that triggered the vulnerability scan.",
        "properties": {
          "pattern": {
            "$ref": "#/components/schemas/v1SemgrepMetavariablePattern"
          }
        },
        "type": "object"
      },
      "v1SemgrepWeb": {
        "properties": {
          "exposure": {
            "$ref": "#/components/schemas/v1SemgrepExposure"
          }
        },
        "type": "object"
      },
      "v1Sibling": {
        "properties": {
          "rfilename": {
            "description": "The filename within a specific model.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SimpleContainerImage": {
        "description": "SimpleContainerImage describes the structure of a basic container image signature payload, as defined at:\nhttps://github.com/containers/image/blob/main/docs/containers-signature.5.md#json-data-format.\n\nWe don't really need to use these definitions since they are only kept in our database and will\nnot be visible externally. However, if we ever decide to save our signatures as part of the OCI\ncontainer registries or even be asked to \"export\" our data for customers that perhaps want to\nmigrate to cosign or notary, then this will make this effort more seamless because it's the\nstandard format used.",
        "properties": {
          "critical": {
            "$ref": "#/components/schemas/v1Critical"
          }
        },
        "type": "object"
      },
      "v1SlackConfig": {
        "properties": {
          "webhook_url": {
            "type": "string"
          }
        },
        "required": [
          "webhook_url"
        ],
        "type": "object"
      },
      "v1SlackTemplate": {
        "properties": {
          "open_action_template": {
            "description": "The template to be used for OPEN action for slack plugin.",
            "type": "string"
          },
          "update_action_template": {
            "description": "The template to be used for UPDATE action for slack plugin.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SourceLocation": {
        "properties": {
          "description": {
            "description": "Human-readable description of what happens at this dataflow step.",
            "type": "string"
          },
          "end_column": {
            "format": "int32",
            "title": "Ending column number in the file",
            "type": "integer"
          },
          "end_line": {
            "format": "int32",
            "title": "Ending line number in the file",
            "type": "integer"
          },
          "function_name": {
            "description": "The name of the function for this location if available.",
            "type": "string"
          },
          "relative_path": {
            "description": "The relative path to the file where the issue was found.",
            "type": "string"
          },
          "scm_link": {
            "description": "Permalink to this location in the SCM (GitHub/GitLab/Azure/Bitbucket). Displayed in the UI.",
            "type": "string"
          },
          "snippet": {
            "description": "Code snippet containing the issue.",
            "type": "string"
          },
          "start_column": {
            "format": "int32",
            "title": "Starting column number in the file",
            "type": "integer"
          },
          "start_line": {
            "format": "int32",
            "title": "Starting line number in the file",
            "type": "integer"
          },
          "type": {
            "$ref": "#/components/schemas/v1LocationType"
          }
        },
        "type": "object"
      },
      "v1SwiftSpec": {
        "description": "Represents a configuration for the Swift package manager.",
        "properties": {
          "basic_auth": {
            "$ref": "#/components/schemas/v1SwiftSpecBasicAuth"
          },
          "priority": {
            "description": "The priority of the Swift package manager.\nPriorities are relative. If multiple package managers\nhave the same priority, the order between them can be random.\nLower number means higher priority.",
            "format": "int32",
            "type": "integer"
          },
          "scope": {
            "description": "The private registry scope.",
            "type": "string"
          },
          "token": {
            "description": "Access token to authenticate to the registry.",
            "type": "string"
          },
          "url": {
            "description": "The URL of the registry that the Swift package manager must use.",
            "type": "string"
          }
        },
        "required": [
          "priority"
        ],
        "type": "object"
      },
      "v1SwiftSpecBasicAuth": {
        "properties": {
          "password": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1SwiftToolChain": {
        "properties": {
          "additional_swift_versions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "version": {
            "$ref": "#/components/schemas/v1ToolChainVersion"
          }
        },
        "required": [
          "version"
        ],
        "type": "object"
      },
      "v1SystemConfig": {
        "description": "SystemConfig represents the system configuration for a tenant.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Indicates that the object should be visible in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1SystemConfigSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the system configuration.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta",
          "spec"
        ],
        "type": "object"
      },
      "v1SystemConfigSpec": {
        "properties": {
          "ai": {
            "$ref": "#/components/schemas/SystemConfigAiConfig"
          },
          "analytics": {
            "$ref": "#/components/schemas/SystemConfigAnalyticsConfig"
          },
          "artifactory": {
            "$ref": "#/components/schemas/SystemConfigArtifactoryConfig"
          },
          "cloud_deployment": {
            "$ref": "#/components/schemas/SystemConfigCloudDeploymentConfig"
          },
          "endor_ignore": {
            "$ref": "#/components/schemas/SystemConfigEndorIgnoreConfig"
          },
          "finding_prioritization": {
            "$ref": "#/components/schemas/v1PrioritizationConfig"
          },
          "logging": {
            "$ref": "#/components/schemas/SystemConfigLoggingConfig"
          },
          "package_firewall": {
            "$ref": "#/components/schemas/SystemConfigPackageFirewallConfig"
          },
          "policy": {
            "$ref": "#/components/schemas/SystemConfigPolicyConfig"
          },
          "sast": {
            "$ref": "#/components/schemas/SystemConfigSastConfig"
          },
          "urgent_notification": {
            "$ref": "#/components/schemas/SystemConfigUrgentNotificationConfig"
          }
        },
        "type": "object"
      },
      "v1SystemEvaluationMethodDefinition": {
        "default": "SYSTEM_EVALUATION_METHOD_DEFINITION_UNSPECIFIED",
        "description": "SystemEvaluationMethodDefinition is the type of evaluation method implemented\nby the system.\n\n - SYSTEM_EVALUATION_METHOD_DEFINITION_VULNERABILITIES: VULNERABILITIES calculates vulnerability related findings.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_SCORES: SCORES calculates score related findings.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_CONDITIONS: CONDITIONS calculates findings related to specific conditions.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_POLICIES: POLICIES evaluates methods based on user defined policies.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_TYPOSQUATTING: TYPOSQUATTING calculates the findings related to typosquatted packages.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_CIS: CIS calculates the findings related to CIS benchmark requirements.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_MALWARE: MALWARE calculates the findings related to malware.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_SECURITY_REVIEW: SECURITY REVIEW calculates security review related findings.\n - SYSTEM_EVALUATION_METHOD_DEFINITION_AI_SAST: AI_SAST calculates AI SAST related findings.",
        "enum": [
          "SYSTEM_EVALUATION_METHOD_DEFINITION_UNSPECIFIED",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_VULNERABILITIES",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_SCORES",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_CONDITIONS",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_POLICIES",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_TYPOSQUATTING",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_CIS",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_MALWARE",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_SECURITY_REVIEW",
          "SYSTEM_EVALUATION_METHOD_DEFINITION_AI_SAST"
        ],
        "type": "string"
      },
      "v1SystemRole": {
        "default": "SYSTEM_ROLE_UNSPECIFIED",
        "description": "Captures the default system roles for permissions.\n\n - SYSTEM_ROLE_ADMIN: ADMIN has read/write access to all objects in the tenant.\n - SYSTEM_ROLE_READ_ONLY: READ_ONLY only can read all data, but perform no updates.\n - SYSTEM_ROLE_POLICY_EDITOR: Policy editor has read access on all objects, and the ability to create and\nmanage policies.\n - SYSTEM_ROLE_CODE_SCANNER: CODE_SCANNER has all permissions to run a scan and view the results.\n - SYSTEM_ROLE_ENDOR_PATCHING: ENDOR_PATCHING has permissions to use Endor Lab's factory.\n - SYSTEM_ROLE_SYNC_ORG: SYNC_ORG has permissions to perform a sync-org scan on all supported\nplatforms (GitHub, Azure, GitLab etc).\n - SYSTEM_ROLE_ONPREM_SCHEDULER: ONPREM_SCHEDULER has permissions to perform sync-org, scans and manage\nonprem scheduler related objects.\n - SYSTEM_ROLE_ENDOR_PROXY: Deprecated: Use SYSTEM_ROLE_PACKAGE_FIREWALL instead.\nENDOR_PROXY has permissions to access proxy endpoints in endorfactory service.\n - SYSTEM_ROLE_PACKAGE_FIREWALL: PACKAGE_FIREWALL has permissions to access firewall endpoints for package firewall in endorfactory service.\n - SYSTEM_ROLE_AI_AUDIT: AI_AUDIT has least-privilege permissions to run ai-audit hooks (agent session events).",
        "enum": [
          "SYSTEM_ROLE_UNSPECIFIED",
          "SYSTEM_ROLE_ADMIN",
          "SYSTEM_ROLE_READ_ONLY",
          "SYSTEM_ROLE_POLICY_EDITOR",
          "SYSTEM_ROLE_CODE_SCANNER",
          "SYSTEM_ROLE_ENDOR_PATCHING",
          "SYSTEM_ROLE_SYNC_ORG",
          "SYSTEM_ROLE_ONPREM_SCHEDULER",
          "SYSTEM_ROLE_ENDOR_PROXY",
          "SYSTEM_ROLE_PACKAGE_FIREWALL",
          "SYSTEM_ROLE_AI_AUDIT"
        ],
        "type": "string"
      },
      "v1TagCounts": {
        "properties": {
          "counts": {
            "additionalProperties": {
              "format": "uint64",
              "type": "string"
            },
            "description": "Overall activity count per tag.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1Target": {
        "properties": {
          "exclude": {
            "description": "Set to true if a dependency is excluded from the target.",
            "type": "boolean"
          },
          "name": {
            "description": "Target name. Example: linux, dotnet, x86_64.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/TargetTargetType"
          },
          "version": {
            "description": "Target version, for example, 6.0.0 for the dotnet framework\nversion 6.0.0. If there is no version specified for a target then that\nmeans that a dependency is applicable for all versions of that target.\nThis field is optional because few targets, such as CPU_ARCH,\ndo not have a version.",
            "type": "string"
          }
        },
        "required": [
          "type",
          "name",
          "exclude"
        ],
        "type": "object"
      },
      "v1TemplateParamName": {
        "default": "TEMPLATE_PARAM_NAME_UNSPECIFIED",
        "description": "TemplateParamName is the name of the template param used in secret validation profiles.\n\n - TEMPLATE_PARAM_NAME_CLIENT_ID: \"ClientID\" is the template parameter name for client ID.\n - TEMPLATE_PARAM_NAME_TENANT_ID: \"TenantID\" is the template parameter name for tenant ID.",
        "enum": [
          "TEMPLATE_PARAM_NAME_UNSPECIFIED",
          "TEMPLATE_PARAM_NAME_CLIENT_ID",
          "TEMPLATE_PARAM_NAME_TENANT_ID"
        ],
        "type": "string"
      },
      "v1Tenant": {
        "description": "Tenant represents a tenant in the system.\n\nMostly includes tenant configuration parameters.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1TenantSpec"
          },
          "uuid": {
            "description": "The UUID of a tenant.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1TenantMeta": {
        "description": "Tenant related data for the tenant containing the resource.",
        "properties": {
          "namespace": {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "type": "string"
          }
        },
        "required": [
          "namespace"
        ],
        "type": "object"
      },
      "v1TenantSpec": {
        "properties": {
          "city": {
            "description": "The city of a users address.",
            "type": "string"
          },
          "code": {
            "description": "A user's area code.",
            "type": "string"
          },
          "country": {
            "description": "A user's country of residence.",
            "type": "string"
          },
          "organization_urls": {
            "description": "The list of URLs which are associated with the given organization which can be included in the supplier SBOM information.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "organizational_contacts": {
            "description": "The list of contact that we can put as the contact in the SBOM export supplier information.",
            "items": {
              "$ref": "#/components/schemas/v1TenantSpecOrganizationalContact"
            },
            "type": "array"
          },
          "organizational_entity_name": {
            "title": "The human-readable name of the organization. Will be used as supplier for the SBOM.\nAlthough this is not a required field this will be validated when trying to export an SBOM.bool",
            "type": "string"
          },
          "phone_number": {
            "description": "A user's phone number.",
            "type": "string"
          },
          "placement_zone": {
            "description": "The placement zone for internal tenant routing and sharding.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "The state of a users address.",
            "type": "string"
          },
          "street": {
            "description": "The street address of a user.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1TenantSpecOrganizationalContact": {
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "v1TimeResolution": {
        "default": "TIME_RESOLUTION_UNSPECIFIED",
        "description": "Describes the resolution used.",
        "enum": [
          "TIME_RESOLUTION_UNSPECIFIED",
          "TIME_RESOLUTION_DAY",
          "TIME_RESOLUTION_MONTH",
          "TIME_RESOLUTION_YEAR"
        ],
        "type": "string"
      },
      "v1TimeSlot": {
        "description": "Structure that contains activity information for a given slot of time.\nEach slot could  capture activity for one day, month or year, depending on the resolution used.",
        "properties": {
          "count": {
            "description": "The count of activity in the slot.",
            "format": "uint64",
            "type": "string"
          },
          "tag_activity": {
            "additionalProperties": {
              "format": "uint64",
              "type": "string"
            },
            "description": "The breakdown of activity per tag. When we track an activity,\nit can be associated with a user specified tag (for example, \"Open\" for a PR).\nSo here we get the per-tag breakdown.",
            "type": "object"
          },
          "timestamp": {
            "description": "Timestamp of the slot. The resolution of this timestamp\ndepends on the time resolution we are tracking, so for\ndaily resolution will be the 12:00am of the day.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1TimeTracker": {
        "description": "Tge sequence of TimeSlots for each time resolution we track.\nWe can track multiple resolutions, and some resolutions may be empty.",
        "properties": {
          "daily_activity": {
            "items": {
              "$ref": "#/components/schemas/v1TimeSlot"
            },
            "type": "array"
          },
          "monthly_activity": {
            "items": {
              "$ref": "#/components/schemas/v1TimeSlot"
            },
            "type": "array"
          },
          "resolutions": {
            "items": {
              "$ref": "#/components/schemas/v1TimeResolution"
            },
            "type": "array"
          },
          "yearly_activity": {
            "items": {
              "$ref": "#/components/schemas/v1TimeSlot"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1TokenAuth": {
        "description": "TokenAuth is a single opaque token credential. Its wire encoding is\necosystem-specific (see per-spec doc comments): a literal Authorization:\nBearer header where the tooling supports it (Maven), otherwise the HTTP\nBasic password. Named TokenAuth (not BearerAuth) precisely because it is\nnot a bearer header on every ecosystem.",
        "properties": {
          "token": {
            "description": "The opaque token credential; see the message doc for per-ecosystem wire encoding.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ToolChainProfile": {
        "description": "ToolChainProfile represents the list of tool chains that need to be\ninstalled.",
        "properties": {
          "os": {
            "additionalProperties": {
              "$ref": "#/components/schemas/ToolChainProfileArchitectureToolChain"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1ToolChainVersion": {
        "description": "ToolChainVersion defines the tool chain's source from where it can be installed.",
        "properties": {
          "name": {
            "description": "name of the tool chain.",
            "type": "string"
          },
          "relative_tool_chain_path": {
            "description": "relative path of the tool chain in tar ball.",
            "type": "string"
          },
          "sha256_sum": {
            "description": "SHA256 Digest of the tool that will be downloaded.",
            "type": "string"
          },
          "urls": {
            "description": "http mirros from where the tool can be downloaded.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ToolChains": {
        "properties": {
          "android_tool_chain": {
            "$ref": "#/components/schemas/v1AndroidToolChain"
          },
          "dotnet_tool_chain": {
            "$ref": "#/components/schemas/v1DotNetToolChain"
          },
          "environment_variables": {
            "description": "environment_variables are the env variables to be set during toolchain installation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "golang_tool_chain": {
            "$ref": "#/components/schemas/v1GolangToolChain"
          },
          "java_tool_chain": {
            "$ref": "#/components/schemas/v1JavaToolChain"
          },
          "javascript_tool_chain": {
            "$ref": "#/components/schemas/v1JavaScriptToolChain"
          },
          "php_tool_chain": {
            "$ref": "#/components/schemas/v1PHPToolChain"
          },
          "python_tool_chain": {
            "$ref": "#/components/schemas/v1PythonToolChain"
          },
          "ruby_tool_chain": {
            "$ref": "#/components/schemas/v1RubyToolChain"
          },
          "rust_tool_chain": {
            "$ref": "#/components/schemas/v1RustToolChain"
          },
          "scala_tool_chain": {
            "$ref": "#/components/schemas/v1ScalaToolChain"
          },
          "swift_tool_chain": {
            "$ref": "#/components/schemas/v1SwiftToolChain"
          }
        },
        "type": "object"
      },
      "v1ToolChainsSource": {
        "default": "TOOL_CHAINS_SOURCE_UNSPECIFIED",
        "description": "Toolchain source types.",
        "enum": [
          "TOOL_CHAINS_SOURCE_UNSPECIFIED",
          "TOOL_CHAINS_SOURCE_API",
          "TOOL_CHAINS_SOURCE_FILE",
          "TOOL_CHAINS_SOURCE_AUTO_DETECTION",
          "TOOL_CHAINS_SOURCE_DEFAULTS",
          "TOOL_CHAINS_SOURCE_NAMESPACE_DEFAULT"
        ],
        "type": "string"
      },
      "v1TypeChange": {
        "description": "Protobuf definition for TypeChange.",
        "properties": {
          "declared_type": {
            "type": "string"
          },
          "diff_change": {
            "$ref": "#/components/schemas/v1ChangeType"
          },
          "id": {
            "type": "string"
          },
          "modifier_change": {
            "$ref": "#/components/schemas/v1ModifierChangeType"
          },
          "package_name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1UnsupportedSpec": {
        "description": "A project with a source code type that is not supported or not known.",
        "properties": {
          "name": {
            "description": "Name of the unsupported project, which can be an unsupported clone URL or\na package name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "v1UpdateRequest": {
        "description": "Message used for all update requests.",
        "properties": {
          "force": {
            "description": "Force will force the update of the resource if any\nchecks fail.",
            "type": "boolean"
          },
          "update_mask": {
            "description": "Fields to update. Defaults to all fields.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1UpdateTenantRequest": {
        "description": "Request to update a tenant.",
        "properties": {
          "object": {
            "$ref": "#/components/schemas/v1Tenant"
          },
          "request": {
            "$ref": "#/components/schemas/v1UpdateRequest"
          }
        },
        "type": "object"
      },
      "v1User": {
        "description": "User represents a user in the system.\n\nMostly includes configuration parameters that are user wise.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1UserSpec"
          },
          "uuid": {
            "description": "The UUID of a user.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1UserSpec": {
        "properties": {
          "email": {
            "description": "Email of the user. It can be changed.",
            "type": "string"
          },
          "event_tracking": {
            "additionalProperties": {
              "$ref": "#/components/schemas/v1Events"
            },
            "description": "Lists of user events indexed by event type.",
            "type": "object"
          },
          "first_name": {
            "description": "First name of the user as identified. It can be changed.",
            "type": "string"
          },
          "groups": {
            "description": "Groups that the user is a member of, as identified by the\nclaims returned by the identity provider.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "last_login_time": {
            "description": "Last login time keeps a record of the last time\nthat the user logged in.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "last_name": {
            "description": "Last name of the user. It can be changed.",
            "type": "string"
          },
          "token_hash": {
            "description": "The hash of the last token issued to the user.\nDuring authentication we make sure that this hash matches\nthe token provided.",
            "type": "string"
          },
          "user_name": {
            "readOnly": true,
            "title": "Username of a user.\nUsernames are automatically derived from the token.\nDepending on the identity source it can be the\nnickname (GitHub) or email (Google and others)",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1VEXExportJobRequest": {
        "description": "Request holds the input parameters for running a VEX export job.",
        "properties": {
          "component_type": {
            "$ref": "#/components/schemas/v1ExportedVEXComponentType"
          },
          "cyclonedx_spec_version": {
            "$ref": "#/components/schemas/v1CycloneDxSpecVersion"
          },
          "export_parameters": {
            "$ref": "#/components/schemas/v1ExportParameters"
          },
          "format": {
            "$ref": "#/components/schemas/v1ExportedVEXFormat"
          },
          "include_test_dependencies": {
            "description": "Whether to include findings against test/dev/build/optional dependencies.\nWhen false (default), findings whose target dependency is non-production —\nor only reachable from the root through non-production paths — are excluded.",
            "type": "boolean"
          },
          "kind": {
            "$ref": "#/components/schemas/v1SBOMKind"
          },
          "package_version_uuid": {
            "description": "UUID of a single PackageVersion to export. When set, the handler generates\na VEX containing just this package version's findings. Mutually exclusive\nwith export_parameters.",
            "type": "string"
          }
        },
        "required": [
          "component_type"
        ],
        "type": "object"
      },
      "v1VEXExportJobResponse": {
        "description": "Response holds the output after the VEX export job completes.",
        "properties": {
          "file_path": {
            "description": "The file path of the generated VEX document in object storage.\nStored on the Job by the handler; the apiserver Job RPC layer reads this\non every GetJob and produces a fresh signed download URL.",
            "type": "string"
          },
          "report_url": {
            "description": "The signed download URL for the generated VEX document. Populated by the\napiserver Job RPC layer on each GetJob call (5-minute TTL).",
            "type": "string"
          },
          "resource_namespace": {
            "description": "Namespace jobctl read the referenced resources from — the caller's\ntenant, or \"oss\" if the fallback fired.",
            "type": "string"
          },
          "vex_size_bytes": {
            "description": "Byte length of the generated VEX artifact in object storage. Useful for\nclients deciding whether to show a download progress indicator and for\noperational reporting on export sizes.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1ValidateAPIKeyReq": {
        "description": "Validates an API key.",
        "properties": {
          "issuing_user": {
            "$ref": "#/components/schemas/v1User"
          },
          "key": {
            "description": "The unique identifier of the API key.",
            "type": "string"
          },
          "secret": {
            "description": "The secret associated with the provided API Key.",
            "type": "string"
          },
          "valid": {
            "description": "Valid returns if the API key and secret pair are valid.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "required": [
          "key",
          "secret"
        ],
        "type": "object"
      },
      "v1ValidationStatus": {
        "default": "VALIDATION_STATUS_UNSPECIFIED",
        "description": "Status of secret validation.\n\n - VALIDATION_STATUS_UNSPECIFIED: No validator.\n - VALIDATION_STATUS_FAILURE: Failed to validate secret.\n - VALIDATION_STATUS_SECRET_IS_VALID: Secret is valid.\n - VALIDATION_STATUS_SECRET_IS_INVALID: Secret is invalid",
        "enum": [
          "VALIDATION_STATUS_UNSPECIFIED",
          "VALIDATION_STATUS_FAILURE",
          "VALIDATION_STATUS_SECRET_IS_VALID",
          "VALIDATION_STATUS_SECRET_IS_INVALID"
        ],
        "type": "string"
      },
      "v1VantaConfig": {
        "properties": {
          "access_token_auth": {
            "$ref": "#/components/schemas/VantaConfigVantaAccessTokenAuth"
          },
          "api_key": {
            "type": "string"
          },
          "auth_method": {
            "$ref": "#/components/schemas/VantaConfigVantaAuthMethod"
          },
          "package_vulnerability_resource_id": {
            "description": "The Resource ID of the package vulnerability created in Vanta.",
            "type": "string"
          },
          "sca_resource_id": {
            "description": "The Resource ID of the static code analysis vulnerabilities created in Vanta.",
            "type": "string"
          },
          "vulnerable_component_resource_id": {
            "description": "The Resource ID of the vulnerable component created in Vanta.",
            "type": "string"
          }
        },
        "required": [
          "auth_method",
          "vulnerable_component_resource_id"
        ],
        "type": "object"
      },
      "v1VectorStore": {
        "description": "Represents a vector store in the system. The vector store will create all\nthe infrastructure for semantic searches.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "propagate": {
            "description": "Vector stores can be propagated and accessed in child namespaces.",
            "type": "boolean"
          },
          "spec": {
            "$ref": "#/components/schemas/v1VectorStoreSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of an VectorStore.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1VectorStoreSpec": {
        "properties": {
          "apply_uniqueness_index_changes": {
            "description": "apply_uniqueness_index_changes explicitly authorizes migrating uniqueness indexes\nwhen the requested uniqueness_fields differ from the currently provisioned index.\nThis must be true any time changes are made to the uniqueness_fields.",
            "type": "boolean"
          },
          "dimensions": {
            "description": "Dimensions is the number of dimensions to be used.",
            "format": "int32",
            "type": "integer"
          },
          "embedding_model": {
            "$ref": "#/components/schemas/v1EmbeddingModel"
          },
          "embedding_provider": {
            "$ref": "#/components/schemas/v1EmbeddingProvider"
          },
          "search_index_fields": {
            "description": "search_index_fields lists metadata fields that queries filter on beyond the\nuniqueness fields. A non-unique index is ensured on each field when the store\nis created or next opened, so equality filters on it can avoid a full scan.\nThe declared set is authoritative: adding a field creates its index and\nremoving a field drops it, both on the next open.",
            "type": "string"
          },
          "uniqueness_fields": {
            "description": "uniqueness_fields specifies which metadata fields are used for document uniqueness.\nWhen provided, a unique index is created on these fields at store creation time.\nAll add/update/delete operations must include these fields in document metadata.",
            "type": "string"
          }
        },
        "required": [
          "embedding_provider",
          "embedding_model"
        ],
        "type": "object"
      },
      "v1Version": {
        "properties": {
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Version metadata.",
            "type": "object"
          },
          "ref": {
            "description": "Resolved ref of the source control version.\nCan be a tag, a branch or a SHA.",
            "type": "string"
          },
          "sha": {
            "description": "SHA of the source control version.\nBecause the SHA might not be possible to resolved this field is optional.",
            "type": "string"
          }
        },
        "required": [
          "ref"
        ],
        "type": "object"
      },
      "v1VersionDiffResult": {
        "description": "Protobuf definition for VersionDiffResult.",
        "properties": {
          "confidence": {
            "$ref": "#/components/schemas/v1Confidence"
          },
          "function_change": {
            "$ref": "#/components/schemas/v1FunctionChange"
          },
          "reachable_path": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type_change": {
            "$ref": "#/components/schemas/v1TypeChange"
          },
          "violating_types": {
            "additionalProperties": {
              "$ref": "#/components/schemas/VersionDiffResultRepeatedString"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "v1VersionUpgrade": {
        "description": "VersionUpgrade contains all information about a possible version upgrade of a dependency package.\nThis upgrade object can be under a project or a package version object.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/v1Context"
          },
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1VersionUpgradeSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of the resource.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "tenant_meta",
          "meta",
          "context"
        ],
        "type": "object"
      },
      "v1VersionUpgradeSpec": {
        "properties": {
          "all_upgrades": {
            "$ref": "#/components/schemas/VersionUpgradeUpgradeList"
          },
          "configuration": {
            "$ref": "#/components/schemas/v1ReleaseUpgradeConfiguration"
          },
          "finding_fixing_upgrades": {
            "additionalProperties": {
              "$ref": "#/components/schemas/VersionUpgradeUpgradeList"
            },
            "description": "Upgrades that fix findings.",
            "type": "object"
          },
          "name": {
            "description": "The name of the project or package version for this record.",
            "type": "string"
          },
          "prioritized_upgrades": {
            "$ref": "#/components/schemas/VersionUpgradeUpgradeList"
          },
          "project_uuid": {
            "description": "The UUID of the project to which this version upgrade relates.",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/v1ReleaseUpgradeStats"
          },
          "upgrade_info": {
            "$ref": "#/components/schemas/v1ReleaseUpgradeInfo"
          }
        },
        "required": [
          "project_uuid",
          "name"
        ],
        "type": "object"
      },
      "v1Vuln": {
        "description": "Vuln represents an Endor Labs vulnerability in the system.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/v1Meta"
          },
          "spec": {
            "$ref": "#/components/schemas/v1VulnSpec"
          },
          "tenant_meta": {
            "$ref": "#/components/schemas/v1TenantMeta"
          },
          "uuid": {
            "description": "The UUID of a vulnerability.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "meta"
        ],
        "type": "object"
      },
      "v1VulnSpec": {
        "properties": {
          "additional_endor_notes": {
            "description": "Notes from the Endor Labs analysis of the vulnerability.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "additional_notes": {
            "description": "Notes by the person that processed the CVE.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "affected": {
            "items": {
              "$ref": "#/components/schemas/VulnSpecAffected"
            },
            "type": "array"
          },
          "aliases": {
            "description": "Optional. IDs for the same vulnerability in other databases.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "credits": {
            "description": "Optional. Credits for the vulnerability.",
            "items": {
              "$ref": "#/components/schemas/VulnSpecCredit"
            },
            "type": "array"
          },
          "cvss_v3_severity": {
            "$ref": "#/components/schemas/SpecCVSSV3Severity"
          },
          "cvss_v4_severity": {
            "$ref": "#/components/schemas/SpecCVSSV4Severity"
          },
          "database_specific": {
            "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies.",
            "type": "object"
          },
          "deepdive": {
            "description": "Indicates whether the research team performed full analysis on multiple\nartifact_ids involved in CVE.",
            "type": "boolean"
          },
          "disputed": {
            "description": "Indicates whether the research team considers a CVE should be disputed\nbased on analysis.",
            "type": "boolean"
          },
          "epss_score": {
            "$ref": "#/components/schemas/SpecEPSSScore"
          },
          "malicious": {
            "description": "Indicates whether this item is classified as malicious or not.",
            "type": "boolean"
          },
          "modified": {
            "description": "The RFC3339 timestamp indicating when this entry was last modified.",
            "format": "date-time",
            "type": "string"
          },
          "published": {
            "description": "The RFC3339 timestamp indicating when this entry was published.",
            "format": "date-time",
            "type": "string"
          },
          "raw": {
            "$ref": "#/components/schemas/SpecRaw"
          },
          "references": {
            "description": "Reference URLs for the vulnerability.",
            "items": {
              "$ref": "#/components/schemas/VulnSpecReference"
            },
            "type": "array"
          },
          "related": {
            "description": "Optional. List of IDs of closely related vulnerabilities, such as the\nsame problem in alternate ecosystems.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "summary": {
            "description": "Long summary of the vulnerability.",
            "type": "string"
          },
          "withdrawn": {
            "description": "Optional. The RFC3339 timestamp indicating when this entry is considered\nto be withdrawn.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "v1VulnerabilityStats": {
        "description": "VulnerabilityFactors message includes all vulnerability related data.",
        "properties": {
          "critical_vulnerabilities": {
            "description": "The number of critical vulnerabilities.",
            "format": "int32",
            "type": "integer"
          },
          "high_vulnerabilities": {
            "description": "The number of high vulnerabilities.",
            "format": "int32",
            "type": "integer"
          },
          "low_vulnerabilities": {
            "description": "The number of low vulnerabilities.",
            "format": "int32",
            "type": "integer"
          },
          "medium_vulnerabilities": {
            "description": "The number of medium vulnerabilities.",
            "format": "int32",
            "type": "integer"
          },
          "vulnerabilities": {
            "description": "A list of all the vulnerabilities found affecting this package or package version.",
            "items": {
              "$ref": "#/components/schemas/v1Vuln"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1WebhookConfig": {
        "properties": {
          "api_key": {
            "type": "string"
          },
          "auth_method": {
            "$ref": "#/components/schemas/WebhookConfigWebhookAuthMethod"
          },
          "basic_auth": {
            "$ref": "#/components/schemas/WebhookConfigWebhookBasicAuth"
          },
          "custom_headers": {
            "description": "Additional HTTP headers attached to every webhook request, evaluated\nindependently of auth_method. Enables forwarding to systems that\nrequire non-Bearer auth headers (Datadog, Splunk, New Relic, Elastic).",
            "items": {
              "$ref": "#/components/schemas/WebhookConfigWebhookHeader"
            },
            "type": "array"
          },
          "disable_hmac": {
            "type": "boolean"
          },
          "hmac_shared_secret": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "auth_method"
        ],
        "type": "object"
      },
      "v1WebhookTemplate": {
        "properties": {
          "open_action_template": {
            "description": "The template to be used for OPEN action for webhook plugin.",
            "type": "string"
          },
          "resolve_action_template": {
            "description": "The template to be used for RESOLVE action for webhook plugin.",
            "type": "string"
          },
          "update_action_template": {
            "description": "The template to be used for UPDATE action for webhook plugin.",
            "type": "string"
          }
        },
        "type": "object"
      }
    }
  },
  "info": {
    "description": "Integrate your application with Endor Labs using the REST API.",
    "title": "Endor Labs REST API Reference",
    "version": "1.0"
  },
  "openapi": "3.0.3",
  "paths": {
    "/v1/namespaces/{object.tenant_meta.namespace}/ai-provider-keys": {
      "patch": {
        "description": "Updates an AI provider key with the information in the request body.\nSending the redacted placeholder for the API key keeps the stored\ncredential unchanged.",
        "operationId": "AIProviderKeyService_UpdateAIProviderKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIProviderKeyServiceUpdateAIProviderKeyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AIProviderKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateAIProviderKey",
        "tags": [
          "AIProviderKeyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-provider-keys": {
      "get": {
        "description": "Lists AI provider keys in a given namespace. Credentials are redacted in\nthe response.",
        "operationId": "AIProviderKeyService_ListAIProviderKeys",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAIProviderKeysResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAIProviderKeys",
        "tags": [
          "AIProviderKeyService"
        ]
      },
      "post": {
        "description": "Creates a new AI provider key in the root namespace of a tenant. The\ncredential is validated, encrypted with a server-side key and stored;\nread APIs never return it.",
        "operationId": "AIProviderKeyService_CreateAIProviderKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIProviderKeyServiceCreateAIProviderKeyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AIProviderKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAIProviderKey",
        "tags": [
          "AIProviderKeyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-provider-keys/{uuid}": {
      "delete": {
        "description": "Deletes an AI provider key specified by its UUID.",
        "operationId": "AIProviderKeyService_DeleteAIProviderKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteAIProviderKey",
        "tags": [
          "AIProviderKeyService"
        ]
      },
      "get": {
        "description": "Fetches an AI provider key identified by its UUID. The credential is\nredacted in the response.",
        "operationId": "AIProviderKeyService_GetAIProviderKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AIProviderKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAIProviderKey",
        "tags": [
          "AIProviderKeyService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ai-sast-customer-contexts": {
      "patch": {
        "operationId": "AISastCustomerContextService_UpdateAISastCustomerContext",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AISastCustomerContextServiceUpdateAISastCustomerContextBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AISastCustomerContext"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateAISastCustomerContext updates an entry from the request body.",
        "tags": [
          "AISastCustomerContextService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-customer-contexts": {
      "get": {
        "operationId": "AISastCustomerContextService_ListAISastCustomerContexts",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAISastCustomerContextsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAISastCustomerContexts lists entries in a namespace; filter on parent fields for tenant or project scope.",
        "tags": [
          "AISastCustomerContextService"
        ]
      },
      "post": {
        "operationId": "AISastCustomerContextService_CreateAISastCustomerContext",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AISastCustomerContextServiceCreateAISastCustomerContextBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AISastCustomerContext"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAISastCustomerContext creates a scoped context; namespace scope is carried by tenant_meta.namespace.",
        "tags": [
          "AISastCustomerContextService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-customer-contexts/{uuid}": {
      "delete": {
        "operationId": "AISastCustomerContextService_DeleteAISastCustomerContext",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteAISastCustomerContext deletes an entry by UUID.",
        "tags": [
          "AISastCustomerContextService"
        ]
      },
      "get": {
        "operationId": "AISastCustomerContextService_GetAISastCustomerContext",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AISastCustomerContext"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAISastCustomerContext fetches an entry by UUID.",
        "tags": [
          "AISastCustomerContextService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/api-keys": {
      "get": {
        "description": "Lists all API keys for a given namespace.",
        "operationId": "APIKeyService_ListAPIKeys",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAPIKeysResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAPIKeys",
        "tags": [
          "APIKeyService"
        ]
      },
      "post": {
        "description": "Creates an API key.",
        "operationId": "APIKeyService_CreateAPIKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/APIKeyServiceCreateAPIKeyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1APIKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAPIKey",
        "tags": [
          "APIKeyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/api-keys/{uuid}": {
      "delete": {
        "description": "Deletes the API key specified by the UUID.",
        "operationId": "APIKeyService_DeleteAPIKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteAPIKey",
        "tags": [
          "APIKeyService"
        ]
      },
      "get": {
        "description": "Fetches the API key dentified by the UUID.",
        "operationId": "APIKeyService_GetAPIKey",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1APIKey"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAPIKey",
        "tags": [
          "APIKeyService"
        ]
      }
    },
    "/v1/auth/api-key/validate": {
      "post": {
        "description": "Validates an API key.",
        "operationId": "APIKeyValidatorService_CreateAPIKeyValidator",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1ValidateAPIKeyReq"
              }
            }
          },
          "description": "Validates an API key.",
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ValidateAPIKeyReq"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAPIKeyReq",
        "tags": [
          "APIKeyValidatorService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-telemetry/activity": {
      "get": {
        "description": "Returns the per-agent usage summary for a tenant.",
        "operationId": "AgentTelemetryService_ListAgentActivity",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "Look-back window in days. Defaults to 7 when zero.",
            "in": "query",
            "name": "window_days",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAgentActivityResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAgentActivity",
        "tags": [
          "AgentTelemetryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-telemetry/agents/{agent_id}/calls": {
      "get": {
        "description": "Returns one agent's recent captured calls, newest first.",
        "operationId": "AgentTelemetryService_ListAgentCalls",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The agent whose calls to return; matches EndorAgent.id in the catalog.",
            "in": "path",
            "name": "agent_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Max rows to return. Defaults to 100 when zero.",
            "in": "query",
            "name": "page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Opaque continuation token from a prior response.",
            "in": "query",
            "name": "page_token",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Optional exact-match filter on decision. Accepted values: allowed, denied\n(case-sensitive); any other value is rejected.",
            "in": "query",
            "name": "decision",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Optional exact-match filter on operation. Accepted values: READ, LIST,\nCREATE, UPDATE, DELETE, UPSERT, EXECUTE (case-sensitive); any other value\nis rejected.",
            "in": "query",
            "name": "operation",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAgentCallsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAgentCalls",
        "tags": [
          "AgentTelemetryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/artifact-signatures": {
      "patch": {
        "description": "Updates the artifact signature.",
        "operationId": "ArtifactSignatureService_UpdateArtifactSignature",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArtifactSignatureServiceUpdateArtifactSignatureBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ArtifactSignature"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateArtifactSignature",
        "tags": [
          "ArtifactSignatureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-signatures": {
      "get": {
        "description": "Lists all artifact signatures.",
        "operationId": "ArtifactSignatureService_ListArtifactSignatures",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListArtifactSignaturesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListArtifactSignatures",
        "tags": [
          "ArtifactSignatureService"
        ]
      },
      "post": {
        "description": "Creates a new artifact signature.",
        "operationId": "ArtifactSignatureService_CreateArtifactSignature",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArtifactSignatureServiceCreateArtifactSignatureBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ArtifactSignature"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateArtifactSignature",
        "tags": [
          "ArtifactSignatureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-signatures/{uuid}": {
      "get": {
        "description": "Fetches an artifact signature identified by the UUID.",
        "operationId": "ArtifactSignatureService_GetArtifactSignature",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ArtifactSignature"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetArtifactSignature",
        "tags": [
          "ArtifactSignatureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/async-jobs": {
      "post": {
        "description": "Initiates asynchronous execution of a job. Returns immediately with the job\nUUID and state=JOB_STATE_NEW; poll GetAsyncJob to track progress.",
        "operationId": "AsyncJobService_CreateAsyncJob",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AsyncJobServiceCreateAsyncJobBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AsyncJob"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAsyncJob",
        "tags": [
          "AsyncJobService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}": {
      "get": {
        "description": "Fetches an async job by UUID. When state = JOB_STATE_SUCCESS, spec.response\ncarries the type-specific arm (sbom or vex) with a freshly signed download\nURL (5-minute TTL) and the stable object-store file_path.",
        "operationId": "AsyncJobService_GetAsyncJob",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AsyncJob"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAsyncJob",
        "tags": [
          "AsyncJobService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/audit-logs": {
      "get": {
        "description": "List all audit logs in a given namespace.",
        "operationId": "AuditLogService_ListAuditLogs",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAuditLogsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAuditLogs",
        "tags": [
          "AuditLogService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/audit-logs/{uuid}": {
      "get": {
        "description": "Fetches an audit log identified by the UUID.",
        "operationId": "AuditLogService_GetAuditLog",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuditLog"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAuditLog",
        "tags": [
          "AuditLogService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authentication-logs": {
      "get": {
        "description": "Lists all authentication logs in a given namespace.",
        "operationId": "AuthenticationLogService_ListAuthenticationLogs",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAuthenticationLogsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAuthenticationLogs",
        "tags": [
          "AuthenticationLogService"
        ]
      },
      "post": {
        "description": "Creates an authentication log for a given object.",
        "operationId": "AuthenticationLogService_CreateAuthenticationLog",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthenticationLogServiceCreateAuthenticationLogBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthenticationLog"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAuthenticationLog",
        "tags": [
          "AuthenticationLogService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authentication-logs/{uuid}": {
      "delete": {
        "description": "Deletes the authentication log specified by its UUID.",
        "operationId": "AuthenticationLogService_DeleteAuthenticationLog",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteAuthenticationLog",
        "tags": [
          "AuthenticationLogService"
        ]
      },
      "get": {
        "description": "Fetches the authentication log identified by the UUID.",
        "operationId": "AuthenticationLogService_GetAuthenticationLog",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthenticationLog"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAuthenticationLog",
        "tags": [
          "AuthenticationLogService"
        ]
      }
    },
    "/v1/auth/{authentication_source}": {
      "get": {
        "description": "Initiates an authentication request and returns a token along with the token expiration time for an authenticated user.",
        "operationId": "AuthenticationService_Authenticate",
        "parameters": [
          {
            "description": "Specifies a user's authentication method, such as \"GitHub\".",
            "in": "path",
            "name": "authentication_source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API key used for system authentication.\n\nKey is required only if the authentication source is \"api-key\".",
            "in": "query",
            "name": "key",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API secret used for system authentication.\n\nSecret is required only if the authentication source is \"api-key\".",
            "in": "query",
            "name": "secret",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthenticationResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Authenticate",
        "tags": [
          "AuthenticationService"
        ]
      }
    },
    "/v1/auth/{authentication_source}/logout": {
      "get": {
        "description": "Clears the user session and cookies.",
        "operationId": "AuthenticationService_Logout",
        "parameters": [
          {
            "description": "Specifies a user's authentication method, such as \"GitHub\".",
            "in": "path",
            "name": "authentication_source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API key used for system authentication.\n\nKey is required only if the authentication source is \"api-key\".",
            "in": "query",
            "name": "key",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API secret used for system authentication.\n\nSecret is required only if the authentication source is \"api-key\".",
            "in": "query",
            "name": "secret",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthenticationResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Logout",
        "tags": [
          "AuthenticationService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/authorization-policies": {
      "patch": {
        "description": "Updates the authorization policy for a given tenant.",
        "operationId": "AuthorizationPolicyService_UpdateAuthorizationPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorizationPolicyServiceUpdateAuthorizationPolicyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthorizationPolicy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateAuthorizationPolicy",
        "tags": [
          "AuthorizationPolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authorization-policies": {
      "get": {
        "description": "Lists all authorization policies for a given tenant.",
        "operationId": "AuthorizationPolicyService_ListAuthorizationPolicies",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListAuthorizationPoliciesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListAuthorizationPolicies",
        "tags": [
          "AuthorizationPolicyService"
        ]
      },
      "post": {
        "description": "Creates an authorization policy for a given tenant.",
        "operationId": "AuthorizationPolicyService_CreateAuthorizationPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorizationPolicyServiceCreateAuthorizationPolicyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthorizationPolicy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateAuthorizationPolicy",
        "tags": [
          "AuthorizationPolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authorization-policies/{uuid}": {
      "delete": {
        "description": "Deletes an authorization policy specified by its UUID.",
        "operationId": "AuthorizationPolicyService_DeleteAuthorizationPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteAuthorizationPolicy",
        "tags": [
          "AuthorizationPolicyService"
        ]
      },
      "get": {
        "description": "Fetches an authorization policy specified by its UUID.",
        "operationId": "AuthorizationPolicyService_GetAuthorizationPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1AuthorizationPolicy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetAuthorizationPolicy",
        "tags": [
          "AuthorizationPolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/batch/file-segments": {
      "post": {
        "description": "Create multiple file segment objects through a batch API call.",
        "operationId": "BatchFileSegmentsService_CreateBatchFileSegments",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchFileSegmentsServiceCreateBatchFileSegmentsBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1BatchFileSegments"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateBatchFileSegments",
        "tags": [
          "BatchFileSegmentsService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/batch/notifications": {
      "post": {
        "description": "Create multiple notification objects through a batch API call.",
        "operationId": "BatchNotificationService_CreateBatchNotification",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchNotificationServiceCreateBatchNotificationBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1BatchNotification"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateBatchNotification",
        "tags": [
          "BatchNotificationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/call-graph-data": {
      "get": {
        "description": "Lists all call graph data in a namespace.",
        "operationId": "CallGraphDataService_ListCallGraphData",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListCallGraphDataResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListCallGraphData",
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/call-graph-data/{uuid}": {
      "get": {
        "description": "Fetches the call graph for a given package version that is\ncaptured in the parent UUID.",
        "operationId": "CallGraphDataService_GetCallGraphData",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1CallGraphData"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetCallGraphData",
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/codeowners": {
      "get": {
        "description": "Lists all CodeOwners objects in a namespace.",
        "operationId": "CodeOwnersService_ListCodeOwners",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListCodeOwnersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListCodeOwners",
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/codeowners/{uuid}": {
      "get": {
        "description": "Fetches the CodeOwners object identified by the UUID.",
        "operationId": "CodeOwnersService_GetCodeOwners",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1CodeOwners"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetCodeOwners",
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/dependency-metadata": {
      "get": {
        "description": "List dependency metadata objects based on the specified list\nparameters.",
        "operationId": "DependencyMetadataService_ListDependencyMetadata",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListDependencyMetadataResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListDependencyMetadata",
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/dependency-metadata/{uuid}": {
      "get": {
        "description": "Returns a specified dependency metadata object.",
        "operationId": "DependencyMetadataService_GetDependencyMetadata",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DependencyMetadata"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetDependencyMetadata",
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/endor-ignore-entries": {
      "patch": {
        "description": "Updates the EndorIgnoreEntry object identified by the UUID.",
        "operationId": "EndorIgnoreEntryService_UpdateEndorIgnoreEntry",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndorIgnoreEntryServiceUpdateEndorIgnoreEntryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EndorIgnoreEntry"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateEndorIgnoreEntry",
        "tags": [
          "EndorIgnoreEntryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/endor-ignore-entries": {
      "get": {
        "description": "Lists all EndorIgnoreEntry objects in a namespace.",
        "operationId": "EndorIgnoreEntryService_ListEndorIgnoreEntries",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListEndorIgnoreEntriesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListEndorIgnoreEntries",
        "tags": [
          "EndorIgnoreEntryService"
        ]
      },
      "post": {
        "description": "Creates an EndorIgnoreEntry object.",
        "operationId": "EndorIgnoreEntryService_CreateEndorIgnoreEntry",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndorIgnoreEntryServiceCreateEndorIgnoreEntryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EndorIgnoreEntry"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateEndorIgnoreEntry",
        "tags": [
          "EndorIgnoreEntryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/endor-ignore-entries/{uuid}": {
      "delete": {
        "description": "Deletes the EndorIgnoreEntry object identified by the UUID.",
        "operationId": "EndorIgnoreEntryService_DeleteEndorIgnoreEntry",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteEndorIgnoreEntry",
        "tags": [
          "EndorIgnoreEntryService"
        ]
      },
      "get": {
        "description": "Fetches the EndorIgnoreEntry object identified by the UUID.",
        "operationId": "EndorIgnoreEntryService_GetEndorIgnoreEntry",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EndorIgnoreEntry"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetEndorIgnoreEntry",
        "tags": [
          "EndorIgnoreEntryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/exporters": {
      "patch": {
        "description": "Updates a exporter.",
        "operationId": "ExporterService_UpdateExporter",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExporterServiceUpdateExporterBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Exporter"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateExporter",
        "tags": [
          "ExporterService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/exporters": {
      "get": {
        "description": "Lists all exporters.",
        "operationId": "ExporterService_ListExporters",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListExportersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListExporters",
        "tags": [
          "ExporterService"
        ]
      },
      "post": {
        "description": "Creates a exporter.",
        "operationId": "ExporterService_CreateExporter",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExporterServiceCreateExporterBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Exporter"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateExporter",
        "tags": [
          "ExporterService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/exporters/{uuid}": {
      "delete": {
        "description": "Deletes the exporter specified by the UUID.",
        "operationId": "ExporterService_DeleteExporter",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteExporter",
        "tags": [
          "ExporterService"
        ]
      },
      "get": {
        "description": "Fetches the exporter identified by the UUID.",
        "operationId": "ExporterService_GetExporter",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Exporter"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetExporter",
        "tags": [
          "ExporterService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/finding-logs": {
      "get": {
        "description": "Returns a list of finding logs based on the specified list parameters.",
        "operationId": "FindingLogService_ListFindingLogs",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListFindingLogsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListFindingLogs",
        "tags": [
          "FindingLogService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/finding-logs/{uuid}": {
      "get": {
        "description": "Returns a specified finding log.",
        "operationId": "FindingLogService_GetFindingLog",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1FindingLog"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetFindingLog",
        "tags": [
          "FindingLogService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/findings": {
      "patch": {
        "description": "Update a specified finding.",
        "operationId": "FindingService_UpdateFinding",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FindingServiceUpdateFindingBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Finding"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateFinding",
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/findings": {
      "get": {
        "description": "List findings based on the specified list parameters.",
        "operationId": "FindingService_ListFindings",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListFindingsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListFindings",
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/findings/{uuid}": {
      "delete": {
        "description": "Delete the finding specified by the UUID.",
        "operationId": "FindingService_DeleteFinding",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteFinding",
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      },
      "get": {
        "description": "Fetch the finding identified by the UUID.",
        "operationId": "FindingService_GetFinding",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Finding"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetFinding",
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-models": {
      "get": {
        "description": "Lists all HuggingFace models in a given namespace.",
        "operationId": "HuggingFaceModelService_ListHuggingFaceModels",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListHuggingFaceModelsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListHuggingFaceModels",
        "tags": [
          "HuggingFaceModelService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-models/{uuid}": {
      "get": {
        "description": "Fetches the HuggingFace model specified by the UUID.",
        "operationId": "HuggingFaceModelService_GetHuggingFaceModel",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1HuggingFaceModel"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetHuggingFaceModel",
        "tags": [
          "HuggingFaceModelService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-organizations": {
      "get": {
        "description": "Lists all HuggingFace organizations in a given namespace.",
        "operationId": "HuggingFaceOrganizationService_ListHuggingFaceOrganizations",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListHuggingFaceOrganizationsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListHuggingFaceOrganizations",
        "tags": [
          "HuggingFaceOrganizationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-organizations/{uuid}": {
      "get": {
        "description": "Fetches the HuggingFace organization specified by the UUID.",
        "operationId": "HuggingFaceOrganizationService_GetHuggingFaceOrganization",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1HuggingFaceOrganization"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetHuggingFaceOrganization",
        "tags": [
          "HuggingFaceOrganizationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ip-address-policies": {
      "get": {
        "description": "Returns a list of finding logs based on the specified list parameters.",
        "operationId": "IPAddressPolicyService_ListIPAddressPolicies",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListIPAddressPoliciesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListIPAddresssPolicies",
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": false
      },
      "post": {
        "description": "Creates a finding log.",
        "operationId": "IPAddressPolicyService_CreateIPAddressPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IPAddressPolicyServiceCreateIPAddressPolicyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1IPAddressPolicy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateIPAddressPolicy",
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ip-address-policies/{uuid}": {
      "get": {
        "description": "Returns a specified finding log.",
        "operationId": "IPAddressPolicyService_GetIPAddressPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1IPAddressPolicy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetIPAddressPolicy",
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/identity-providers": {
      "patch": {
        "description": "Updates an identity provider.",
        "operationId": "IdentityProviderService_UpdateIdentityProvider",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentityProviderServiceUpdateIdentityProviderBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1IdentityProvider"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateIdentityProvider",
        "tags": [
          "IdentityProviderService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/identity-providers": {
      "get": {
        "description": "Lists all identity providers.",
        "operationId": "IdentityProviderService_ListIdentityProviders",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListIdentityProvidersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListIdentityProviders",
        "tags": [
          "IdentityProviderService"
        ]
      },
      "post": {
        "description": "Creates an identity provider.",
        "operationId": "IdentityProviderService_CreateIdentityProvider",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentityProviderServiceCreateIdentityProviderBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1IdentityProvider"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateIdentityProvider",
        "tags": [
          "IdentityProviderService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/identity-providers/{uuid}": {
      "delete": {
        "description": "Deletes the identity provider specified by the UUID.",
        "operationId": "IdentityProviderService_DeleteIdentityProvider",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteIdentityProvider",
        "tags": [
          "IdentityProviderService"
        ]
      },
      "get": {
        "description": "Fetches the identity provider specified by the UUID.",
        "operationId": "IdentityProviderService_GetIdentityProvider",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1IdentityProvider"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetIdentityProvider",
        "tags": [
          "IdentityProviderService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/installations": {
      "patch": {
        "description": "Updates an installation.",
        "operationId": "InstallationService_UpdateInstallation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationServiceUpdateInstallationBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Installation"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateInstallation",
        "tags": [
          "InstallationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/installations": {
      "get": {
        "description": "Lists all installations.",
        "operationId": "InstallationService_ListInstallations",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListInstallationsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListInstallations",
        "tags": [
          "InstallationService"
        ]
      },
      "post": {
        "description": "creates a installation.\nThe creation of the resource will be an upsert if the given\nspec.external_id and spec.platform_resource were already created.",
        "operationId": "InstallationService_CreateInstallation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationServiceCreateInstallationBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Installation"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateInstallation",
        "tags": [
          "InstallationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/installations/{uuid}": {
      "delete": {
        "description": "Deletes an installation specified by the UUID.",
        "operationId": "InstallationService_DeleteInstallation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteInstallation",
        "tags": [
          "InstallationService"
        ]
      },
      "get": {
        "description": "Fetches an installation identified by the UUID.",
        "operationId": "InstallationService_GetInstallation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Installation"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetInstallation",
        "tags": [
          "InstallationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/invitations": {
      "get": {
        "description": "Lists the invitations in a namespace.",
        "operationId": "InvitationService_ListInvitations",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListInvitationsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListInvitations",
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      },
      "post": {
        "description": "Creates an invitation.",
        "operationId": "InvitationService_CreateInvitation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvitationServiceCreateInvitationBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Invitation"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateInvitation",
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/invitations/{uuid}": {
      "delete": {
        "description": "Deletes the invitation specified by the UUID",
        "operationId": "InvitationService_DeleteInvitation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteInvitation",
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      },
      "get": {
        "description": "Fetches the invitation identified by the UUID.",
        "operationId": "InvitationService_GetInvitation",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Invitation"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetInvitation",
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/license-dependencies": {
      "patch": {
        "description": "Updates the license dependency.",
        "operationId": "LicenseDependencyService_UpdateLicenseDependency",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseDependencyServiceUpdateLicenseDependencyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseDependency"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateLicenseDependency",
        "tags": [
          "LicenseDependencyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-dependencies": {
      "get": {
        "description": "Lists all the license dependencies in a given namespace.",
        "operationId": "LicenseDependencyService_ListLicenseDependencies",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListLicenseDependenciesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListLicenseDependencies",
        "tags": [
          "LicenseDependencyService"
        ]
      },
      "post": {
        "description": "Creates a license dependency.",
        "operationId": "LicenseDependencyService_CreateLicenseDependency",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseDependencyServiceCreateLicenseDependencyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseDependency"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateLicenseDependency",
        "tags": [
          "LicenseDependencyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-dependencies/{uuid}": {
      "delete": {
        "description": "Deletes the license dependency specified by the UUID.",
        "operationId": "LicenseDependencyService_DeleteLicenseDependency",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteLicenseDependency",
        "tags": [
          "LicenseDependencyService"
        ]
      },
      "get": {
        "description": "Fetches the license dependency specified by the UUID.",
        "operationId": "LicenseDependencyService_GetLicenseDependency",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseDependency"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetLicenseDependency",
        "tags": [
          "LicenseDependencyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-notices-reports": {
      "post": {
        "description": "Creates a license notices report.",
        "operationId": "LicenseNoticesReportService_CreateLicenseNoticesReport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseNoticesReportServiceCreateLicenseNoticesReportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseNoticesReport"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GenerateLicenseNoticesReport",
        "tags": [
          "LicenseNoticesReportService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/license-summaries": {
      "patch": {
        "description": "Updates the license summary.",
        "operationId": "LicenseSummaryService_UpdateLicenseSummary",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseSummaryServiceUpdateLicenseSummaryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseSummary"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateLicenseSummary",
        "tags": [
          "LicenseSummaryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-summaries": {
      "get": {
        "description": "Lists all the license summaries in a given namespace.",
        "operationId": "LicenseSummaryService_ListLicenseSummaries",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListLicenseSummariesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListLicenseSummaries",
        "tags": [
          "LicenseSummaryService"
        ]
      },
      "post": {
        "description": "Creates a license summary.",
        "operationId": "LicenseSummaryService_CreateLicenseSummary",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseSummaryServiceCreateLicenseSummaryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseSummary"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateLicenseSummary",
        "tags": [
          "LicenseSummaryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-summaries/{uuid}": {
      "delete": {
        "description": "Deletes the license summary specified by the UUID.",
        "operationId": "LicenseSummaryService_DeleteLicenseSummary",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteLicenseSummary",
        "tags": [
          "LicenseSummaryService"
        ]
      },
      "get": {
        "description": "Fetches the license summary specified by the UUID.",
        "operationId": "LicenseSummaryService_GetLicenseSummary",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LicenseSummary"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetLicenseSummary",
        "tags": [
          "LicenseSummaryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/linter-results": {
      "get": {
        "description": "Lists all linter results.",
        "operationId": "LinterResultService_ListLinterResults",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListLinterResultsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListLinterResults",
        "tags": [
          "LinterResultService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/linter-results/{uuid}": {
      "get": {
        "description": "Fetches the linter result identified by the UUID.",
        "operationId": "LinterResultService_GetLinterResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1LinterResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetLinterResult",
        "tags": [
          "LinterResultService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/malware-exposure": {
      "post": {
        "description": "Creates a MalwareExposureQuery.",
        "operationId": "MalwareExposureQueryService_CreateMalwareExposureQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MalwareExposureQueryServiceCreateMalwareExposureQueryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1MalwareExposureQuery"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateMalwareExposureQuery",
        "tags": [
          "MalwareExposureQueryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-exposure": {
      "patch": {
        "description": "Updates the MalwareExposure object specified by the UUID.",
        "operationId": "MalwareExposureService_UpdateMalwareExposure",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MalwareExposureServiceUpdateMalwareExposureBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1MalwareExposure"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateMalwareExposure",
        "tags": [
          "MalwareExposureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-exposure": {
      "get": {
        "description": "Lists all MalwareExposure objects in a namespace.",
        "operationId": "MalwareExposureService_ListMalwareExposure",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListMalwareExposureResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListMalwareExposure",
        "tags": [
          "MalwareExposureService"
        ]
      },
      "post": {
        "description": "Creates a MalwareExposure object.",
        "operationId": "MalwareExposureService_CreateMalwareExposure",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MalwareExposureServiceCreateMalwareExposureBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1MalwareExposure"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateMalwareExposure",
        "tags": [
          "MalwareExposureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-exposure/{uuid}": {
      "delete": {
        "description": "Deletes the MalwareExposure object specified by the UUID.",
        "operationId": "MalwareExposureService_DeleteMalwareExposure",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteMalwareExposure",
        "tags": [
          "MalwareExposureService"
        ]
      },
      "get": {
        "description": "Fetches the MalwareExposure object identified by the UUID.",
        "operationId": "MalwareExposureService_GetMalwareExposure",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1MalwareExposure"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetMalwareExposure",
        "tags": [
          "MalwareExposureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware": {
      "get": {
        "description": "List all malware in the namespace.",
        "operationId": "MalwareService_ListMalware",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListMalwareResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListMalware",
        "tags": [
          "MalwareService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware/{uuid}": {
      "get": {
        "description": "Fetches a malware identified by the UUID.",
        "operationId": "MalwareService_GetMalware",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Malware"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetMalware",
        "tags": [
          "MalwareService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/metrics": {
      "get": {
        "description": "Lists all metrics in a specified namespace.",
        "operationId": "MetricService_ListMetrics",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListMetrics",
        "tags": [
          "MetricService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/metrics/{uuid}": {
      "get": {
        "description": "Fetches a metric specified by its UUID.",
        "operationId": "MetricService_GetMetric",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/endorv1Metric"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetMetric",
        "tags": [
          "MetricService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/namespaces": {
      "patch": {
        "description": "Updates a provided namespace based on its UUID.",
        "operationId": "NamespaceService_UpdateNamespace",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NamespaceServiceUpdateNamespaceBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Namespace"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateNamespace",
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/namespaces/{object.uuid}/namespaces": {
      "patch": {
        "description": "Updates a provided namespace based on its UUID.",
        "operationId": "NamespaceService_UpdateNamespace2",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of a namespace.",
            "in": "path",
            "name": "object.uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NamespaceServiceUpdateNamespaceBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Namespace"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateNamespace",
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/namespaces": {
      "get": {
        "description": "Lists all namespaces in a tenant.",
        "operationId": "NamespaceService_ListNamespaces",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListNamespacesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListNamespaces",
        "tags": [
          "NamespaceService"
        ]
      },
      "post": {
        "description": "Creates a namespace.",
        "operationId": "NamespaceService_CreateNamespace",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NamespaceServiceCreateNamespaceBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Namespace"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateNamespace",
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/namespaces/{uuid}": {
      "delete": {
        "description": "Deletes a namespace based on its UUID.",
        "operationId": "NamespaceService_DeleteNamespace",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteNamespace",
        "tags": [
          "NamespaceService"
        ]
      },
      "get": {
        "description": "Fetches a namespace identified by its UUID.",
        "operationId": "NamespaceService_GetNamespace",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Namespace"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetNamespace",
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notifications": {
      "get": {
        "description": "List all notifications.",
        "operationId": "NotificationService_ListNotifications",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListNotificationsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListNotifications",
        "tags": [
          "NotificationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notifications/{uuid}": {
      "get": {
        "description": "Fetches the notification identified by the UUID.",
        "operationId": "NotificationService_GetNotification",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Notification"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetNotification",
        "tags": [
          "NotificationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/notification-targets": {
      "patch": {
        "description": "Updates a notification target.",
        "operationId": "NotificationTargetService_UpdateNotificationTarget",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationTargetServiceUpdateNotificationTargetBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1NotificationTarget"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateNotificationTarget",
        "tags": [
          "NotificationTargetService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notification-targets": {
      "get": {
        "description": "Lists all notification targets.",
        "operationId": "NotificationTargetService_ListNotificationTargets",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListNotificationTargetsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListNotificationTargets",
        "tags": [
          "NotificationTargetService"
        ]
      },
      "post": {
        "description": "Creates a notification target.",
        "operationId": "NotificationTargetService_CreateNotificationTarget",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationTargetServiceCreateNotificationTargetBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1NotificationTarget"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateNotificationTarget",
        "tags": [
          "NotificationTargetService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notification-targets/{uuid}": {
      "delete": {
        "description": "Deletes the notification target specified by the UUID.",
        "operationId": "NotificationTargetService_DeleteNotificationTarget",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteNotificationTarget",
        "tags": [
          "NotificationTargetService"
        ]
      },
      "get": {
        "description": "Fetches the notification target identified by the UUID.",
        "operationId": "NotificationTargetService_GetNotificationTarget",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1NotificationTarget"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetNotificationTarget",
        "tags": [
          "NotificationTargetService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/onprem-schedulers": {
      "patch": {
        "operationId": "OnPremSchedulerService_UpdateOnPremScheduler",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnPremSchedulerServiceUpdateOnPremSchedulerBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1OnPremScheduler"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateOnPremScheduler updates the specified onprem scheduler.",
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/onprem-schedulers": {
      "get": {
        "operationId": "OnPremSchedulerService_ListOnPremSchedulers",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListOnPremSchedulersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListOnPremSchedulers returns a list of onprem schedulers in a specified namespace.",
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      },
      "post": {
        "operationId": "OnPremSchedulerService_CreateOnPremScheduler",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnPremSchedulerServiceCreateOnPremSchedulerBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1OnPremScheduler"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateOnPremScheduler creates an onprem scheduler.",
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/onprem-schedulers/{uuid}": {
      "delete": {
        "operationId": "OnPremSchedulerService_DeleteOnPremScheduler",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteOnPremScheduler deletes an onprem scheduler specified by its UUID.",
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      },
      "get": {
        "operationId": "OnPremSchedulerService_GetOnPremScheduler",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1OnPremScheduler"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetOnPremScheduler returns an onprem scheduler specified by its UUID.",
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/pr-comment-configs": {
      "patch": {
        "description": "Updates the the PR comment configuration.",
        "operationId": "PRCommentConfigService_UpdatePRCommentConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PRCommentConfigServiceUpdatePRCommentConfigBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PRCommentConfig"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdatePRCommentConfig",
        "tags": [
          "PRCommentConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/pr-comment-configs": {
      "get": {
        "description": "List all PR comment configurations for the tenant namespace.",
        "operationId": "PRCommentConfigService_ListPRCommentConfigs",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPRCommentConfigsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPRCommentConfigs",
        "tags": [
          "PRCommentConfigService"
        ]
      },
      "post": {
        "description": "Creates a PR comment configuration.",
        "operationId": "PRCommentConfigService_CreatePRCommentConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PRCommentConfigServiceCreatePRCommentConfigBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PRCommentConfig"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreatePRCommentConfig",
        "tags": [
          "PRCommentConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/pr-comment-configs/{uuid}": {
      "delete": {
        "description": "Deletes the PR comment configuration identified by the UUID.",
        "operationId": "PRCommentConfigService_DeletePRCommentConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeletePRCommentConfig",
        "tags": [
          "PRCommentConfigService"
        ]
      },
      "get": {
        "description": "Fetches the PR comment configuration specified by the UUID.",
        "operationId": "PRCommentConfigService_GetPRCommentConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PRCommentConfig"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPRCommentConfig",
        "tags": [
          "PRCommentConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-firewall-logs": {
      "get": {
        "description": "Lists all package firewall logs in a given namespace.",
        "operationId": "PackageFirewallLogService_ListPackageFirewallLogs",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPackageFirewallLogsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPackageFirewallLogs",
        "tags": [
          "PackageFirewallLogService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-firewall-logs/{uuid}": {
      "get": {
        "description": "Fetches the package firewall log identified by the UUID.",
        "operationId": "PackageFirewallLogService_GetPackageFirewallLog",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageFirewallLog"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPackageFirewallLog",
        "tags": [
          "PackageFirewallLogService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-license-overrides": {
      "patch": {
        "description": "Updates a specified package license override.",
        "operationId": "PackageLicenseOverrideService_UpdatePackageLicenseOverride",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageLicenseOverrideServiceUpdatePackageLicenseOverrideBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicenseOverride"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdatePackageLicenseOverride",
        "tags": [
          "PackageLicenseOverrideService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-license-overrides": {
      "get": {
        "description": "Lists all package license overrides in a namespace.",
        "operationId": "PackageLicenseOverrideService_ListPackageLicenseOverrides",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPackageLicenseOverridesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPackageLicenseOverrides",
        "tags": [
          "PackageLicenseOverrideService"
        ]
      },
      "post": {
        "description": "Creates a package license override.",
        "operationId": "PackageLicenseOverrideService_CreatePackageLicenseOverride",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageLicenseOverrideServiceCreatePackageLicenseOverrideBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicenseOverride"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreatePackageLicenseOverride",
        "tags": [
          "PackageLicenseOverrideService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-license-overrides/{uuid}": {
      "delete": {
        "description": "Deletes a specified package license override.",
        "operationId": "PackageLicenseOverrideService_DeletePackageLicenseOverride",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeletePackageLicenseOverride",
        "tags": [
          "PackageLicenseOverrideService"
        ]
      },
      "get": {
        "description": "Gets a package license override by its UUID.",
        "operationId": "PackageLicenseOverrideService_GetPackageLicenseOverride",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicenseOverride"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPackageLicenseOverride",
        "tags": [
          "PackageLicenseOverrideService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/package-license-queries": {
      "post": {
        "description": "Creates a query to fetch merged license data (PackageLicense + PackageLicenseOverride) for a package version from all the namespaces in the namespace chain.\nThis is the primary API for the Edit Dependency UI page.\nThe response combines:\n  - Original licenses/copyrights/notices from PackageLicense (fetched from OSS namespace).\n  - Any overrides from PackageLicenseOverride (fetched from user namespace).\n  - Selection states for each item (defaults to selected if not in selection map).",
        "operationId": "PackageLicenseQueryService_CreatePackageLicenseQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageLicenseQueryServiceCreatePackageLicenseQueryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicenseQuery"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreatePackageLicenseQuery",
        "tags": [
          "PackageLicenseQueryService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-licenses": {
      "patch": {
        "description": "Updates the package license.",
        "operationId": "PackageLicenseService_UpdatePackageLicense",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageLicenseServiceUpdatePackageLicenseBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicense"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdatePackageLicense",
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-licenses": {
      "get": {
        "description": "Lists all the package licenses in a given namespace.",
        "operationId": "PackageLicenseService_ListPackageLicenses",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPackageLicenseResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPackageLicenses",
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      },
      "post": {
        "description": "Creates a package license.",
        "operationId": "PackageLicenseService_CreatePackageLicense",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageLicenseServiceCreatePackageLicenseBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicense"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreatePackageLicense",
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-licenses/{uuid}": {
      "delete": {
        "description": "Deletes the package license specified by the UUID.",
        "operationId": "PackageLicenseService_DeletePackageLicense",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeletePackageLicense",
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      },
      "get": {
        "description": "Fetches the package license specified by the UUID.",
        "operationId": "PackageLicenseService_GetPackageLicense",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageLicense"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPackageLicense",
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-managers": {
      "patch": {
        "description": "Updates a specified package manager.",
        "operationId": "PackageManagerService_UpdatePackageManager",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageManagerServiceUpdatePackageManagerBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageManager"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdatePackageManager",
        "tags": [
          "PackageManagerService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-managers": {
      "get": {
        "description": "Lists all package managers in a given namespace",
        "operationId": "PackageManagerService_ListPackageManagers",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPackageManagersResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPackageManagers",
        "tags": [
          "PackageManagerService"
        ]
      },
      "post": {
        "description": "Creates a package manager in a given namespace.",
        "operationId": "PackageManagerService_CreatePackageManager",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageManagerServiceCreatePackageManagerBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageManager"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreatePackageManager",
        "tags": [
          "PackageManagerService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-managers/{uuid}": {
      "delete": {
        "description": "Deletes a package manager specified by its UUID.",
        "operationId": "PackageManagerService_DeletePackageManager",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeletePackageManager",
        "tags": [
          "PackageManagerService"
        ]
      },
      "get": {
        "description": "Fetches the package manager identified by the UUID.",
        "operationId": "PackageManagerService_GetPackageManager",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageManager"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPackageManager",
        "tags": [
          "PackageManagerService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-versions": {
      "patch": {
        "description": "Updates a specified package version.",
        "operationId": "PackageVersionService_UpdatePackageVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageVersionServiceUpdatePackageVersionBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageVersion"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdatePackageVersion",
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-versions": {
      "get": {
        "description": "Lists all the package versions in a given namespace.",
        "operationId": "PackageVersionService_ListPackageVersions",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPackageVersionsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPackageVersions",
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-versions/{uuid}": {
      "delete": {
        "description": "Deletes a package version specified by the UUID.",
        "operationId": "PackageVersionService_DeletePackageVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeletePackageVersion",
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      },
      "get": {
        "description": "Fetches a package version specified by the UUID.",
        "operationId": "PackageVersionService_GetPackageVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PackageVersion"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPackageVersion",
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      }
    },
    "/v1/plugin-binaries": {
      "get": {
        "description": "Lists all the available plugin binaries.",
        "operationId": "PluginBinaryService_ListPluginBinaries",
        "parameters": [
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPluginBinariesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPluginBinaries",
        "tags": [
          "PluginBinaryService"
        ],
        "x-internal": false
      }
    },
    "/v1/plugin-binaries/{uuid}": {
      "get": {
        "description": "Fetches a plugin binary identified by the UUID.",
        "operationId": "PluginBinaryService_GetPluginBinary",
        "parameters": [
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PluginBinary"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPluginBinary",
        "tags": [
          "PluginBinaryService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/policies": {
      "patch": {
        "description": "Updates the policy.",
        "operationId": "PolicyService_UpdatePolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyServiceUpdatePolicyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Policy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdatePolicy",
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policies": {
      "get": {
        "description": "Lists all policies in a namespace.",
        "operationId": "PolicyService_ListPolicies",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPoliciesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPolicies",
        "tags": [
          "PolicyService"
        ]
      },
      "post": {
        "description": "Creates a policy.",
        "operationId": "PolicyService_CreatePolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyServiceCreatePolicyBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Policy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreatePolicy",
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policies/{uuid}": {
      "delete": {
        "description": "Deletes the policy specified by the UUID.",
        "operationId": "PolicyService_DeletePolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeletePolicy",
        "tags": [
          "PolicyService"
        ]
      },
      "get": {
        "description": "Fetches the policy identified by the UUID.",
        "operationId": "PolicyService_GetPolicy",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Policy"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPolicy",
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policy-templates": {
      "get": {
        "description": "Lists all policy templates in a namespace.",
        "operationId": "PolicyTemplateService_ListPolicyTemplates",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListPolicyTemplatesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListPolicyTemplates",
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policy-templates/{uuid}": {
      "get": {
        "description": "Fetches the policy template identified by the UUID.",
        "operationId": "PolicyTemplateService_GetPolicyTemplate",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PolicyTemplate"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetPolicyTemplate",
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/projects": {
      "patch": {
        "description": "Updates the specified project with the information in the request body.",
        "operationId": "ProjectService_UpdateProject",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectServiceUpdateProjectBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Project"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateProject",
        "tags": [
          "ProjectService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/projects": {
      "get": {
        "description": "Lists all projects in a given namespace.",
        "operationId": "ProjectService_ListProjects",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListProjectsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListProjects",
        "tags": [
          "ProjectService"
        ]
      },
      "post": {
        "description": "Creates a project in a given namespace.",
        "operationId": "ProjectService_CreateProject",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectServiceCreateProjectBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Project"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateProject",
        "tags": [
          "ProjectService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/projects/{uuid}": {
      "delete": {
        "description": "Deletes a project specified by its UUID.",
        "operationId": "ProjectService_DeleteProject",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteProject",
        "tags": [
          "ProjectService"
        ]
      },
      "get": {
        "description": "Fetches comprehensive information about a project identified by a given\nUUID.",
        "operationId": "ProjectService_GetProject",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Project"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetProject",
        "tags": [
          "ProjectService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/provisioning-results": {
      "get": {
        "operationId": "ProvisioningResultService_ListProvisioningResults",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListProvisioningResultsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListProvisioningResults returns a list of provisioning results in a specified namespace.",
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/provisioning-results/{uuid}": {
      "get": {
        "operationId": "ProvisioningResultService_GetProvisioningResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ProvisioningResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetProvisioningResult returns a provisioning result specified by its UUID.",
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/malware": {
      "post": {
        "description": "Queries malware for specific values.\nUse this method to query malware for a specific package version.",
        "operationId": "QueryMalwareService_CreateQueryMalware",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryMalwareServiceCreateQueryMalwareBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1QueryMalware"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateQueryMalware",
        "tags": [
          "QueryMalwareService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries": {
      "post": {
        "description": "Queries metrics for specific values. It returns back a\nlist of metric UUIDs. The caller must call the List or Get metric\nto retrieve the individual metric values.",
        "operationId": "QueryService_CreateQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryServiceCreateQueryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Query"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateQuery",
        "tags": [
          "QueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/similar-packages": {
      "post": {
        "operationId": "QuerySimilarPackagesService_CreateQuerySimilarPackages",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuerySimilarPackagesServiceCreateQuerySimilarPackagesBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1QuerySimilarPackages"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "Queries packages which is lexicographically similar to a given package.",
        "tags": [
          "QuerySimilarPackagesService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/vulnerabilities": {
      "post": {
        "description": "Queries vulnerabilities for specific values.\nUse this method to query vulnerabilities for a specific package version.",
        "operationId": "QueryVulnerabilityService_CreateQueryVulnerability",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryVulnerabilityServiceCreateQueryVulnerabilityBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1QueryVulnerability"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateQueryVulnerability",
        "tags": [
          "QueryVulnerabilityService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/registry-ingestion-checkpoints": {
      "patch": {
        "description": "Updates a registry ingestion checkpoint.",
        "operationId": "RegistryIngestionCheckpointService_UpdateRegistryIngestionCheckpoint",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistryIngestionCheckpointServiceUpdateRegistryIngestionCheckpointBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1RegistryIngestionCheckpoint"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateRegistryIngestionCheckpoint",
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/registry-ingestion-checkpoints": {
      "get": {
        "description": "Lists registry ingestion checkpoints in a namespace.",
        "operationId": "RegistryIngestionCheckpointService_ListRegistryIngestionCheckpoint",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListRegistryIngestionCheckpointResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListRegistryIngestionCheckpoint",
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      },
      "post": {
        "description": "Creates a registry ingestion checkpoint.",
        "operationId": "RegistryIngestionCheckpointService_CreateRegistryIngestionCheckpoint",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistryIngestionCheckpointServiceCreateRegistryIngestionCheckpointBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1RegistryIngestionCheckpoint"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateRegistryIngestionCheckpoint",
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/registry-ingestion-checkpoints/{uuid}": {
      "delete": {
        "description": "Deletes the registry ingestion checkpoint specified by the UUID.",
        "operationId": "RegistryIngestionCheckpointService_DeleteRegistryIngestionCheckpoint",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteRegistryIngestionCheckpoint",
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      },
      "get": {
        "description": "Fetches the registry ingestion checkpoint specified by the UUID.",
        "operationId": "RegistryIngestionCheckpointService_GetRegistryIngestionCheckpoint",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1RegistryIngestionCheckpoint"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetRegistryIngestionCheckpoint",
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repositories": {
      "patch": {
        "description": "Updates a source control repository with the information in the request body.",
        "operationId": "RepositoryService_UpdateRepository",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositoryServiceUpdateRepositoryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Repository"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateRepository",
        "tags": [
          "RepositoryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repositories": {
      "get": {
        "description": "Lists the source control repositories in a given namespace.",
        "operationId": "RepositoryService_ListRepositories",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListRepositoriesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListRepositories",
        "tags": [
          "RepositoryService"
        ]
      },
      "post": {
        "description": "Creates a source control repository.\n\nThe creation of the resource will be an upsert operation if the given spec.external_id and spec.platform_resource\nare already available.",
        "operationId": "RepositoryService_CreateRepository",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositoryServiceCreateRepositoryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Repository"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateRepository",
        "tags": [
          "RepositoryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repositories/{uuid}": {
      "delete": {
        "description": "Deletes a source control repository specified by its UUID.",
        "operationId": "RepositoryService_DeleteRepository",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteRepository",
        "tags": [
          "RepositoryService"
        ]
      },
      "get": {
        "description": "Fetches a source control repository identified by a given UUID.",
        "operationId": "RepositoryService_GetRepository",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Repository"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetRepository",
        "tags": [
          "RepositoryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-versions": {
      "patch": {
        "description": "Updates a specified repository version with the information in the request body.",
        "operationId": "RepositoryVersionService_UpdateRepositoryVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositoryVersionServiceUpdateRepositoryVersionBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1RepositoryVersion"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateRepositoryVersion",
        "tags": [
          "RepositoryVersionService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-versions": {
      "get": {
        "description": "Lists all repository versions in a given namespace.",
        "operationId": "RepositoryVersionService_ListRepositoryVersions",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListRepositoryVersionsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListRepositoryVersions",
        "tags": [
          "RepositoryVersionService"
        ]
      },
      "post": {
        "description": "Creates a repository version or updates a repository version if it already exists.",
        "operationId": "RepositoryVersionService_CreateRepositoryVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositoryVersionServiceCreateRepositoryVersionBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1RepositoryVersion"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateRepositoryVersion",
        "tags": [
          "RepositoryVersionService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-versions/{uuid}": {
      "delete": {
        "description": "Deletes a repository version specified by its UUID.",
        "operationId": "RepositoryVersionService_DeleteRepositoryVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteRepositoryVersion",
        "tags": [
          "RepositoryVersionService"
        ]
      },
      "get": {
        "description": "Fetches a repository version specified by its UUID.",
        "operationId": "RepositoryVersionService_GetRepositoryVersion",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1RepositoryVersion"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetRepositoryVersion",
        "tags": [
          "RepositoryVersionService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/rule-set-imports": {
      "patch": {
        "description": "Updates an imported set of rules.",
        "operationId": "RuleSetImportService_UpdateRuleSetImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleSetImportServiceUpdateRuleSetImportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ImportedRuleSet"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateRuleSetImport",
        "tags": [
          "RuleSetImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/rule-set-imports": {
      "get": {
        "description": "Lists all imported rule set objects in a namespace.",
        "operationId": "RuleSetImportService_ListRuleSetImports",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListRuleSetImportsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListRuleSetImports",
        "tags": [
          "RuleSetImportService"
        ]
      },
      "post": {
        "description": "Imports the given set of rules.",
        "operationId": "RuleSetImportService_CreateRuleSetImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleSetImportServiceCreateRuleSetImportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ImportedRuleSet"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateRuleSetImport",
        "tags": [
          "RuleSetImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/rule-set-imports/{uuid}": {
      "delete": {
        "description": "Deletes an imported rule set object specified by its UUID.",
        "operationId": "RuleSetImportService_DeleteRuleSetImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteRuleSetImport",
        "tags": [
          "RuleSetImportService"
        ]
      },
      "get": {
        "description": "Fetches an imported rule set object specified by its UUID.",
        "operationId": "RuleSetImportService_GetRuleSetImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ImportedRuleSet"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetRuleSetImport",
        "tags": [
          "RuleSetImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-export": {
      "post": {
        "description": "Creates an SBOM export.",
        "operationId": "SBOMExportService_CreateSBOMExport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SBOMExportServiceCreateSBOMExportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ExportedSBOM"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSBOMExport",
        "tags": [
          "SBOMExportService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/sbom-imports": {
      "patch": {
        "description": "Updates an imported SBOM.",
        "operationId": "SBOMImportService_UpdateSBOMImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SBOMImportServiceUpdateSBOMImportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ImportedSBOM"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateSBOMImport",
        "tags": [
          "SBOMImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-imports": {
      "get": {
        "description": "Lists all imported SBOMS in a namespace.",
        "operationId": "SBOMImportService_ListSBOMImports",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListSBOMImportsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListSBOMImports",
        "tags": [
          "SBOMImportService"
        ]
      },
      "post": {
        "description": "Imports the given SBOM.",
        "operationId": "SBOMImportService_CreateSBOMImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SBOMImportServiceCreateSBOMImportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ImportedSBOM"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSBOMImport",
        "tags": [
          "SBOMImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-imports/{uuid}": {
      "delete": {
        "description": "Deletes an imported SBOM specified by its UUID.",
        "operationId": "SBOMImportService_DeleteSBOMImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteSBOMImport",
        "tags": [
          "SBOMImportService"
        ]
      },
      "get": {
        "description": "Fetches an imported SBOM specified by its UUID.",
        "operationId": "SBOMImportService_GetSBOMImport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ImportedSBOM"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetSBOMImport",
        "tags": [
          "SBOMImportService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scm-credentials": {
      "patch": {
        "operationId": "SCMCredentialService_UpdateSCMCredential",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SCMCredentialServiceUpdateSCMCredentialBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SCMCredential"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateSCMCredential updates the SCM credential specified in the request.",
        "tags": [
          "SCMCredentialService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scm-credentials": {
      "get": {
        "operationId": "SCMCredentialService_ListSCMCredentials",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListSCMCredentialsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListSCMCredentials lists all SCM credentials in the given namespace.",
        "tags": [
          "SCMCredentialService"
        ]
      },
      "post": {
        "operationId": "SCMCredentialService_CreateSCMCredential",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SCMCredentialServiceCreateSCMCredentialBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SCMCredential"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSCMCredential creates an SCM credential in the given namespace.",
        "tags": [
          "SCMCredentialService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scm-credentials/{uuid}": {
      "delete": {
        "operationId": "SCMCredentialService_DeleteSCMCredential",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteSCMCredential deletes the SCM credential specified by UUID.",
        "tags": [
          "SCMCredentialService"
        ]
      },
      "get": {
        "operationId": "SCMCredentialService_GetSCMCredential",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SCMCredential"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetSCMCredential fetches the SCM credential identified by UUID.",
        "tags": [
          "SCMCredentialService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/saved-queries": {
      "patch": {
        "description": "Updates the saved queries.",
        "operationId": "SavedQueryService_UpdateSavedQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavedQueryServiceUpdateSavedQueryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SavedQuery"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateSavedQuery",
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/saved-queries": {
      "get": {
        "description": "Lists all saved queries in a namespace.",
        "operationId": "SavedQueryService_ListSavedQueries",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListSavedQueriesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListSavedQueries",
        "tags": [
          "SavedQueryService"
        ]
      },
      "post": {
        "description": "Creates a saved query.",
        "operationId": "SavedQueryService_CreateSavedQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavedQueryServiceCreateSavedQueryBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SavedQuery"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSavedQuery",
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/saved-queries/{uuid}": {
      "delete": {
        "description": "Deletes the saved query specified by the UUID.",
        "operationId": "SavedQueryService_DeleteSavedQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteSavedQuery",
        "tags": [
          "SavedQueryService"
        ]
      },
      "get": {
        "description": "Fetches the saved query identified by the UUID.",
        "operationId": "SavedQueryService_GetSavedQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SavedQuery"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetSavedQuery",
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/saved-queries/{uuid}/evaluate": {
      "get": {
        "description": "Evaluates the saved query, then returns the query and the result.",
        "operationId": "SavedQueryService_EvaluateSavedQuery",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SavedQuery"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "EvaluateSavedQuery",
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-credit-usages": {
      "get": {
        "description": "Lists ScanCreditUsage records visible in the namespace.",
        "operationId": "ScanCreditUsageService_ListScanCreditUsages",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListScanCreditUsagesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListScanCreditUsages",
        "tags": [
          "ScanCreditUsageService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-credit-usages/{uuid}": {
      "get": {
        "description": "Fetches a ScanCreditUsage record specified by its UUID.",
        "operationId": "ScanCreditUsageService_GetScanCreditUsage",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanCreditUsage"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetScanCreditUsage",
        "tags": [
          "ScanCreditUsageService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-log-requests": {
      "post": {
        "description": "Create a scan log request.",
        "operationId": "ScanLogRequestService_CreateScanLogRequest",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanLogRequestServiceCreateScanLogRequestBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanLogRequest"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateScanLogRequest",
        "tags": [
          "ScanLogRequestService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-profiles": {
      "patch": {
        "operationId": "ScanProfileService_UpdateScanProfile",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanProfileServiceUpdateScanProfileBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanProfile"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateScanProfile updates a specified Toolchain profile.",
        "tags": [
          "ScanProfileService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-profiles": {
      "get": {
        "operationId": "ScanProfileService_ListScanProfiles",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListScanProfilesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListScanProfiles returns a list of toolchain profiles in a specified\nnamespace.",
        "tags": [
          "ScanProfileService"
        ]
      },
      "post": {
        "operationId": "ScanProfileService_CreateScanProfile",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanProfileServiceCreateScanProfileBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanProfile"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateScanProfile creates a toolchain profile.",
        "tags": [
          "ScanProfileService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-profiles/{uuid}": {
      "delete": {
        "operationId": "ScanProfileService_DeleteScanProfile",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteScanProfile deletes a toolchain profile specified by its UUID.",
        "tags": [
          "ScanProfileService"
        ]
      },
      "get": {
        "operationId": "ScanProfileService_GetScanProfile",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanProfile"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetScanProfile returns a toolchain profile specified by its UUID.",
        "tags": [
          "ScanProfileService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-results": {
      "patch": {
        "description": "Update a specified scan result.",
        "operationId": "ScanResultService_UpdateScanResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanResultServiceUpdateScanResultBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateScanResult",
        "tags": [
          "ScanResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-results": {
      "get": {
        "description": "List scan results based on the specified list parameters.",
        "operationId": "ScanResultService_ListScanResults",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListScanResultsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListScanResults",
        "tags": [
          "ScanResultService"
        ]
      },
      "post": {
        "description": "Create a scan result.",
        "operationId": "ScanResultService_CreateScanResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanResultServiceCreateScanResultBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateScanResult",
        "tags": [
          "ScanResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-results/{uuid}": {
      "delete": {
        "description": "Delete a specified scan result.",
        "operationId": "ScanResultService_DeleteScanResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteScanResult",
        "tags": [
          "ScanResultService"
        ]
      },
      "get": {
        "description": "Return a specified scan result.",
        "operationId": "ScanResultService_GetScanResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetScanResult",
        "tags": [
          "ScanResultService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-workflow-results": {
      "patch": {
        "description": "Updates the specified scan workflow result with the information in the request body.",
        "operationId": "ScanWorkflowResultService_UpdateScanWorkflowResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanWorkflowResultServiceUpdateScanWorkflowResultBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanWorkflowResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateScanWorkflowResult",
        "tags": [
          "ScanWorkflowResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflow-results": {
      "get": {
        "description": "Lists all scan workflow results in a given namespace.",
        "operationId": "ScanWorkflowResultService_ListScanWorkflowResults",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListScanWorkflowResultsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListScanWorkflowResults",
        "tags": [
          "ScanWorkflowResultService"
        ]
      },
      "post": {
        "description": "Creates a scan workflow result in a given namespace.",
        "operationId": "ScanWorkflowResultService_CreateScanWorkflowResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanWorkflowResultServiceCreateScanWorkflowResultBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanWorkflowResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateScanWorkflowResult",
        "tags": [
          "ScanWorkflowResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflow-results/{uuid}": {
      "delete": {
        "description": "Deletes a scan workflow result specified by its UUID.",
        "operationId": "ScanWorkflowResultService_DeleteScanWorkflowResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteScanWorkflowResult",
        "tags": [
          "ScanWorkflowResultService"
        ]
      },
      "get": {
        "description": "Fetches comprehensive information about a scan workflow result identified by a given UUID.",
        "operationId": "ScanWorkflowResultService_GetScanWorkflowResult",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanWorkflowResult"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetScanWorkflowResult",
        "tags": [
          "ScanWorkflowResultService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-workflows": {
      "patch": {
        "description": "Updates the specified scan workflow with the information in the request\nbody.",
        "operationId": "ScanWorkflowService_UpdateScanWorkflow",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanWorkflowServiceUpdateScanWorkflowBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanWorkflow"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateScanWorkflow",
        "tags": [
          "ScanWorkflowService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflows": {
      "get": {
        "description": "Lists all scan workflows in a given namespace.",
        "operationId": "ScanWorkflowService_ListScanWorkflows",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListScanWorkflowsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListScanWorkflows",
        "tags": [
          "ScanWorkflowService"
        ]
      },
      "post": {
        "description": "Creates a scan workflow in a given namespace.",
        "operationId": "ScanWorkflowService_CreateScanWorkflow",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanWorkflowServiceCreateScanWorkflowBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanWorkflow"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateScanWorkflow",
        "tags": [
          "ScanWorkflowService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflows/{uuid}": {
      "delete": {
        "description": "Deletes a scan workflow specified by its UUID.",
        "operationId": "ScanWorkflowService_DeleteScanWorkflow",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteScanWorkflow",
        "tags": [
          "ScanWorkflowService"
        ]
      },
      "get": {
        "description": "Fetches comprehensive information about a scan workflow identified by a\ngiven UUID.",
        "operationId": "ScanWorkflowService_GetScanWorkflow",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ScanWorkflow"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetScanWorkflow",
        "tags": [
          "ScanWorkflowService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/secret-rules": {
      "patch": {
        "description": "Updates a secret rule.",
        "operationId": "SecretRuleService_UpdateSecretRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecretRuleServiceUpdateSecretRuleBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SecretRule"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateSecretRule",
        "tags": [
          "SecretRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/secret-rules": {
      "get": {
        "description": "Lists all secret rules in a namespace.",
        "operationId": "SecretRuleService_ListSecretRules",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListSecretRulesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListSecretRules",
        "tags": [
          "SecretRuleService"
        ]
      },
      "post": {
        "description": "Creates a secret rule.",
        "operationId": "SecretRuleService_CreateSecretRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecretRuleServiceCreateSecretRuleBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SecretRule"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSecretRule",
        "tags": [
          "SecretRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/secret-rules/{uuid}": {
      "delete": {
        "description": "Deletes the secret rule identified by the UUID.",
        "operationId": "SecretRuleService_DeleteSecretRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteSecretRule",
        "tags": [
          "SecretRuleService"
        ]
      },
      "get": {
        "description": "Fetches the secret rule identified by the UUID.",
        "operationId": "SecretRuleService_GetSecretRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SecretRule"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetSecretRule",
        "tags": [
          "SecretRuleService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/semgrep-rules": {
      "patch": {
        "description": "Updates the Semgrep rule.",
        "operationId": "SemgrepRuleService_UpdateSemgrepRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SemgrepRuleServiceUpdateSemgrepRuleBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SemgrepRule"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateSemgrepRule",
        "tags": [
          "SemgrepRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/semgrep-rules": {
      "get": {
        "description": "Lists all Semgrep rules in the namespace.",
        "operationId": "SemgrepRuleService_ListSemgrepRules",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListSemgrepRulesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListSemgrepRules",
        "tags": [
          "SemgrepRuleService"
        ]
      },
      "post": {
        "description": "Creates a Semgrep rule.",
        "operationId": "SemgrepRuleService_CreateSemgrepRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SemgrepRuleServiceCreateSemgrepRuleBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SemgrepRule"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSemgrepRule",
        "tags": [
          "SemgrepRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/semgrep-rules/{uuid}": {
      "delete": {
        "description": "Deletes the rule specified by the UUID.",
        "operationId": "SemgrepRuleService_DeleteSemgrepRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteSemgrepRule",
        "tags": [
          "SemgrepRuleService"
        ]
      },
      "get": {
        "description": "Fetches a Semgrep rule identified by the UUID.",
        "operationId": "SemgrepRuleService_GetSemgrepRule",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SemgrepRule"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetSemgrepRule",
        "tags": [
          "SemgrepRuleService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/system-config": {
      "patch": {
        "description": "Updates the system configuration.",
        "operationId": "SystemConfigService_UpdateSystemConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemConfigServiceUpdateSystemConfigBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SystemConfig"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateSystemConfig",
        "tags": [
          "SystemConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/system-config": {
      "get": {
        "description": "Returns the system configuration as a list of length 1.",
        "operationId": "SystemConfigService_ListSystemConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListSystemConfigResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListSystemConfig",
        "tags": [
          "SystemConfigService"
        ]
      },
      "post": {
        "description": "Creates a system configuration object.",
        "operationId": "SystemConfigService_CreateSystemConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemConfigServiceCreateSystemConfigBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SystemConfig"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateSystemConfig",
        "tags": [
          "SystemConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/system-config/{uuid}": {
      "delete": {
        "description": "Deletes the system configuration specified by the UUID.",
        "operationId": "SystemConfigService_DeleteSystemConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteSystemConfig",
        "tags": [
          "SystemConfigService"
        ]
      },
      "get": {
        "description": "Fetches the system configuration specified by the UUID.",
        "operationId": "SystemConfigService_GetSystemConfig",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SystemConfig"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetSystemConfig",
        "tags": [
          "SystemConfigService"
        ]
      }
    },
    "/v1/tenants": {
      "get": {
        "description": "Lists all tenants.",
        "operationId": "TenantService_ListTenants",
        "parameters": [
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListTenantsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListTenants",
        "tags": [
          "TenantService"
        ]
      },
      "patch": {
        "description": "Updates a specified tenant.",
        "operationId": "TenantService_UpdateTenant",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1UpdateTenantRequest"
              }
            }
          },
          "description": "Request to update a tenant.",
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Tenant"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateTenant",
        "tags": [
          "TenantService"
        ]
      },
      "post": {
        "description": "Creates a tenant.",
        "operationId": "TenantService_CreateTenant",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Tenant"
              }
            }
          },
          "description": "Tenant represents a tenant in the system.\n\nMostly includes tenant configuration parameters.",
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Tenant"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateTenant",
        "tags": [
          "TenantService"
        ]
      }
    },
    "/v1/tenants/{uuid}": {
      "delete": {
        "description": "Deletes a tenant specified by its UUID.",
        "operationId": "TenantService_DeleteTenant",
        "parameters": [
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteTenant",
        "tags": [
          "TenantService"
        ]
      },
      "get": {
        "description": "Fetches a tenant specified by its UUID.",
        "operationId": "TenantService_GetTenant",
        "parameters": [
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Tenant"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetTenant",
        "tags": [
          "TenantService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vex-export": {
      "post": {
        "operationId": "VEXExportService_CreateVEXExport",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VEXExportServiceCreateVEXExportBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ExportedVEX"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "VEXExportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vector-stores": {
      "get": {
        "description": "Lists all vector stores visible in a namespace.",
        "operationId": "VectorStoreService_ListVectorStores",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListVectorStoresResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListVectorStores",
        "tags": [
          "VectorStoreService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vector-stores/{uuid}": {
      "get": {
        "description": "Fetches an VectorStore specified by its UUID.",
        "operationId": "VectorStoreService_GetVectorStore",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1VectorStore"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetVectorStore",
        "tags": [
          "VectorStoreService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/version-upgrades": {
      "patch": {
        "description": "Updates a version upgrade.",
        "operationId": "VersionUpgradeService_UpdateVersionUpgrade",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "object.tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VersionUpgradeServiceUpdateVersionUpgradeBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1VersionUpgrade"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "UpdateVersionUpgrade",
        "tags": [
          "VersionUpgradeService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/version-upgrades": {
      "get": {
        "description": "Lists all version upgrades in the namespace.",
        "operationId": "VersionUpgradeService_ListVersionUpgrades",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListVersionUpgradesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListVersionUpgrades",
        "tags": [
          "VersionUpgradeService"
        ]
      },
      "post": {
        "description": "Creates a version upgrade.\nThe creation of the resource will be an upsert if the given spec.external_id and spec.platform_resource were already created.",
        "operationId": "VersionUpgradeService_CreateVersionUpgrade",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VersionUpgradeServiceCreateVersionUpgradeBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1VersionUpgrade"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "CreateVersionUpgrade",
        "tags": [
          "VersionUpgradeService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/version-upgrades/{uuid}": {
      "delete": {
        "description": "Deletes a version upgrade specified by the UUID.",
        "operationId": "VersionUpgradeService_DeleteVersionUpgrade",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Action to be executed with delete request.",
            "in": "query",
            "name": "delete_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "name": "delete_parameters.force",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "DeleteVersionUpgrade",
        "tags": [
          "VersionUpgradeService"
        ]
      },
      "get": {
        "description": "Fetches a version upgrade identified by the UUID.",
        "operationId": "VersionUpgradeService_GetVersionUpgrade",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1VersionUpgrade"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetVersionUpgrade",
        "tags": [
          "VersionUpgradeService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vulnerabilities": {
      "get": {
        "description": "List all vulnerabilities in the namespace.",
        "operationId": "VulnerabilityService_ListVulnerabilities",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "String of conditions to filter resources by.\nFilters may include any attribute along with the following operators:\n\"==\", \"!=\", \"\u003e\", \"\u003e=\", \"\u003c\", \"\u003c=\", \"Contains\", \"In\", \"Matches\", and\n\"Exists\". The logical operators \"And\" and \"Or\" are also supported.\nExpressions may be combined and grouped with parentheses.\n\nExamples:\n\"spec.value == 5\",\n\"spec.value in [\"a\", \"b\", \"c\"]\",\n\"(meta.name == \"xyz\" and \"spec.value in [\"a\",\"b\"]) or (spec.value ==\n\"c\")\".",
            "in": "query",
            "name": "list_parameters.filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "name": "list_parameters.page_token",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "name": "list_parameters.page_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "name": "list_parameters.action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "list_parameters.mask",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "name": "list_parameters.traverse",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "name": "list_parameters.sort.path",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "name": "list_parameters.sort.order",
            "schema": {
              "default": "SORT_ENTRY_ORDER_UNSPECIFIED",
              "enum": [
                "SORT_ENTRY_ORDER_UNSPECIFIED",
                "SORT_ENTRY_ORDER_ASC",
                "SORT_ENTRY_ORDER_DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return the number of objects matching the given list parameters.\nIf count is set to true, the response is a CountResponse.\nCan be used together with filter and traverse.",
            "in": "query",
            "name": "list_parameters.count",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Group the objects based on this field.\nIf there are multiple fields then the objects are grouped\nbased on the uniqueness of all fields.\nSupports composite paths.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "name": "list_parameters.group.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_count_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "name": "list_parameters.group.unique_value_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "name": "list_parameters.ci_run_uuid",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Page ID to retrieve.",
            "in": "query",
            "name": "list_parameters.page_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_paths",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "name": "list_parameters.group_by_time.interval",
            "schema": {
              "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
              "enum": [
                "GROUP_BY_TIME_INTERVAL_UNSPECIFIED",
                "GROUP_BY_TIME_INTERVAL_YEAR",
                "GROUP_BY_TIME_INTERVAL_QUARTER",
                "GROUP_BY_TIME_INTERVAL_MONTH",
                "GROUP_BY_TIME_INTERVAL_WEEK",
                "GROUP_BY_TIME_INTERVAL_DAY",
                "GROUP_BY_TIME_INTERVAL_HOUR",
                "GROUP_BY_TIME_INTERVAL_MINUTE",
                "GROUP_BY_TIME_INTERVAL_SECOND"
              ],
              "type": "string"
            }
          },
          {
            "description": "Size of the time interval to group the objects by,\nfor example, to group objects by 2-week intervals, set interval\nto GROUP_BY_TIME_INTERVAL_WEEK and group_size to 2.",
            "in": "query",
            "name": "list_parameters.group_by_time.group_size",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "name": "list_parameters.group_by_time.start_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "name": "list_parameters.group_by_time.end_time",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The mode determines how the matching objects are counted\nin the produced time-series. Values allowed are:\ncount (default) : is the number of items matching in every interval.\nsum: is the total number of items matching since the beginning of the\naggregation time.",
            "in": "query",
            "name": "list_parameters.group_by_time.mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggregation_field is a field on the matched objects that we want to\nperform some operation in each interval (example : min, max, avg)",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "name": "list_parameters.group_by_time.aggregation_operator",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If true, the results will not be paginated and\nonly the first page will be returned. The order\nof the results is not guaranteed.",
            "in": "query",
            "name": "list_parameters.disable_pagination",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1ListVulnerabilitiesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "ListVulnerabilities",
        "tags": [
          "VulnerabilityService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vulnerabilities/{uuid}": {
      "get": {
        "description": "Fetches a vulnerability identified by the UUID.",
        "operationId": "VulnerabilityService_GetVulnerability",
        "parameters": [
          {
            "description": "Namespaces are a way to organize organizational units into virtual\ngroupings of resources. Namespaces must be a fully qualified name,\nfor example, the child namespace of namespace \"endor.prod\" called \"app\"\nis called \"endor.prod.app\".",
            "in": "path",
            "name": "tenant_meta.namespace",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-endor-name": "Namespace"
          },
          {
            "description": "The UUID of the requested resource.",
            "in": "path",
            "name": "uuid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "name": "get_parameters.mask",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1Vuln"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "summary": "GetVulnerability",
        "tags": [
          "VulnerabilityService"
        ],
        "x-internal": false
      }
    }
  },
  "servers": [
    {
      "description": "US (default)",
      "url": "https://api.endorlabs.com"
    },
    {
      "description": "EU (data residency)",
      "url": "https://api.eu.endorlabs.com"
    }
  ],
  "tags": [
    {
      "name": "AIProviderKeyService"
    },
    {
      "name": "AISastCustomerContextService"
    },
    {
      "name": "APIKeyService"
    },
    {
      "name": "APIKeyValidatorService"
    },
    {
      "name": "AgentTelemetryService"
    },
    {
      "name": "ArtifactSignatureService"
    },
    {
      "name": "AsyncJobService"
    },
    {
      "name": "AuditLogService"
    },
    {
      "name": "AuthenticationLogService"
    },
    {
      "name": "AuthenticationService"
    },
    {
      "name": "AuthorizationPolicyService"
    },
    {
      "name": "BatchFileSegmentsService"
    },
    {
      "name": "BatchNotificationService"
    },
    {
      "name": "CallGraphDataService"
    },
    {
      "name": "CodeOwnersService"
    },
    {
      "name": "DependencyMetadataService"
    },
    {
      "name": "EndorIgnoreEntryService"
    },
    {
      "name": "ExporterService"
    },
    {
      "name": "FindingLogService"
    },
    {
      "name": "FindingService"
    },
    {
      "name": "HuggingFaceModelService"
    },
    {
      "name": "HuggingFaceOrganizationService"
    },
    {
      "name": "IPAddressPolicyService"
    },
    {
      "name": "IdentityProviderService"
    },
    {
      "name": "InstallationService"
    },
    {
      "name": "InvitationService"
    },
    {
      "name": "LicenseDependencyService"
    },
    {
      "name": "LicenseNoticesReportService"
    },
    {
      "name": "LicenseSummaryService"
    },
    {
      "name": "LinterResultService"
    },
    {
      "name": "MalwareExposureQueryService"
    },
    {
      "name": "MalwareExposureService"
    },
    {
      "name": "MalwareService"
    },
    {
      "name": "MetricService"
    },
    {
      "name": "NamespaceService"
    },
    {
      "name": "NotificationService"
    },
    {
      "name": "NotificationTargetService"
    },
    {
      "name": "OnPremSchedulerService"
    },
    {
      "name": "PRCommentConfigService"
    },
    {
      "name": "PackageFirewallLogService"
    },
    {
      "name": "PackageLicenseOverrideService"
    },
    {
      "name": "PackageLicenseQueryService"
    },
    {
      "name": "PackageLicenseService"
    },
    {
      "name": "PackageManagerService"
    },
    {
      "name": "PackageVersionService"
    },
    {
      "name": "PluginBinaryService"
    },
    {
      "name": "PolicyService"
    },
    {
      "name": "PolicyTemplateService"
    },
    {
      "name": "ProjectService"
    },
    {
      "name": "ProvisioningResultService"
    },
    {
      "name": "QueryMalwareService"
    },
    {
      "name": "QueryService"
    },
    {
      "name": "QuerySimilarPackagesService"
    },
    {
      "name": "QueryVulnerabilityService"
    },
    {
      "name": "RegistryIngestionCheckpointService"
    },
    {
      "name": "RepositoryService"
    },
    {
      "name": "RepositoryVersionService"
    },
    {
      "name": "RuleSetImportService"
    },
    {
      "name": "SBOMExportService"
    },
    {
      "name": "SBOMImportService"
    },
    {
      "name": "SCMCredentialService"
    },
    {
      "name": "SavedQueryService"
    },
    {
      "name": "ScanCreditUsageService"
    },
    {
      "name": "ScanLogRequestService"
    },
    {
      "name": "ScanProfileService"
    },
    {
      "name": "ScanResultService"
    },
    {
      "name": "ScanWorkflowResultService"
    },
    {
      "name": "ScanWorkflowService"
    },
    {
      "name": "SecretRuleService"
    },
    {
      "name": "SemgrepRuleService"
    },
    {
      "name": "SystemConfigService"
    },
    {
      "name": "TenantService"
    },
    {
      "name": "VEXExportService"
    },
    {
      "name": "VectorStoreService"
    },
    {
      "name": "VersionUpgradeService"
    },
    {
      "name": "VulnerabilityService"
    }
  ]
}